Theo dõi đối tượng theo màu – Tracking color

Để theo dõi đối tượng thì có nhiều cách: theo dõi theo màu sắc, theo hình dạng,… Trong đó theo dõi theo màu là đơn giản nhất. Chỉ cần xác định được màu sắc của vật thể cần tìm rồi cho chương trình tìm màu đó là xong.

Để có thể hiểu sâu hơn tham khảo bài: Lọc màu ảnh – filter color

Như vậy, hệ màu HSV phù hợp nhất để tìm ra 1 màu nào đó. Hệ màu HSV có 3 yếu tố là màu sắc, độ bão hoà và độ sáng. Màu sắc chỉ ra màu đó là xanh, đỏ, tím vàng. Độ bão hoà chỉ ra sắc độ màu (cường độ màu) chỉ độ đậm nhạt của màu. Còn độ sáng sẽ chỉ ra độ sáng độ sáng tối.

Người dùng sẽ chỉ ra đâu là màu họ cần theo dõi bằng cách thay đổi giá trị của trackbar. Sau đó dùng hàm cv::moments() để tìm ra trọng tâm của vùng màu đó.

Bước 1: tạo các trackbar và lấy hình ảnh từ webcam
Chương trình cần biết màu cần tìm nằm trong khoảng nào của 3 kênh HSV. Như vậy là cần 6 trackbar do H,S,V cần 2 trackbar để biết [Hmin; Hmax], [Smin; Smax], [Vmin; Vmax].

Bước 2: tách ra màu cần thiết dựa vào giá trị của trackbar
Bước này đơn giản, chỉ cần sử dụng hàm cv::inRange là được

Tới bước 3: tìm trọng tâm của vùng cần tìm
Trước khi tìm trọng tâm thì lọc bớt nhiễu, sau đó sử dụng hàm cv::moments để tìm trọng tâm vùng cần tìm

Download

Download demo Windows form

FilterColor

TrackingColor
Trong repo có nhiều project, các bạn chỉ cần chạy TrackingColor.sln là được.

Download Source Android (Github)

11 thoughts on “Theo dõi đối tượng theo màu – Tracking color

    1. Hóng bài đăng của ad, Phương pháp đó lệch tỷ lệ hoặc mẫu bị khác góc nhìn thì khó phát hiện dc đối tượng. Đây mang tính chất nghiên cứu học thuật thì ms sd Template Matching.

Leave a Reply