Trong phương pháp này, một cửa sổ kích thước mặc định 20 x 20 pixel được trượt trên hình ảnh từng hàng để tìm các đặc điểm trên khuôn mặt.. Ảnh đạo hàm Gx và Gy là ma trận ví dụ: 640x640
Trang 1Báo cáo bài tập lớn
Truyền thông đa phương tiện
Giảng viên hướng dẫn : Vũ Hữu Tiến
Trang 2Đề tài:
Thuật toán phát hiện khuôn mặt
Trang 3Danh sách sinh viên:
Đào Duy Khánh - B18DCDT108
Phạm Phú Phúc - B18DCDT187
Trần Long Thành - B18DCDT236
Trang 4Lý do chọn đề tài:
Bài toán nhận dạng khuôn mặt đóng vai trò quan trọng trong nhiều lĩnh vực đời sống hằng ngày của con người như các
hệ thống giám sát, quản lý vào ra, tìm kiếm thông tin một người nổi
tiếng, đặc biệt là an ninh, bảo mật.
Trang 51 Chức năng app
Vẽ ra đồ thị điểm ảnh
Phát hiện khuôn mặt
Nhận diện khuôn mặt (đang cập nhật bổ sung)
Trang 62 Sơ đồ thuật toán
Trang 7Nguyên lý hoạt động
Bộ phân loại Haar Cascade của OpenCV hoạt động trên phương pháp tiếp cận cửa sổ trượt Trong phương pháp này, một cửa sổ (kích thước mặc định 20 x 20 pixel) được trượt trên hình ảnh (từng hàng) để tìm các đặc điểm trên khuôn mặt Sau mỗi lần lặp, hình ảnh được thu nhỏ (thay đổi kích thước) theo một yếu tố nhất định (được xác định bởi tham số ' scaleFactor ') Kết quả đầu ra của mỗi lần lặp được lưu trữ và thao tác trượt được lặp lại trên hình ảnh nhỏ hơn, đã thay đổi kích thước Quá trình thu nhỏ và
mở rộng cửa sổ này tiếp tục cho đến khi hình ảnh quá nhỏ so với cửa sổ trượt Giá trị của scaleFactor càng nhỏ thì độ chính xác càng lớn và chi phí tính toán càng cao
Trang 8Dò biên (Phương pháp canny)
Giảm nhiễu: Làm mờ ảnh, giảm nhiễu dùng bộ lọc Gaussian kích thước 5x5 Kích
thước 5x5 thường hoạt động tốt cho giải thuật Canny Dĩ nhiên bạn cũng có thể thay đổi kích thước của bộ lọc làm mờ cho phù hợp
Tính Gradient và hướng gradient: ta dùng bộ lọc Sobel X và Sobel Y (3x3) để tính
được ảnh đạo hàm Gx và Gy Sau đó, ta tiếp tục tính ảnh Gradient và góc của Gradient theo công thức Ảnh đạo hàm Gx và Gy là ma trận (ví dụ: 640x640), thì kết quả tính ảnh đạo hàm Edge Gradient cũng là một ma trận (640x640), mỗi pixel trên ma trận này thể hiện độ lớn của biến đổi mức sáng ở vị trí tương ứng trên ảnh gốc
Trang 9Dò biên (Phương pháp canny)
Tương tự, ma trận Angle cũng có cùng kích thước (640x640), mỗi pixel trên Angle thể hiện góc, hay nói cách khác là hướng của cạnh Ví dụ dễ hiểu, nếu góc gradient là 0 độ, thì cạnh của ta trên ảnh sẽ là một đường thẳng đứng (tức tạo góc 90 độ so với trục
hoành) (vuông góc hướng gradient) Khi tính toán, giá trị hướng gradient sẽ nằm
trong đoạn [-180, 180] độ, ta không giữ nguyên các góc này mà gom các giá trị này về
4 bin đại diện cho 4 hướng: hướng ngang (0 độ), hướng chéo bên phải (45 độ), hướng dọc (90 độ) và hướng chéo trái (135 độ)
Trang 10Dò biên (Phương pháp canny)
Non-maximum Suppression (viết tắt NMS): loại bỏ các pixel ở vị trí không phải cực
đại toàn cục Ở bước này, ta dùng một filter 3x3 lần lượt chạy qua các pixel trên ảnh gradient Trong quá trình lọc, ta xem xét xem độ lớn gradient của pixel trung tâm có phải là cực đại (lớn nhất trong cục bộ - local maximum) so với các gradient ở các pixel xung quanh Nếu là cực đại, ta sẽ ghi nhận sẽ giữ pixel đó lại Còn nếu pixel tại đó không phải là cực đại lân cận, ta sẽ set độ lớn gradient của nó về zero Ta chỉ so sánh
pixel trung tâm với 2 pixel lân cận theo hướng gradient.
Trang 11Dò biên (Phương pháp canny)
Lọc ngưỡng: ta sẽ xét các pixel dương trên mặt nạ nhị phân kết quả của bước trước
Nếu giá trị gradient vượt ngưỡng max_val thì pixel đó chắc chắn là cạnh Các pixel
có độ lớn gradient nhỏ hơn ngưỡng min_val sẽ bị loại bỏ Còn các pixel nằm trong
khoảng 2 ngưỡng trên sẽ được xem xét rằng nó có nằm liền kề với những pixel được cho là "chắc chắn là cạnh" hay không Nếu liền kề thì ta giữ, còn không liền kề bất cứ pixel cạnh nào thì ta loại Sau bước này ta có thể áp dụng thêm bước hậu xử lý loại bỏ nhiễu (tức những pixel cạnh rời rạc hay cạnh ngắn) nếu muốn
Trang 12Làm mịn ảnh (Bộ lọc Bilateral)
cv.bilateralFilter() : Là bộ lọc hiệu quả cao trong công việc loại bỏ nhiễu mà vẫn giữ
lại được các đường viền (cạnh) trong ảnh
Bộ lọc Gauss quyết định giá trị một điểm ảnh bằng cách lấy trung bình thap hàm Gauss các giá trị điểm ảnh xung quanh điểm đó Hàm trọng số Gauss chỉ phụ thuộc vào
khoảng cách trong không gian so với trung tâm điểm ảnh, không quan tâm đến sự
tương quan giữa mức xám của điểm trung tâm với các điểm xung quanh đó Nó cũng không quan tâm rằng điểm ảnh trung tâm có nằm tại một đường biên trong ảnh không,
vì thế làm nhòe đi các đường biên trong ảnh
Trang 13Làm mịn ảnh (Bộ lọc Bilateral)
Bộ lọc Bilater cũng sử dụng một bộ lọc Gauss với khoảng cách đến điểm trung tâm, đảm bảo chỉ có các điểm ở gần vào giá trị điểm trung tâm Tuy vậy nó sử dụng thêm một hàm Gauss cho mức xám , đảm bảo chỉ các điểm ảnh có mức xám tương đồng với điểm ảnh trung tâm tham gia vào quá trình làm mịn Vì thế bộ lọc mức xám rất rõ ràng hơn Hơn nữa, thay vì hoạt động trên các kênh màu một cách riêng lẻ như bộ lọc trung bình hay bộ lọc Gauss, bộ lọc Bilater có thể thi hành việc đo đạc màu sắc có chủ đích trong không gian màu CIE – Lab, làm mượt màu và bảo toàn các biên theo hướng phù hợp hơn với nhận thức con người
Trang 14K t qu ch y demo ết quả chạy demo ả chạy demo ạy demo