Thuật toán CamShift

Một phần của tài liệu ĐIỀU KHIỂN ROBOT DI ĐỘNG SỬ DỤNG THƯ VIỆN OPENCV (Trang 38 - 40)

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

Một phần của tài liệu ĐIỀU KHIỂN ROBOT DI ĐỘNG SỬ DỤNG THƯ VIỆN OPENCV (Trang 38 - 40)

Tải bản đầy đủ (PDF)

(82 trang)