Phát hiện khuôn mặt trong ảnh

Một phần của tài liệu trích chọn đặc trưng trên khuôn mặt người (Trang 42 - 45)

Phương pháp phát hiện khuôn mặt dùng đặc trưng Giống Haarkết hợp Adaboost đã được cài đặt sẵn trong thư viện mở OpenCV của Intel. Do vậy, chúng tôi sẽ xây dựng bộ phát hiện khuôn mặt bằng ngôn ngữ C++ , dùng môi trường lập trình là MS Visual Studio 2005 và thư viện mở OpenCV.

34

Nhiệm vụ của chúng tôi trong phần này là chạy thử nghiệm với các bộ tham số [scale_factor, min_neighbors, min_size] khác nhau của hàm cvHaarDetectObjects trên hệ cơ sở dữ liệu Cohn – Kanade để tìm ra bộ tham số phù hợp.

Bảng 3 - Bộ cơ sở dữ liệu Cohn – Kanade.

Tổng số ảnh 8,842 ảnh trực diện khuôn mặt

Số người Của 97 người.

Tổng số thư mục Chia vào 585 thư mục.

Ghi chú Mỗi người có 6 thư mục là

chuỗi ảnh về 6 cảm xúc.

Hàm cvHaarDetectObjects có các tham số sau :

CVAPI(CvSeq*) cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade,

CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1),

int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0),

CvSize min_size CV_DEFAULT(cvSize(0,0)));

Trong đó CvArr* image là tập các ảnh cần nhận dạng khuôn mặt,

CvHaarClassifierCascade* cascade là bộ phân lớp và là thành phần quan trọng nhất

trong hệ thống, được tải từ file xml hoặc ymxl được xây dựng sẵn trên các bộ cơ sở dữ

liệu chuẩn. OpenCV cho phép đối với mỗi bộ cơ sở dữ liệu chúng ta có thể xây dựng

một file xml riêng, trong thư viện cài đặt sẵn hàm xây dựng file xml

cvCreateHidHaarClassifierCascade. Để tải một cascade ta có thể sử dụng hàm cvLoad trong OpenCV

char *fdata = "haarcascade_frontalface_alt_tree.xml"; //load classfier

35

CvMemStorage* storage dùng lưu trữ tập hợp hình chữ nhật thỏa mãn điều kiện tìm

kiếm. Scale_factor là tỷ lệ tăng kích thước của cửa sổ (window) trong quá trình dịch

cửa sổ trên toàn bộ bức ảnh.Ví dụ 1.1 có nghĩa là tăng kích thước của cửa sổ 10%,

Min_neighbors giá trị nhỏ nhất (trừ đi 1) của những “hình chữ nhật hàng xóm” tạo nên

một đối tượng, tất cả những nhóm có số lượng hình chữ nhật nhỏ hơn min_neighbors

1 đều bị bỏ qua. Nếu min_neighbors = 0 , hàm sẽ không nhóm các hình chữ nhật lại,

có thể sử dụng khi mà chúng ta có các thủ tục nhóm riêng. Flags: quy định phương

thức thực hiện. Hiện tại chỉ có một cờ được chỉ rõ là CV_HAAR_DO_CANNY_PRUNING.

Nếu cờ được đặt, hàm sẽ sử dụng bộ phát hiện cạnh Canny để bỏ qua một số vùng có chứa quá ít hoặc quá nhiều cạnh. Giá trị lấy ngưỡng thực tế được điều chỉnh cho nhận (adsbygoogle = window.adsbygoogle || []).push({});

dạng khuôn mặt, trong trường hợp này, cắt tỉa làm tăng tốc độ xử lý. min_size : kích

thước nhỏ nhất chấp nhận được của khuôn mặt.

Sau đây là kết quả chạy thuật toán phát hiện khuôn mặt trên bộ thư viện Conh – Kanade với bộ tham số chúng tôi chọn là [1.1 , 2 , (200,200)].

Bảng 4 – Kết quả nhận dạng khuôn mặt trên bộ cơ sở dữ liệu Cohn – Kanade.

Trường hợp Số lượng Lý do

Nhận dạng đúng 8779

Nhận dạng sai 63 Phát hiện nhiều hơn một khuôn mặt trong ảnh

36

Hình 22 – Một số ví dụ phát hiện khuôn mặt bằng đặc trưng giống Haar trên hệ cơ sở dữ liệu Conh – Kanade .

Kết quả thử nghiệm trên camera

Hình 23 – Kết quả nhận dạng khuôn mặt thời gian thực (sử dụng camera).

Một phần của tài liệu trích chọn đặc trưng trên khuôn mặt người (Trang 42 - 45)