Theo dõi đối tượng

Một phần của tài liệu Nghiên cứu và xây dựng module theo dõi tự động các đối tượng ảnh (Trang 68 - 73)

Nhiệm vụ theo dõi đối tượng ảnh trong module chương trình chia thành ba công đoạn (hình 3-7):

9 Dự báo vị trí tiếp theo của đối tượng

9 Gán quan sát - đối tượng dựa trên thước đo histogram 9 Cập nhật lại thông số bộước lượng

55

Đối tượng chuyển động

Tính histogram vùng ảnh bounding rectangle chứa đối

tượng chuyển động và vùng ảnh quan sát

So sánh các giá trị histogram vùng ảnh chưa đối tượng và

vùng ảnh quan sát

Dự báo trạng thái tiếp theo của đối tượng sử dụng

Kalman Filter

Gán quan sát -đối tượng Đối tượng bị theo dõi

Cập nhật lại thông số Kalman Filter

 

Hình 3-5. Lưu đồ thuật toán theo dõi đối tượng

Việc dự báo vị trí của đối tượng chuyển động trong frame tiếp theo được thực hiện bằng bộ lọc Kalman. Số bộ lọc khởi tạo trong mỗi frame bằng với số đối tượng cần theo dõi. Tức là, khi có đối tượng mới được phát hiện trong frame, chương trình sẽ sinh ra một bộ lọc Kalman mới để theo dõi đối tượng này. Và khi

đối tượng ra khỏi khung hình, bộ lọc Kalman theo dõi nó cũng sẽ bị hủy bỏ. Như

vậy, mỗi bộ lọc kalman được sinh ra và mất đi cùng với sự xuất hiện hay ra khỏi khung hình của đối tượng.

Các vector biến trạng thái và vector biến quan sát cài đặt cho bộ lọc Kalman là vị trí của đối tượng chuyển động (object locations). Trong luận văn, vùng chứa

đối tượng được biểu diễn bằng một hình chữ nhật bao quanh đối tượng (bounding

rectangle) nên phương trình trạng thái bộ lọc có dạng như sau:

56

Trong đó, thành phần x’t+1, y’t+1 là ước lượng tọa độđỉnh dưới cùng bên trái và bw’t+1,bh’t+1 là ước lượng các giá trị chiều rộng bW, chiều cao bH của hình chữ

nhật chứa đối tượng. Còn các thành phần vx’t+1, vy’t+1, tương ứng với ước lượng vận tốc theo hai trục x, y, và vbw’t+1, vbh’t+1 tương ứng ước lượng vận tốc tịnh tiến của bW, bH. Giá tr∆t là khoảng thời gian hiệu chỉnh, thường lấy bằng thời gian chuyển frame trong video, tức là ∆t = 1/24.

Việc cập nhật lại thông số bộ lọc Kalman sử dụng phương trình quan sát có dạng như sau :

 =   + N(0,R)  (3-2)

Trong đó, thành phần xt obs, yt obs, bwt obs, bht obs là các giá trị phép đo tọa độ đỉnh, chiều rộng, chiều cao hình chữ nhật chứa đối tượng tại thời điểm t.

Nói chung, nếu đối tượng ảnh chuyển động với vận tốc không lớn và đều

đặn, trạng thái đối tượng sẽ thay đổi rất ít qua các frame liên tiếp. Khi đó, có thể coi mô hình hệ thống theo dõi tuyến tính. Và nhiễu quá trình cũng như phép đo là nhiễu trắng, phân bố Gaussian, với hiệp phương sai tương ứng Q, R.

Trường hợp phát hiện một đối tượng, chỉ sử dụng một bộ lọc Kalman thực hiện ước lượng và quan sát nên việc gán quan sát - đối tượng, hay việc xác định quan sát có tương ứng với đối tượng không thực sự cần thiết. Tuy nhiên, khi có nhiều đối tượng, số lượng quan sát tại mỗi thời điểm tăng lên, việc gán quan sát -

