Lọc màu ảnh – filter color

Lọc màu ảnh (filter color) là tìm đối tượng dựa trên màu sắc của vật thể đó. Bài này có ý tưởng tương tự bài Theo dõi đối tượng theo màu Sử dụng C++ và OpenCV để thực hiện.

Giải thuật lọc màu ảnh này phù hợp nhất với đối tượng có màu sắc tương phản với background. Bên dưới là hình dùng để test

buoi


Thuật toán

Chương trình dùng hệ màu HSV để lọc màu. Sau khi chuyển từ hệ màu RGB sang HSV thì filter giá trị màu bằng hàm cv::inRange(), kết quả là ảnh binary gọi là mask.

Sau đó apply mask này vào ảnh gốc ta được ảnh chỉ chứa màu trong giới hạn cần tìm.


Thực hiện

Đầu tiên tạo 6 trackbar để giới hạn khoảng giá trị của 3 kênh màu HSV
trackbar_opencv

Căn chỉnh trackbar sao cho mask thể hiện đúng vùng màu mong muốn. Tiếp theo là copy vùng màu theo mask vào ảnh mới. Kết quả như hình bên dưới


Video



Ứng dụng khác

Một ví dụ khác: tìm sâu trên lá
worm2




Tìm rầy nâu trên lá
worm




Tìm trứng ốc sên

ocsen



Tham khảo

Create mask on image (tạo mặt nạ cho ảnh)


Log

Version 0.0.3: Thêm mumeric control để set value tiện hơn
– Thêm tính năng đọc giá trị HSV từ clipboard, với khoảng cách bằng dấu ,
Thí dụ: 20,159,64,235,52,201

Version 0.0.3: Thêm mumeric control để set value tiện hơn

Version 0.0.2: Viết giao diện bằng C# để fix lỗi trackbar bị overlap


Download

Lưu ý source code có nhiều project, các bạn chỉ cần build FilterColor.sln là được.
Source code (Github)

FilterColor_0.0.4.zip (Google Drive – 13 MB)

Lưu ý phải cài .NET framework 4.5C++ redistribute 2015

Leave a Reply