Có máy loại ảnh trong xử lý ảnh

Trong bài viết này, tác giả sẽ cung cấp những kiến thức cần thiết cho những người có nhu cầu tìm hiểu về Xử lý ảnh số (viết tắt XLA) hoặc những người tò mò muốn biết Xử lí ảnh số gồm những bài toán nào, làm gì. Bài viết được tham khảo và tổng kết từ series OpenCV-Python Tutorials của OpenCV. Ngôn ngữ sử dụng chính trong bài viết là Python

  • OpenCV là gì?
  • Học những gì?
    • Không gian màu
    • Xử lí độ sáng và tương phản
    • Histogram
    • Binary Image - Kỹ thuật xử lý ảnh nhị phân
    • Geometric Transform - Kỹ thuật biến đổi hình học
    • Filter - Lọc ảnh
    • Biến đổi Hough, kỹ thuật phát hiện biên
  • Học như thế nào?

OpenCV là gì?

OpenCV là viết tắt của Open Computer Vision, như tên gọi, nó là một thư viện mã nguồn mở dành cho Computer Vision - Thị giác máy tính. OpenCV được xây dựng bằng C/C++ và tích hợp trực tiếp với package Numpy nên việc xử lý có tốc độ rất nhanh, đáp ứng những ứng dụng yêu cầu thời gian thực. Ngoài ra, OpenCV cũng có thể chạy trên những nền tảng khác nhau như Linux, Window, Mac cũng như những ngôn ngữ khác nhau như Java, Python, C++, …

Học những gì?

Dưới đây là một số những kiến thức mà bản thân tác giả cho là cần thiết khi tiếp cận với mảng Xử lý ảnh, chỉ mang tính chất tham khảo.

Không gian màu

Để bắt đầu với XLA thì điều đầu tiên cần tìm hiểu đó chính là Không gian màu, có lẽ bạn đọc đã quá thân thuộc với từ RGB - Red, Green, Blue ở bậc trung học, đây là ba màu cơ bản được định nghĩa cho hệ màu RGB. Ngoài ra, còn một số hệ màu khác, phục vụ cho những mục đích khác nhau như HSV, HSL, Gray, … Bạn đọc cần nắm rõ các biểu diễn ở mỗi hệ màu và công thức chuyển đổi giữa các hệ màu đó.

Có máy loại ảnh trong xử lý ảnh

Bạn đọc có thể tham khảo thêm Cách thức chuyển đổi giữa các hệ màu

Xử lí độ sáng và tương phản

Bức ảnh thu được có thể có độ sáng quá thấp, hoặc quá cao đặc biệt trong môi trường ngoài trời thì có thể sẽ có những vùng có độ sáng khác nhau. Vì vậy, kiến thức về độ sáng và tương phản cũng vô cùng cần thiết.

Có máy loại ảnh trong xử lý ảnh

Histogram

Histogram là khái niệm thể hiện tần suất xuất hiện của các giá trị của một pixel trong bức ảnh.

Có máy loại ảnh trong xử lý ảnh

Có máy loại ảnh trong xử lý ảnh

Việc cân bằng Histogram (Histogram equalization) là một bước tiền xử lý ảnh đầu vào, cải thiện chất lượng bước ảnh. Bức ảnh sau khi được cân bằng histogram:

Có máy loại ảnh trong xử lý ảnh

Binary Image - Kỹ thuật xử lý ảnh nhị phân

Việc xử lý bức ảnh trở thành ảnh nhị phân thường được dùng trong những bài toán như nhận diện vật thể (Object Detection) hay phân chia (Segmentation). Việc này giúp đánh bật những vật thể mong muốn ra khỏi nền của bức ảnh, giúp xác định vị trí của vật thể mong muốn. Tùy vào mục địch hoặc đặc tính của bức ảnh mà ta có những phương pháp nhị phân khác nhau như:

  • Phân tích ngưỡng cố định: Simple Threshold
  • Phân tích ngưỡng động: Adaptive Threshold, Otsu Threshold.

Có máy loại ảnh trong xử lý ảnh

Bạn đọc có thể tham khảo thêm Image Thresholding Song hành cùng Thresholding là một số kỹ thuật xử lí ảnh Binary gọi là Morphological Transform. Bao gồm những phép đóng, mở ảnh, hỗ trợ cho việc tìm đường bao về sau:

Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ảnh

Tham khảo Morphological Transformations

Geometric Transform - Kỹ thuật biến đổi hình học

Ngoài vấn đề về độ sáng, tương phản, thì ta còn gặp những trường hợp bức ảnh bị biến dạng, nằm nghiêng, kích cỡ lớn. Dưới đây là một số những kỹ thuật thường sử dụng khi gặp những trường hợp này:

  • Scaling - Biến đổi về kích thước
  • Rotating - Xoay ảnh
  • Translation - Dịch chuyển bức ảnh theo các hướng khác nhau
  • Perspective Transform, Affine Transform - Biến đổi bức ảnh theo các điểm mốc

Translation

Có máy loại ảnh trong xử lý ảnh

Rotation

Có máy loại ảnh trong xử lý ảnh

Affine

Có máy loại ảnh trong xử lý ảnh

Perspective

Có máy loại ảnh trong xử lý ảnh

Tham khảo thêm Geometric Transformations of Images

Filter - Lọc ảnh

Có máy loại ảnh trong xử lý ảnh

Việc sử dụng lọc ảnh có thể giúp ta loại bỏ những loại nhiễu trong bức ảnh, tăng cường chất lượng cho bức ảnh hoặc biến đổi bức ảnh theo hướng ta mong muốn. Đặc thù của lọc ảnh là sử dụng những filter/kernel lên bức ảnh dưới dạng các 2D Convolution. Một số filter đặc trưng có thể kể đến như Gaussian Blurring, Median Blurring, …

Blur

Có máy loại ảnh trong xử lý ảnh

Median Blur

Có máy loại ảnh trong xử lý ảnh

Sobel Filter

Có máy loại ảnh trong xử lý ảnh

Laplace Filter

Có máy loại ảnh trong xử lý ảnh

Tham khảo Smoothing Images

Biến đổi Hough, kỹ thuật phát hiện biên

Việc sử dụng biến đổi Hough có thể giúp ta phát hiện được những đường thẳng, đường tròn. Ngoài ra còn có một số kĩ thuật giúp phát hiện các đường biên, nét cạnh của vật thể như Canny.

Edge Detection

Có máy loại ảnh trong xử lý ảnh

Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ảnh

Hough Circle and Line

Có máy loại ảnh trong xử lý ảnh

Tham khảo Canny Edge Detection

Ngoài ra, một số phương pháp phát hiện Contour cũng được sử dụng để phát hiện vật thể dựa trên những biên ảnh Contours in OpenCV

Học như thế nào?

Trong quá trình học lý thuyết, chúng ta cần những bài tập thực hành để vận dụng những kiến thức đã học. Bạn đọc nên bắt đầu từ những bài toán có thể vận dụng một hoặc vài kỹ thuật đã học như Phát hiện vật thể bằng Threshold, nhận dạng biển số và phân chia chữ số của biển, phân chia kí tự trên một dòng chữ, vv…vv

Segment Number

Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ảnh

Card Detect

Có máy loại ảnh trong xử lý ảnh
Có máy loại ảnh trong xử lý ả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 ()
  • OpenCV Tutorials