Hình ảnh nhị phân có thể chứa nhiều yếu tố không hoàn hảo. Đặc biệt, các vùng nhị phân được tạo ra bằng các phép phân ngưỡng đơn giản và rất dễ xuất hiện nhiều nhiễu và cấu trúc không mong muốn.
Mình sẽ giới thiệu đến các bạn một kỹ thuật gọi là Xử lý ảnh hình thái học (Morphological Image Processing) giúp loại bỏ nhiễu, làm đẹp cấu trúc và hình thức của ảnh nhị phân. Các phép toán của kỹ thuật này có thể áp dụng được trên ảnh xám.
1. Khái niệm cơ bản
Morphological Image Processing là tập hợp các phép toán phi tuyến tính (non-linear) tác động đến hình dạng hoặc hình thái của các điểm nhị phân trong ảnh. Dựa trên các phép toán AND OR XOR NOT để biến đổi các điểm nhị phân.
Morphological Operator sẽ sử dụng một cấu trúc nhỏ quét qua và áp dụng toàn bộ ảnh được gọi là Structuring Element (SE). SE sẽ quét qua toàn bộ vị trí trong hình ảnh và so sánh với các pixel lân cận nằm trong vùng sẽ tương ứng.
Structuring Element là một ảnh nhị phân nhỏ. Tức là một ma trận nhỏ gồm các pixel mang giá trị 0 và 1:
- Kích thước của ma trận xác định kích thước của SE.
- Pixel có giá trị 0 được bỏ qua trong quá trình tính toán.
- Luôn có một pixel làm mốc trong ma trận SE.
Structuring Element hoạt động giống như ma trận tích chập (convolution kernel) trong lọc ảnh tuyến tính (linear image filtering). SE sẽ dịch chuyển toàn bộ ảnh với điểm mốc.
2. Phép dãn (Dilation) và phép co (Erosion)
Phép dãn của ảnh A bởi phần tử cấu trúc B cho ra ảnh G. Mỗi vị trí cấu trúc B quét qua được sẽ chọn giá trị lớn nhất và trả về điểm mốc tương ứng trên ảnh G.
Minh họa về cách hoạt động
Ví dụ có một ảnh nhị phân với các dòng chữ bị đứt nét. Sử dụng phép dãn với cấu trúc dạng chữ thập sẽ nối liền các điểm đứt nét và các điểm đó sẽ có hơi hướng giống với cấu trúc chữ thập.
Ví dụ về phép dãn (dilation)
Phép co của ảnh A bởi phần tử cấu trúc B cho ra ảnh G. Mỗi vị trí cấu trúc B quét qua được sẽ chọn giá trị nhỏ nhất và trả về điểm mốc tương ứng trên ảnh G.
Minh họa về cách hoạt động
Với thứ tự áp dụng phép dãn và co như thế nào để có thể lọc được các nhiễu như các hình ảnh dưới đây?
3. Opening và Closing
Opening là thực hiện phép co rồi bắt đầu thực hiện phép giãn với một cấu trúc. Giúp làm mượt các đường viền, phá vỡ các khe nhỏ, loại bỏ các đối tượng nhỏ, làm mượt các đỉnh lồi.
Closing là thực hiện phép giãn rồi bắt đầu thực hiện phép co với một cấu trúc. Giúp làm mượt các đường viền, loại bỏ các lỗ nhỏ, làm mượt các đỉnh khe hẹp.
Có một ảnh nhị phân vân tay bao gồm nhiễu và nhiều vân bị đứt nét. Sử dụng opening và closing lần lượt để loại bỏ nhiễu và nối liền các đường vân tay.
Một ứng dụng khác về tách biên.
4. Hit-or-Miss
Phép toán cho phép trả về kết quả chứa thông tin vị trí có cấu trúc giống với ma trận cấu trúc (Structuring Element). Với phép toán này cần cặp SE {B1, B2} lần lượt thực hiện theo công thức sau:
Trong đó B (cặp SE {B1, B2}) sẽ mang giá trị -1 0 1. Kết quả ở mỗi vị trí SE quét qua sẽ bằng 1 nếu thoả điều kiện ở những vị trí -1 phải bằng 0, vị trí 1 phải bằng 1 và vị trí 0 không bắt buộc. Ví dụ các tính được thể hiện ở hình ảnh sau:
Vậy là mình đã giới thiệu đến các bạn các nội dung lý thuyết tổng quan về Xử lý ảnh hình thái học (Morphological Image Processing): các khái niệm cơ bản (Morphological Image Processing, Morphological Operator, Structuring element); phép dãn và phép co; opening và closing; hit-or-miss.
Chúc các bạn thành công!
Cố vấn tại Cộng đồng Kỹ thuật TAPIT
Phạm Công Anh Huy
Tài liệu tham khảo
[1] https://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures/ImageProcessing-html/topic4.htm
[2] https://en.wikipedia.org/wiki/Hit-or-miss_transform
[3] https://en.wikipedia.org/wiki/Mathematical_morphology