Trong bài viết này, chúng ta sẽ khám phá về Xử Lý Ảnh Số (XLA) và những kiến thức cần thiết để hiểu về nó. Bài viết này được lấy cảm hứng từ series OpenCV-Python Tutorials của OpenCV, với sự sử dụng chính ngôn ngữ lập trình Python.
OpenCV là gì?
OpenCV là viết tắt của Open Computer Vision, là một thư viện mã nguồn mở dành cho Computer Vision - Thị giác máy tính. Được xây dựng bằng C/C++ và tích hợp trực tiếp với package Numpy, OpenCV cho phép xử lý ảnh nhanh chóng và đáp ứng những ứng dụng yêu cầu thời gian thực. Ngoài ra, OpenCV còn có thể chạy trên nhiều nền tảng khác nhau và hỗ trợ các ngôn ngữ lập trình như Java, Python, C++,...
Học những gì?
Dưới đây là những kiến thức cơ bản để bạn tiếp cận Xử Lý Ảnh, nhưng hãy nhớ rằng đây chỉ là những gợi ý và có tính chất tham khảo.
Không gian màu
Không gian màu là khái niệm đầu tiên chúng ta cần tìm hiểu khi bắt đầu XLA. Bạn có thể quen thuộc với không gian màu RGB - đỏ, xanh lá cây và xanh dương từ trung học. Đây là ba màu cơ bản được sử dụng trong không gian màu RGB. Ngoài ra, còn nhiều không gian màu khác nhau phục vụ cho những mục đích khác nhau như HSV, HSL, Gray,... Bạn nên nắm vững các biểu diễn của từng không gian màu và công thức chuyển đổi giữa chúng.
Xử lí độ sáng và tương phản
Độ sáng và tương phản là hai yếu tố quan trọng khi xử lý ảnh. Bức ảnh có thể có độ sáng quá thấp hoặc cao, đặc biệt là trong môi trường ngoài trời, vì vậy kiến thức về độ sáng và tương phản là rất cần thiết.
Histogram
Histogram là khái niệm thể hiện tần suất xuất hiện của các giá trị pixel trong bức ảnh. Cân bằng histogram là một bước tiền xử lý ảnh để cải thiện chất lượng. Dưới đây là ví dụ về việc cân bằng histogram:
Ảnh nhị phân
Chuyển đổi bức ảnh thành ảnh nhị phân thường được sử dụng trong những bài toán như nhận dạng vật thể hay phân chia. Điều này giúp xác định vị trí và đánh bật các vật thể trong ảnh. Có các phương pháp nhị phân khác nhau như Phân tích ngưỡng cố định và Phân tích ngưỡng động.
Biến đổi hình học
Ngoài vấn đề về độ sáng và tương phản, chúng ta còn gặp những trường hợp bức ảnh bị biến dạng, nghiêng, kích cỡ lớn. Dưới đây là một số kỹ thuật thường sử dụng để xử lý những trường hợp này:
- Scaling - Biến đổi kích thước
- Rotating - Xoay ảnh
- Translation - Dịch chuyển ảnh
- Perspective Transform, Affine Transform - Biến đổi ảnh theo các điểm mốc
Lọc ảnh
Lọc ảnh giúp loại bỏ nhiễu và tăng cường chất lượng ảnh hoặc biến đổi ảnh theo mong muốn. Có nhiều loại filter như Gaussian Blurring, Median Blurring,...
Phát hiện biên
Sử dụng biến đổi Hough để phát hiện đường thẳng và đường tròn. Có các kỹ thuật khác như Canny để phát hiện cạnh.
Học như thế nào?
Trong quá trình học, thực hành là rất quan trọng để vận dụng kiến thức đã học. Bạn nên bắt đầu với những bài toán đơn giản như phát hiện vật thể bằng Threshold, nhận dạng biển số và phân chia chữ số, phân chia kí tự trong ảnh.
Bài viết được tham khảo và sử dụng tài liệu từ:
- Ứng dụng xử lý ảnh trong thực tế với thư viện OpenCV - Nguyễn Văn Long ([email protected])
- OpenCV Tutorials