Trong phần này tôi sẽ trình bày việc dùng thuật toán CamShift để theo dõi mục tiêu di
động.
Hình 18: Sơđồ thuật toán CamShift
1) Histogram.
Đầu tiên một Histogram sẽ được tạo ra, Histogram này chứa các thuộc tính liên quan
đến màu sắc như đã trình bày ở phần trên. Tiếp theo, tâm của và kích cỡ của mục tiêu
được tính toán để theo dõi mục tiêu khi hình dạng và kích cỡ của nó thay đổi.
2) Tính toán xác suất phân bố của mục tiêu căn cứ vào Histogram nhận được
Histogram được tạo ra duy nhất một lần, lúc bắt đầu theo dõi. Sau đó nó được sử dụng để gán cho “xác suất đối tượng” giá trị mỗi điểm ảnh trong khung video tiếp theo.
3) Dịch chuyển đến vị trí mới với mỗi khung hình vừa nhận được từ video,
CamShift sẽ “dịch chuyển” đến vị trí mà nó ước lượng trên đối tượng nó sẽ mà tập
trung nhiều điểm sáng nhất trong bức ảnh xác suất. Nó tìm vị trí mới bắt đầu từ vị trí
trước đó và tính toán giá trị trọng tâm của xác suất phân bố bên trong một hình chữ
nhật. Sau đó nó dịch chuyển vị trí của hình chữ nhật về trọng tâm vừa tìm được.
OpenCV sử dụng hàm cvCamShift() để thực hiện chuyển dịch này. Việc tính toán
Yahoo:thoi_chao_em_12325 Email:xuanducdhcn@gmail.com 29
Kết quả tính toántâm đối tượng khi dùng thuật toán CamShift.
Hình 19: Kết quả tính toạ độ tâm bằng thuật toán CamShift
Dựa vào giá trị x, y vừa tìm được này ta có thể điểu khiển rô bốt chạy bám đối
tượng.
Kết quả theo dõi đối tượng.
Hình 20: Kết quả bước đầu theo dõi đối tượng bằng thuật toán CamShift
Dựa vào kết quả nhận đươc như trên, ta sẽ gửi tín hiệu điều khiển này qua cổng kết nối RS232 để điều khiển rô bốt di động.
Yahoo:thoi_chao_em_12325 Email:xuanducdhcn@gmail.com 30