CHƢƠNG 3 : THỰC NGHIỆ M ĐÁNH GIÁ
3.1. Thực nghiệm
3.1.4. Xây dựng bộ phát hiện ngƣời trên ảnh tĩnh
Dùng hệ thống window trƣợt kết hợp bộ phân loại nhị phân đã huấn luyện. Cho một ảnh, lấy các ảnh tỉ lệ c a ảnh này tạo thành hình chóp khơng gian tỉ lệ và một window phát hiện 64x128 trong đó ngƣời đi bộ đƣợc mơ tả có chiều cao trung
53
bình 100 pixels. Trƣợt window này quét qua tất cả các m c tỉ lệ c a hình chóp khơng gian tỉ lệ ở tất cả các vị trí ảnh. So sánh các vùng chồng nhau giữa các window phát hiện gần nhau để nhóm chúng thành một nhóm. C hai window có vùng chồng nhau lớn hơn nữa tổng các vùng đƣợc xem là gần nhau, do đó hai window này đƣợc xem là phát hiện cùng một đối tƣợng. Áp dụng loại bỏ không cực đại đối với các window phát hiện lân cận và biểu diễn window phát hiện mạnh nhất. Phƣơng pháp trƣợt window trình bày hình chữ nhật màu đỏ khơng có ngƣời bên trong và hình chữ nhật màu xanh với chỉ số tin cậy (percentage of confidence) khi có ngƣời bên trong. Thực hiện phát hiện ngƣời, với các hàm kèm theo.
Đọc các tham số khác nhau (từ file.mat). Hàm get_params.m – Ngõ vào: đƣờng dẫn đến file tham số. Ng ra: đƣa tất cả các tham số chính đến giá trị thực c a nó.
Tính số chiều c a hình chóp khơng gian tỉ lệ c a một ảnh ng vào cho trƣớc. Hàm get_pyramid_dimensions.m - Ng vào: ảnh để xử lý. Tất cả các tham số hình chóp đƣợc đọc từ file pyramid params. Ng ra: số m c (level), tổng số window và số window mỗi m c. Các tham số đƣợc xác định gồm bƣớc trƣợt, hệ số tỉ lệ và số chiều c a window đƣợc đọc từ file pyramid parameter. Mặc định file này đƣợc tìm trong thƣ mục gốc .m nếu khơng tìm thấy trong thƣ mục params nơi mà file .m tồn tại. Nếu cả hai cách trên khơng tìm thấy thì một cửa sổ sẽ nhắc nhở. Theo các tham số đƣợc đọc, hàm tính số window phát hiện mà hình chóp có.
Tính tất cả HOGs từ hình chóp khơng gian tỉ lệ c a một ảnh cho trƣớc và tính cấu trúc hình chóp c a một ảnh ng vào cho trƣớc các tham số. Hàm
get_pyramid_hogs.m – Ng vào: ảnh ng vào, kích thƣớc bộ mơ tả, hệ số tỉ lệ hình chóp giữa các m c và bƣớc trƣợt window. Ng ra: HOGs cho mỗi window, tất cả các window c a hình chóp, số window c a mỗi m c và tọa độ c a mỗi window.
Tính tất cả các ảnh window c a hình chóp và tọa độ c a nó c a một ảnh ngõ vào cho trƣớc. Hàm get_scale_space_pyramid_images.m – Ng vào: ảnh để xử lý. Ng ra: hình chóp tỉ lệ; mảng cell ch a một cấu trúc hình chop gồm tất cả các
54
window c a hình chóp khơng gian tỉ lệ, các tọa độ; các tọa độ upper-left cho mỗi window trong cấu trúc hình chop trả về.
Tìm ngƣời trên tất cả các ảnh trong một thƣ mục cụ thể, vẽ window quét qua tất cả quá trình trƣợt cho mỗi ảnh, nhắc đƣờng dẫn thƣ mục ảnh và gọi window trƣợt vẽ cho mỗi ảnh tìm thấy trong thƣ mục ảnh. Hàm sliding_detector.m –Ngõ vào: mơ hình SVM. Ng ra: bỏ trống.
Vẽ window trƣợt, đƣợc gọi từ hàm sliding detector. Tính bộ mơ tả và phân loại mỗi window trong khi window phát hiện trƣợt qua ảnh. Hàm
draw_sliding_window.m – Ng vào: ảnh con đƣợc xác định bởi window phát hiện và mơ hình libSVM phân loại. Ng ra: bỏ trống.
Áp dụng loại bỏ tất cả các phát hiện lân cận, lựa chọn một phát hiện có độ tin cậy cao nhất. Hàm non_max_suppression.m – Ng vào: tọa độ theo pixel c a window, đo lƣờng độ tin cậy c a window và kích thƣớc c a window. Ng ra: bỏ trống.
Tìm ngƣời trên tất cả các ảnh trong một thƣ mục cụ thể. Cho trƣớc một mơ hình, u cầu một thƣ mục để đọc các ảnh mong muốn. Sau đó tìm ngƣời trong mỗi ảnh, áp dụng loại bỏ khơng cực đại (non-maximum suppression) chỉ vẽ hình chữ nhật giới hạn màu xanh cho vị trí thích hợp nhất. Hàm static_detector.m – Ng vào: mơ hình SVM. Ng ra: bỏ trống.
55
Hình 3.3. Một vài kết quả phát hiện ngƣời trên ảnh tĩnh