đối tượng là nhiệm vụ bắt buộc. Trong luận văn, sự chênh lệch giữa histogram của vùng ảnh chứa đối tượng chuyển động và vùng ảnh chứa quan sát được dùng làm thước đo độ tương tự cho khâu việc gán quan sát - đối tượng.

57

3.6.2. Các hàm xử lý

9 Hàm trích chọn vùng ảnh:

void cvSetImageROI (image, rect);

Trong đó :

image : ảnh đầu vào.

rect : hình chữ nhật ROI.

Hàm cvSetImageROI sẽ tìm trên ảnh đầu vào vùng ảnh cho bởi một hình chữ

nhật ROI ( region of interest). Sau đó, thay thế ảnh đầu vào này bằng vùng ảnh đã trích chọn. Thông qua hàm, ta có thể tách vùng chứa đối tượng chuyển động, và tính

được histogram cho riêng vùng ảnh này. 9 Các hàm xử lý histogram:

void cvCalcHist( image, hist, accumulate=0, mask=NULL ); double cvCompareHist(hist1, hist2, method );

Trong đó :

image : ảnh đầu vào.

hist : con trỏ histogram.

accumulate : cờ lưu trữ

mask : xác định những pixel nào trong ảnh gốc được dùng.

hist1, hist2 : histogram 1 và 2.

method : phương pháp so sánh.

Hàm cvCalcHist thực hiện tính lược đồ xám của một đơn kênh img. Còn hàm

58

pháp method. Trong luận văn, sử dụng công thức Chi - square, và cài đặt method =

•CV_COMP_CHISQR. Những phương pháp khác có thể xem thêm tại [17] và các tài liệu hướng dẫn của OpenCV .

9 Các hàm tính toán bộ lọc Kalman:

CvKalman* cvCreateKalman(dynam_params, measure_params, control_params );

const CvMat* cvKalmanPredict( kalman, control ); const CvMat* cvKalmanCorrect(kalman, measurement );

Trong đó :

dynam_params : kích thước vector trạng thái.

measure_params : kích thước vector đo lường.

control_params : kích thước vector điều khiển.

kalman : con trỏ bộ lọc Kalman.

control : vector điều khiển.

measurement : vector phép đo.

Hàm cvCreateKalman khởi tạo các giá trị kích thước vector đầu vào cho bộ

lọc Kalman. Còn hàm cvKalmanPredict thực hiện khâu dự báo, cvKalmanCorrect thực hiện khâu hiệu chỉnh của bộ lọc.

60

CHƯƠNG IV - THỬ NGHIỆM VÀ ĐÁNH GIÁ

Chương III đã mô tả các giải thuật thiết kế và cài đặt, cũng như một số kết quả trung gian. Ở chương IV này sẽ trình bày và đánh giá những kết quả thử nghiệm trên bộ cơ sở dữ liệu thực.

4.1. Cơ sở dữ liệu thử nghiệm

Module chương trình theo dõi đối tượng ảnh được thử nghiệm trên đối tượng là người, qua bốn video với hai kịch bản: có một người chuyển động và có hai người chuyển động. Nguồn dự liệu tự thu thập và lấy từ datasheet CAVIAR project 2004 của phòng thì nghiệm INRIA Labs tại Grenoble, France.

Số thứ tự Khung hình Độ dài (giây) Frame rate Nguồn

Video 1 320x240 27 30 Tự thu thập

Video 2 320x240 67 30 Tự thu thập

Video 3 384x288 24 25 CAVIAR

Video 4 384x288 59 25 CAVIAR

Bảng 4-1. Tập video thử nghiệm

Trong cơ sở dữ liệu, video 3 và 4 quay ngoài hành lang, còn video 1 và 2 được quay trong nhà. Riêng video 1 mỗi khung hình chỉ có một người di chuyển, các video còn lại đều có từ một đến hai người.

Một phần của tài liệu Nghiên cứu và xây dựng module theo dõi tự động các đối tượng ảnh (Trang 68 - 73)

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

(89 trang)