MC&TT Co., Ltd

Tổng hợp các kỹ thuật lọc ảnh (Image Filters) trong Python

Chia sẻ:

Kỹ thuật lọc hình ảnh (image filters) có thể được sử dụng để giảm lượng nhiễu và tăng cường các cạnh trong ảnh. Có hai loại nhiễu thường xuất hiện phổ biến là speckle noise và salt-and-pepper noise. Speckle noise là nhiễu xuất hiện trong quá trình thu nhận hình ảnh, còn salt-and-pepper noise (các pixel trắng và đen xuất hiện rải rác) là do nhiễu đột ngột trong tín hiệu hình ảnh. Tăng cường các cạnh có thể giúp mô hình phát hiện tốt hơn các đặc trưng trong hình ảnh đó.

Trong Python, bạn có thể vận dụng những kỹ thuật lọc ảnh nào? Hãy cùng chúng tôi đến cuối cùng để tìm hiểu nhé!

1. Mean filter

Mean filter được sử dụng để làm mờ hình ảnh nhằm loại bỏ nhiễu. Nó liên quan đến việc xác định giá trị trung bình của các giá trị pixel trong cửa sổ n x n. Cường độ pixel của phần tử trung tâm sau đó được thay thế bằng giá trị trung bình. Điều này giúp loại bỏ một số nhiễu và làm mịn các cạnh của hình ảnh. Chức năng làm mờ từ thư viện OpenCV có thể được sử dụng để hỗ trợ mean filter cho hình ảnh.

Khi xử lý ảnh màu, trước tiên cần chuyển đổi từ RGB sang HSV, vì các kích thước của RGB phụ thuộc vào nhau, trong khi ba chiều trong HSV độc lập với nhau (điều này cho phép chúng ta áp dụng các bộ lọc cho từng chiều trong ba chiều riêng biệt)

Kết quả áp dụng mean filter cho ảnh màu. Trong khi speckle noise đã biến mất thì một số tạo tác khác, không có trong ảnh gốc, xuất hiện.

Kết quả áp dụng mean filter cho ảnh thang độ xám

2. Gaussian Filter

Gaussian Filter tương tự như mean filter, tuy nhiên nó liên quan đến mức trung bình có trọng số của các pixel xung quanh và có tham số sigma. Mặc dù cũng làm mờ các cạnh của hình ảnh (giống như mean filter), nhưng Gaussian Filter vượt trội hơn mean filter bởi khả năng bảo toàn các cạnh. Chức năng ‘GaussianBlur’ từ thư viện OpenCV có thể được sử dụng để triển khai Gaussian filter. Hàm này cho phép bạn thay đổi kích thước của kernel. Bạn cũng có thể chỉ định riêng độ lệch chuẩn cho chiều x và y. Nếu chỉ có một giá trị sigma được chỉ định thì nó được coi là giá trị sigma cho cả hai chiều x và y.

Kết quả áp dụng Gaussian Filter cho ảnh màu. Gaussian Filter thực hiện việc giữ lại các cạnh của hình ảnh tốt hơn khi so sánh với mean filter, tuy nhiên, nó cũng tạo ra các tạo tác trên ảnh màu.

Kết quả áp dụng Gaussian filter cho ảnh thang độ xám. Gaussian Filter 9 x 9 loại bỏ một số nhiễu và không tạo ra các tạo tác khi áp dụng cho ảnh thang độ xám, đồng thời nó giữ lại nhiều chi tiết hơn mean filter 9 x 9

3. Median Filter

Median Filter tính toán trung bình của cường độ pixel bao quanh pixel trung tâm trong kernel n x n. Sau đó, trung vị sẽ thay thế cường độ pixel của pixel trung tâm. Median Filter thực hiện việc loại bỏ salt-and-pepper noise tốt hơn so với mean filter và Gaussian filter. Nó giữ lại các cạnh của hình ảnh nhưng không xử lý speckle noise. Chức năng ‘medianBlur’ từ thư viện OpenCV có thể được sử dụng để triển khai median filter.

Kết quả áp dụng median filter cho ảnh màu. Median filter có thể giữ lại các cạnh của hình ảnh trong khi loại bỏ salt-and-pepper noise. Không giống như mean filter và Gaussian filter, median filter không tạo ra các thành phần giả trên ảnh màu.

Kết quả áp dụng median filter cho ảnh thang độ xám. Median filter 9 x 9 có thể loại bỏ một số salt-and-pepper noise, trong khi vẫn giữ lại các cạnh của hình ảnh.

4. Conservative Filter

Conservative Filter được sử dụng để loại bỏ salt and pepper noise. Ở đây, cần xác định cường độ tối thiểu và cường độ tối đa trong vùng lân cận của pixel. Nếu cường độ của pixel trung tâm lớn hơn giá trị tối đa thì nó được thay thế bằng giá trị tối đa. Nếu nó nhỏ hơn giá trị tối thiểu thì nó được thay thế bằng giá trị tối thiểu. Conservative Filter bảo tồn các cạnh nhưng không loại bỏ speckle noise.

Kết quả áp dụng Conservative Filter cho ảnh thang độ xám. Conservative Filter có thể loại bỏ một số salt-and-pepper noise nhưng số lượng không nhiều bằng mean filter (mặc dù nó giữ được nhiều chi tiết hơn).

5. Laplacian Filter

Laplacian của một hình ảnh làm nổi bật các khu vực có cường độ thay đổi mạnh và do đó có thể được sử dụng để phát hiện cạnh. Nếu chúng ta để I(x,y) đại diện cho cường độ của ảnh thì Laplacian của ảnh được cho bởi công thức sau:

Có thể xác định xấp xỉ rời rạc của Laplacian tại một pixel cụ thể bằng cách lấy giá trị trung bình có trọng số của cường độ pixel trong một vùng lân cận nhỏ của pixel. Hình sau cho thấy hai kernel đại diện cho hai cách khác nhau để tính xấp xỉ Laplacian.

Vì Laplacian filter phát hiện các cạnh của hình ảnh nên nó có thể được sử dụng cùng với Gaussian filter để loại bỏ speckle noise trước tiên và sau đó làm nổi bật các cạnh của hình ảnh. Phương pháp này được gọi là lọc Lapalcian của Gaussian. Chức năng ‘Laplacian’ từ thư viện OpenCV có thể được sử dụng để tìm Laplacian của một hình ảnh.

Kết quả của việc thêm Laplacian vào ảnh gốc. Phương pháp này mặc dù có thể cải thiện các cạnh, nhưng cũng làm tăng cường một số nhiễu.

6. Unsharp Filter

Unsharp filter có thể được sử dụng để cải thiện các cạnh của hình ảnh. Hàm ImageFilter.Unsharpmask từ thư viện PIL áp dụng Unsharp filter cho hình ảnh (hình ảnh trước tiên cần được chuyển đổi thành đối tượng Hình ảnh PIL). Hàm ImageFilter.Unsharpmask có ba tham số. Tham số ‘radius’ chỉ định có bao nhiêu pixel lân cận xung quanh các cạnh bị ảnh hưởng. Tham số ‘percentage’ chỉ định mức độ tối hoặc sáng của các cạnh. Tham số thứ ba “threshold” xác định khoảng cách giữa các giá trị âm liền kề.

Kết quả áp dụng Unsharp filter. Unsharp filter giúp tăng cường các cạnh của hình ảnh, song cũng vô tình làm các nhiễu hiện rõ hơn

Kết luận

Việc áp dụng lọc ảnh trong giai đoạn tiền xử lý dữ liệu là một trong những phương pháp cải thiện độ chính xác của các mô hình học máy. Dữ liệu ảnh được xử lý trước sẽ giúp một mô hình cơ bản có thể đạt được độ chính xác cao hơn cả một mô hình phức tạp nhưng được đào tạo trên các hình ảnh chưa được xử lý. 

Luôn có sự đánh đổi giữa việc loại bỏ nhiễu và giữ lại các cạnh của hình ảnh. Để loại bỏ speckle noise, các cạnh của ảnh sẽ bị làm mờ. Nếu bạn muốn giữ lại các cạnh của hình ảnh, nhiễu duy nhất mà bạn có thể loại bỏ là salt-and-pepper noise.

Bạn đang xem: Tổng hợp các kỹ thuật lọc ảnh (Image Filters) trong Python
Bài trước Bài sau
VIẾT BÌNH LUẬN CỦA BẠN

Địa chỉ email của bạn sẽ được bảo mật. Các trường bắt buộc được đánh dấu *

Đăng nhập
Đăng ký
Hotline: 0904251826
x