Tải bản đầy đủ (.doc) (92 trang)

XÂY DỰNG ỨNG DỤNG PHÁT HIỆN MẶT NGƯỜI DỰA TRÊN MÀU DA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.85 MB, 92 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG ỨNG DỤNG PHÁT HIỆN MẶT
NGƯỜI DỰA TRÊN MÀU DA
Sinh viên thực hiện : Nguyễn Hoài Sơn
Lớp CNPM - K48
Giáo viên hướng dẫn: ThS Lương Mạnh Bá
Hà nội 5-2008
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Định hướng đề tài tốt nghiệp
Tìm hiểu các phương pháp phát hiện mặt người dựa trên đặc trưng và xây dựng ứng
dụng phát hiện khuôn mặt dựa trên màu da.
2. Các nhiệm vụ cụ thể của đồ án tốt nghiệp
- Tìm hiểu các phương pháp phát hiện khuôn mặt dựa trên đặc trưng.
- Nghiên cứu phương pháp phát hiện mặt người dựa trên màu da.
- Xây dựng ứng dụng phát hiện mặt người.
3. Lời cam đoan của sinh viên:
Tôi – Nguyễn Hoài Sơn - cam kết đồ án tốt nghiệp là công trình nghiên cứu của bản
thân tôi dưới sự hướng dẫn của Ths. Lương Mạnh Bá.
Các kết quả nêu trong đồ án tốt nghiệp là trung thực, không phải là sao chép toàn
văn của bất kỳ công trình nào khác.
Hà Nội, ngày tháng năm 2008
Tác giả đồ án tốt nghiệp
Nguyễn Hoài Sơn

4. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của đồ án tốt nghiệp và
cho phép bảo vệ


Hà Nội, ngày tháng năm 2008
Giáo viên hướng dẫn
ThS. Lương Mạnh Bá
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
LỜI NÓI ĐẦU
Gần đây, lĩnh vực nhận dạng đang dành được nhiều sự quan tâm nghiên cứu và thử
nghiệm như nhận dạng khuôn mặt, nhận dạng vân tay, giọng nói, mắt,... Trong đó
nhận dạng khuôn mặt chiếm một vị trí khá quan trọng. Nhận dạng khuôn mặt được
ứng dụng trong nhiều lĩnh vực như: hình sự (nhận dạng tội phạm), các hệ thống an
toàn, bảo mật (dùng xác nhận các nhân viên của tổ chức), và nhiều lĩnh vực khác
nữa.
Trong nhận dạng khuôn mặt, đầu tiên ta phải lấy các khuôn mặt ra một cách thủ
công, rồi sau đó đem đi nhận dạng xem đó là ai. Để việc nhận dạng khuôn mặt được
thực hiện một cách tự động, tức là đưa vào một bức ảnh phải xác định xem trong ảnh
có những ai, rõ ràng cần thực hiện một bước trước đó là phát hiện khuôn mặt.
Việc phát hiện khuôn mặt còn được ứng dụng trong đếm số người. Bao nhiêu khuôn
mặt được phát hiện là có bấy nhiêu người. Việc đếm số người có ý nghĩa trong giao
thông (xác định lưu lượng người qua lại trên đường), trong thương mại (xác định số
lượng khách hàng ra vào siêu thị),...
Chính vì thế mà việc nghiên cứu về phát hiện mặt người là hết sức cần thiết. Với đề
tài “Xây dựng ứng dụng phát hiện mặt người dựa trên màu da” em cũng đã đạt
được một số kết quả nhất định. Đó sẽ là hành trang giúp em rất nhiều trong thời
gian học tập và làm việc sau này.
Để có thể hoàn thành được đồ án là nhờ công lao to lớn của các thầy cô giáo trong
trường Đại học Bách Khoa Hà Nội nói chung và các thầy cô trong khoa Công
nghệ Thông tin, bộ môn Công nghệ phần mềm nói riêng. Các thầy cô đã tận tình
giảng dạy, truyền đạt cho em những kiến thức, những kinh nghiệm quý báu trong
suốt 5 năm học tập và rèn luyện tại trường. Xin được gửi tới các thầy, các cô lời cảm
ơn chân thành nhất. Em xin được bày tỏ long biết ơn của mình đến thầy Lương
Mạnh Bá - Giảng viên bộ môn Công nghệ phần mềm, khoa Công nghệ thông tin,

trường Đại học Bách Khoa Hà Nội đã hết lòng giúp đỡ, hướng dẫn và chỉ bảo tận
tình trong quá trình em làm đồ án tốt nghiệp.
Em cũng xin được gửi lời cảm ơn của mình đến thầy Lê Tấn Hùng đã cho em mượn
web cam để thực hành. Cảm ơn anh Mai Anh Tuấn K47, nhờ tham khảo đồ án của
anh mà em có được những kiến thức ban đầu, tổng quan về lĩnh vực này, để từ đó có
được sự thuận lợi, nhanh chóng và định hướng tốt hơn trong quá trình làm đồ án.
Cuối cùng, em xin được gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động
viên, chăm sóc, đóng góp ý kiến và giúp đỡ em trong quá trình học tập, nghiên cứu
và hoàn thành đồ án tốt nghiệp.
Hà Nội, tháng 5 năm 2008
Sinh viên: Nguyễn Hoài Sơn
Trang 3/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
BỐ CỤC ĐỒ ÁN
Chương 1:
• Tổng quan về lĩnh vực phát hiện mặt người.
• Trình bày một số hệ màu được dùng trong phát hiện mặt người.
• Trình bày một số phương pháp phát hiện mặt người dựa trên đặc trưng
khuôn mặt.
Chương 2:
• Tổng quan phương pháp phát hiện mặt người dựa trên màu da.
• Phương pháp phát hiện màu da.
• Thuật toán phân vùng trong ảnh nhị phân.
• Các tiêu chí xác định vùng mặt.
Chương 3:
• Trình bày về công cụ lấy mặt người trong ảnh.
• Công cụ tổng hợp histogram.
Chương 4:
• Thiết kế, xây dựng chương trình phát hiện mặt người.
• Thử nghiệm chương trình và đánh giá phương pháp phát hiện mặt

người được áp dụng.
Trang 4/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
MỤC LỤC
Trang 5/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
DANH MỤC HÌNH VẼ
Trang 6/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
CHƯƠNG 1: TỔNG QUAN PHÁT HIỆN MẶT NGƯỜI
Chương này trình bày một số lý thuyết cơ bản trong phát hiện mặt người cũng như
một số phương pháp phát hiện mặt người. Cụ thể, chương này trình bày các vấn đề
sau:
• Các hướng tiếp cận trong phát hiện mặt người.
• Một số hệ màu sử dụng trong phát hiện mặt người; HSV, YCrCb.
• Một số phương pháp phát hiện mặt người dựa trên đặc trưng khuôn mặt.
1.1. Tổng quan
Lĩnh vực nhận dạng đang dành được nhiều sự quan tâm trong giai đoạn hiện nay. Nó
được ứng dụng trong các hệ thống giám sát, an ninh, trong các máy tính thế hệ mới
mà con người có thể tương tác với máy tính qua cử chỉ hoặc lời nói,… Nhận dạng
mặt người là một trong số đó. Và phát hiện mặt người là một khâu tiền xử lý cho
nhận dạng mặt người. Ý tưởng của nó là: từ một ảnh chụp cảnh đám đông, ta phải
tách ra được các khuôn mặt trong đó. Các khuôn mặt được tách ra sẽ được chuyển
cho khâu nhận dạng.
Có nhiều hướng tiếp cận và các phương pháp khác nhau trong phát hiện mặt người.
Cũng có nhiều cách phân chia, gom nhóm khác nhau. Sau đây la một số hướng tiếp
cận:
• Giải pháp dựa trên mô hình (top-down model-based approach): trong hướng
tiếp cận này, người ta sử dụng các mô hình mặt người khác nhau có tỉ lệ khác
nhau từ thô nhất đến tốt nhất. Đầu tiên, ảnh sẽ được quét bởi mô hình có tỉ lệ

thô nhất. Sau đó ảnh được quét với mô hình có tỉ lệ tốt hơn. Và cuối cùng
được quét với mô hình có tỉ lệ tốt nhất. Ứng với mỗi tỉ lệ chỉ có 1 mô hình
khuôn mặt. Mà 1 mô hình khuôn mặt ứng với 1 góc nhìn khuôn mặt cụ thể. Do
đó, nhìn chung, phương pháp này khó khăn trong việc đưa vào nhiều góc nhìn
khuôn mặt khác nhau.
• Giải pháp dựa trên đặc trưng (bottom-up feature-based approach): trong hướng
tiếp cận này, người ta sẽ tiến hành tìm kiếm trong ảnh các đặc trưng của
khuôn mặt (như mắt, mũi, miệng,…), sau đó gom nhóm chúng lại với nhau
(dựa trên mối quan hệ hình học giữa chúng) tạo thành các ứng cử viên cho
khuôn mặt. Giải pháp này có thể dễ dàng mở rộng cho nhiều góc nhìn khuôn
mặt khác nhau.
• Giải pháp dựa trên bề mặt (texture-based approach): trong hướng tiếp cận này,
các khuôn mặt được phát hiện dựa trên sự phân bố không gian các mức xám
của các điểm trong ma trận ảnh con. Phương pháp này khó mở rộng cho nhiều
góc nhìn.
Trang 7/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
• Giải pháp dựa trên mạng nơron (neural network approach): trong giải pháp
này, người ta tiến hành huấn luyện trên 1 tập ảnh khuôn mặt và không phải
khuôn mặt. Sau khi huấn luyện xong, sẽ được dùng vào nhận ra khuôn mặt.
Ảnh sẽ được quét bằng 1 cửa sổ. Tại mỗi vị trí cửa sổ, nội dung ảnh được lấy
ra (có thể phải thay đổi tỉ lệ (co, giãn) vì các ảnh được huấn luyện có kích
thước như nhau và xác định) và được cho qua bộ lọc mạng nơron. Nhìn
chung, phương pháp này cho kết quả tốt. Tuy nhiên tốn thời gian huấn luyện
và sưu tầm mẫu.
• Giải pháp dựa trên màu sắc (color-based approach): trong giải pháp này, đầu
tiên người ta xác định các điểm trong ảnh có màu giống màu da mặt. Sau đó,
người ta khoanh vùng các điểm đó lại. Các vùng này có thể là khuôn mặt hoặc
không. Để xác định có phải là mặt không, có thể dựa vào tỉ lệ kích thước của
vùng có tương tự tỉ lệ khuôn mặt không, hoặc dựa vào tỉ lệ số điểm màu da

trong hình chữ nhật bao vùng đó,…
• Giải pháp dựa trên chuyển động (motion-based approach): ngay cái tên của nó
cũng cho thấy giải pháp này chỉ áp dụng phát hiện mặt người trong phim,
không áp dụng cho ảnh tĩnh. Từ các đối tượng chuyển động trong ảnh, dựa
trên một số tiêu chí, người ta sẽ xác định được vùng mặt. Ví dụ như một cái
lắc đầu, hay nháy mắt sẽ là cơ sở để phát hiện khuôn mặt.
Trong thực tế, ngoài những phương pháp đơn thuần đi theo một hướng tiếp cận, thì
cũng có những phương pháp kết hợp nhiều hướng tiếp cận để cho ra kết quả chính
xác hơn, tuy nhiên cũng phải trả giá về thời gian. Trong đồ án này, em chỉ đi vào tìm
hiểu các phương pháp phát hiện mặt người theo hướng dựa trên đặc trưng và dựa trên
màu sắc.
Trong các phương pháp phát hiện mặt người, các tác giả thường sử dụng nhiều hệ
màu khác nhau. Do đó, đầu tiên em xin trình bày về một số hệ màu được sử dụng
trong các phương pháp phát hiện mặt người.
1.2. Giới thiệu về một số hệ màu
Trong phát hiện mặt người, người ta thường không sử dụng hệ màu RGB, mà thường
sử dụng các hệ màu khác như: HSV, HSL, YCrCb. Vì những hệ màu này biểu diễn
màu sắc giống với quan điểm nhìn màu sắc của con người. Sau đây, ta sẽ đi vào diễn
đạt chi tiết một số hệ màu cụ thể.
1.2.1. Hệ màu HSV
HSV (còn có tên gọi khác là HSB) là viết tắt của Hue, Saturation, Value. Hệ màu
gồm 3 thành phần H, S, V. Trong hệ màu này, các màu đều được biểu diễn dựa trên 3
thành phần H, S, V này.
H là viết tắt của Hue, nghĩa là màu sắc. Thành phần này biểu diễn màu sắc vốn có
của màu như: đỏ, xanh da trời, da cam,… Nó có giá trị từ 0 đến 360
o
. Hình sau minh
họa giá trị của H và màu tương ứng:
Trang 8/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da

Hình 1.1: Mô hình biểu diễn 2 thành phần màu H,S trong HSV
Ở trong hình, các giá trị của H đã được quy về dải [0,6), tương ứng với chia các góc
cho 60 độ. Việc biểu diễn H trong dải giá trị nào không thành vấn đề.
S là viết tắt của Saturation, nghĩa là độ bão hòa. Ta có thể hiểu nó giống như khái
niệm nồng độ trong hóa học, với dung môi là màu trắng và chất tan là màu. S có giá
trị nằm trong đoạn [0,1]. Khi giá trị của S lớn, lượng màu hòa trong màu trắng nhiều
lên, màu sẽ đậm hơn. S=1, màu đậm nhất, chiếm hoàn toàn màu trắng. Và ngược lại,
khi giá trị S nhỏ, lượng màu hòa trong màu trắng ít đi, màu sẽ nhạt hơn. S=0 tương
ứng với không có một chút màu nào pha trong màu trắng, kết quả sẽ không có màu
(cũng không khẳng định ngay kết quả là màu trắng, vì nó còn phụ thuộc vào thành
phần V nữa, nhưng có thể khẳng định nó là màu xám). Ví dụ: khi H=0, ta có màu đỏ.
Nhưng không phải cứ H=0 là ta có được 1 màu đỏ đậm đà, nó còn phụ thuộc vào S
(tức là phụ thuộc vào lượng màu đỏ hòa trong màu trắng). Khi S nhỏ, ta có màu đỏ
nhạt. Khi S lớn ta có màu đỏ đậm hơn. S=1 màu đỏ đậm nhất. Khi S=0, giá trị của H
bằng bao nhiêu là vô nghĩa, kết quả cũng chỉ là 1 màu trắng (giả sử V=max).
Thành phần V là viết tắt của value, nó biểu thị thành phần độ sáng. V có giá trị nằm
trong đoạn [0,1]. Bạn mặc 1 chiếc áo hồng, nhưng nếu bạn đứng trong bóng tối, mọi
người sẽ chỉ nhìn thấy chiếc áo màu đen. Vai trò của V là như vậy. Với 1 giá trị H
xác định, ta có 1 màu xác định. Với giá trị S, ta có được độ đậm nhạt cho màu đó.
Nhưng ta sẽ không thể cảm nhận đúng màu đó với độ đậm nhạt đó, nếu độ sáng
không chuẩn. Khi V=1 ta mới cảm nhận được đúng bản chất vốn có của màu. Khi V
tăng tương ứng với độ sáng tăng dần. V=0: không có ánh sáng, tất cả chỉ là 1 màu
đen với mọi H và S. Như ở trên, ta đã nói, khi S=0 thì màu kết quả không phụ thuộc
vào H, nhưng chưa thể nói ngay ta có màu trắng vì còn phụ thuộc vào V. Nếu V=0 ta
có màu đen, V=1 ta có màu trắng, còn nếu 0<V<1 thì ta có màu xám.
Hệ màu có thể được mô hình hóa quá hình sau:
Trang 9/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Hình 1.2: Mô hình hóa hệ màu HSV
Trong xử lý ảnh, ta luôn có nhu cầu chuyển đổi từ hệ màu RGB sang HSV và ngược

lại. Công thức chuyển đổi như sau:
Công thức từ RGB sang HSV:
Trong đó:
• max=max(r,g,b).
• min=min(r,g,b).
• các thành phần màu r,g,b có giá trị nằm trong đoạn [0,1].
Công thức biến đổi từ HSV sang RGB:
Trang 10/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
1.2.2. Hệ màu HSL
HSL (còn có tên gọi khác là HSI) là viết tắt của Hue, Saturation, Lightness. Nó tương
tự như hệ màu HSV (L tương ứng với V cùng chỉ cường độ sáng), với H thuộc
[0,360), S thuộc [0,1], L thuộc [0,1]. Tuy nhiên có một số điểm khác như sau (tất
nhiên là phải có khác, không thì đã chỉ là 1 hệ màu):
• trong hệ màu HSV, ta thấy được màu đúng của nó với giá trị V=1. Còn trong
HSL, màu đúng của nó được thể hiện với L=0,5. Tức là với S=0, trong HSV
với V=1 ta có màu trắng, còn trong HSL với L=0,5 ta vẫn chỉ có màu xám.
Màu trắng chỉ được thể hiện khi L=1. Nhưng khi đó, dù S ≠0 thì cũng vẫn là
màu trắng, cho dù H bằng bao nhiêu. Còn ở HSV khi V=1 thì nếu S≠0 thì sẽ
thể hiện màu sắc với màu chân thực nhất.
• Hai thành phần S ở 2 mô hình, mặc dù có tên giống nhau, nhưng công thức
tính khác nhau.
• Mô hình màu HSV ra đời trước mô hình HSL.
Mô hình HSL có thể được biểu diễn bằng hình sau:
Trang 11/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Hình 1.3: Mô hình hệ màu HSL
Công thức chuyển đổi giữa 2 hệ màu RGB và HSL như sau:
Chuyển từ RGB sang HSL:
H được tính giống như trong HSV.

Trong đó, các tham số được diễn đạt như trong công thức của HSV.
Chuyển từ HSL sang RGB:
Trang 12/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
1.2.3. Hệ màu YCrCb
Hệ màu này được sử dụng trong các hệ thống ảnh số và video. Nó còn dùng trong các
chuẩn nén JPEG và MPEG. Vì hệ màu RGB chỉ thuận tiện cho hiển thị lên màn hình
nhưng lại không thuận tiện trong lưu trữ và chuyển đổi, nên người ta đã nghĩ ra hệ
màu này thuận lợi cho nén và chuyển đổi.
Hệ màu có 3 thành phần là: Y – biểu diễn thành phần độ sáng; Cr, Cb là các sắc tố đỏ
(red) và xanh lục (blue) trong màu. Hệ màu này không phải là hệ màu tuyệt đối, tức
là ứng với 1 giá trị của RGB, tùy theo chuẩn nào được dùng mà ta có các giá trị
YCrCb khác nhau (sẽ nói rõ hơn trong phần chuyển đổi giữa 2 hệ màu này). YCrCb
là dạng biểu diễn số của hệ màu này (tức là các thành phần Y, Cr, Cb nhận các giá trị
số nguyên), nó còn có dạng analog nữa, kí hiệu là YPrPb.
Công thức chuyển đổi giữa 2 hệ màu như sau: đầu tiên là công thức chuyển từ RGB
sang dạng analog của hệ màu YPrPb:
Trong đó:
• R, G, B thuộc [0,1].
• Y thuộc [0,1].
• Pr, Pb thuộc [-0,5;0,5].
Trang 13/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Trong công thức có 2 hằng số là Kb và Kr. Giá trị của chúng tùy theo chuẩn nào được
sử dụng. Ví dụ: chuẩn ITU-R BT.601: Kb=0,114; Kr=0,299. chuẩn ITU-R BT.709:
Kb=0,0722; Kr=0,2126; và còn một số chuẩn khác nữa.
Công thức tính ngược lại RGB được suy trực tiếp từ công thức trên. Rõ ràng từ 2
dòng dưới, ta tính lại được B và R, sau đó thay vào dòng đầu tính ra được G.
Dạng số của hệ màu, tức là YCrCb được tính bằng cách lượng tử hóa dải giá trị của
YPrPb. Ví dụ, với mã hóa 8 bít, giá trị Y được tính ra sẽ có giá trị nằm trong khoảng

[16;235], còn Cr, Cb nằm trong khoảng [16;240]. Bạn sẽ thắc mắc tại sao lại không là
[0;255], thực ra tôi cũng thấy thắc mắc. Với giải [16;235], giá trị Y trong YCrCb
được suy từ Y trong YPrPb (tạm kí hiệu là Y’ để phân biệt) như sau (chỉ là 1 phép
thay đổi dải giá trị đơn giản):
Y=(Y’-0)/(1-0)*(235-16)+16=Y’*219+16.
Cr, Cb cũng tương tự.
1.3. Một số phương pháp phát hiện mặt người dựa trên đặc trưng và
trên màu da
1.3.1. Phương pháp dựa trên màu da và thông tin biên của K. Sandeep và
A.N. Rajagopalan
Các bước thực hiện của phương pháp này như sau:
• Ảnh đầu vào, ảnh màu (A1).
• Lọc ảnh bằng bộ lọc Sobel, thu được ảnh biên (A2).
• Duyệt qua các điểm ảnh của ảnh ban đầu A1, xác định xem điểm nào là
màu da, điểm nào không. Từ đó tạo ra ảnh trong đó chỉ hiện các điểm là
màu da (giống như ảnh nhị phân vậy), gọi là ảnh A3. Trong quá trình xác
định điểm màu da này có sử dụng ảnh biên A2.
• Xác định vị trí các vùng trong ảnh A3 về vị trí, chiều rộng, chiều cao.
• Xác định xem vùng ảnh có phải là mặt không dựa trên tỉ lệ chiều
rộng/chiều cao và tỉ lệ số điểm màu da trong hình chữ nhật bao vùng ảnh
đó.
Chi tiết các bước như sau:
1.3.1.1. Xác định 1 điểm có là màu da hay không
Để xác định 1 điểm có phải là màu da hay không, nhóm tác giả dựa trên một
Histogram được tạo nên. Quá trình tạo Histogram này như sau: các tác giả đã thực
hiện quá trình học màu da dựa trên các ảnh khuôn mặt kiểu như sau:
Trang 14/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Hình 1.4: Một số mặt người trong tổng hợp Histogram của màu da mặt
Khi đó, với mỗi điểm trong ảnh, lấy về giá trị H (hue) và S (saturation) trong mô hình

màu HSV. Tại sao lại chỉ lấy về H,S? Vì màu da của con người trong ảnh còn phụ
thuộc vào yếu tố ánh sáng, ảnh tối thì màu da sẽ hơi sẫm, ảnh sáng thì màu da sẽ
trắng hơn. Cùng 1 người nhưng trong điều kiện ánh sáng khác nhau, màu da cũng sẽ
bị thay đổi. Điều đó gây ra sự đa dạng, phức tạp trong màu da. Do đó, ta cần loại bỏ
tác động của yếu tố ánh sáng này, để lấy về màu da đúng của mỗi người và để hạn
chế bớt sự đa dạng trong màu da. Thành phần V trong mô hình màu HSV chính là
thành phần biểu thị độ sáng trong ảnh. Vì thế nó bị loại bỏ. Trong Histogram dựa trên
(H,S), cột ứng với giá tri H,S này sẽ được tăng lên 1. Sau quá trình học, Histogram
thu được sẽ được chuẩn hóa, tức là chia tỉ lệ, để có được các giá trị trong khoảng
(0,1), chứ không còn là số điểm ảnh nữa.
Để xác định 1 điểm ảnh có phải là màu da hay không, ban đầu phải lấy về thành phần
H,S của điểm ảnh đó. Sau đó, dựa vào histogram thu được xác định xem cột ứng với
giá trị H,S này có giá trị bằng bao nhiêu, nếu nhỏ hơn 1 ngưỡng cho trứơc thì đó
không phải là màu da, ngược lại thì là màu da. Các tác giả thấy rằng nếu chỉ dùng
thông tin này thì kết quả không tốt bằng việc dựa thêm thông tin về biên nữa để xác
định 1 điểm có phải là màu da hay không. Tóm lại, để xác định 1 điểm trong ảnh có
phải là màu da hay không, dựa trên 2 tiêu chí:
o Histogram(H,S) phải lớn hơn 1 giá trị ngưỡng - skinthreshold.
o Điểm đó không nằm trên biên. Để xác định nó có nằm trên biên không, cần
sử dụng ảnh biên. Trong ảnh biên, 1 điểm được coi là nằm trên biên nếu
giá trị của nó lớn hơn 1 giá trị ngưỡng – edgethreshold.
Bằng thực nghiệm, các tác giả chọn ra các giá trị cụ thể cho các giá trị ngưỡng kia
như sau:
o Skinthreshold=0,1.
o Edgethreshold=125.
1.3.1.2. Xác định vị trí và kích thước các vùng trong ảnh màu da (A3)
Ảnh A3 lúc này là ảnh nhị phân, các điểm màu da có giá trị 1, các điểm không phải
có giá trị 0. Để xác định vùng trong ảnh dựa trên phương pháp 8 hàng xóm. Hai điểm
được coi là thuộc cùng 1 vùng nếu điểm này là 1 trong 8 hàng xóm của điểm kia.
Để xác định kích thứơc của vùng, thì các tác giả làm như sau: đầu tiên là xác định

điểm trung tâm của vùng. Nó được xác định bằng cách tính trung bình cộng tọa độ
của các điểm trong vùng. Sau khi có được tọa độ của điểm này rồi, ta xác định chiều
cao của vùng như sau:
o Lấy y của các điểm trong vùng trừ đi y của điểm trung tâm.
Trang 15/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
o Lấy trung bình cộng của các giá trị âm, và lấy trung bình cộng của các giá
trị dương.
o Cộng trị tuyệt đối 2 giá trị trung bình đó lại, được bao nhiêu nhân 2 ra
chiều cao.
Với chiều rộng của vùng làm tương tự.
Đó là cách làm của tác giả, với cách làm này ta thấy ngay một điều, các giá trị được
tính trung bình, điều đó có nghĩa là khung hình chữ nhật đó sẽ không bao hết các
điểm nằm trong vùng, và quá trình duyệt đòi hỏi phải lưu lại tất cả tọa độ các điểm
trong vùng để phục vụ cho tính chiều rộng, chiều cao sau này. Tôi đề xuất 1 phương
pháp đơn giản hơn giải quyết được 2 vấn đề trên là: lấy x max, x min, y max, y min
của tất cả các điểm trong vùng. Tuy nhiên có thể làm vậy lại ảnh hưởng đến chuẩn
đoán vùng mặt sau này.
1.3.1.3. Quyết định có phải là vùng mặt hay không
Vì vùng da tìm thấy có thể là da tay, da chân, … nên để xác định vùng đó có phải là
khuôn mặt hay không, dựa trên 2 tiêu chí:
 Cao/rộng hoặc rộng/cao phải nằm trong khoảng: tỉ lệ vàng ±delta. Rộng/
cao là cho trường hợp mặt nằm ngang, còn delta được đưa vào vì tất nhiên
tỉ lệ không thể nào đúng bằng tỉ lệ vàng được, và cũng vì những khuôn mặt
khác nhau cũng lệch nhau đôi chút, và cuối cùng là vì những trường hợp
mặt nghiêng. Tỉ lệ vàng =
2
51
+
.

 Tỉ lệ số điểm màu da trong khung hình chữ nhật của vùng đó phải lớn hơn
1 giá trị ngưỡng – PercentageThreshold.
Bằng thực nghiệm, nhóm tác giả đã đưa ra giá trị cho các tham số đó như sau:
 Delta=0,65.
 PercentageThreshold=55.
1.3.1.4. Kết quả thử nghiệm
Việc thử nghiệm được áp dụng trên 1 tập ảnh lớn, đa dạng, với các điều kiện sang
khác nhau và nền đa dạng. Trong các ảnh thử nghiệm đó cũng có những vùng có màu
da từ các bộ phận khác của cơ thể như tay,… và cũng có những vùng có màu giống
màu da. Các tác giả cài đặt thuật toán trên MATLAB 5.3, Pentium PIII 128MB
RAM, Windows NT workstation. Với ảnh 320 x 240, tổng thời gian thực hiện thuật
toán là 11s.
Số điểm ảnh được thu thập trong quá trình học là: 4.500.000 điểm ảnh.
Bên cạnh các khuôn mặt được phát hiện cũng có những sự phát hiện nhầm chủ yếu là
vùng tay.
Sau đây là một số kết quả:
Trang 16/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
(nhận ra được các khuôn mặt nhưng nhầm vùng tay)
Hình 1.5: Một số ảnh kết quả của phương pháp
1.3.1.5. Đánh giá
o Ưu điểm
 Phát hiện được các khuôn mặt với kích thước khác nhau, không
phải giả định trước kích thước khuôn mặt.
o Hạn chế
 Trong thuật toán, khi xác định được 1 vùng màu da, để xác định
xem nó có phải là khuôn mặt hay không thì dựa vào tỉ lệ kích thước
hai chiều của vùng, và tỉ lệ số điểm màu da trong vùng. Như vậy chỉ
cần 1 vùng có màu giống màu da và có kích thước thích hợp là sẽ bị
coi là khuôn mặt. Vì vậy, phương pháp này hay bắt nhầm vùng tay.

 Sự dính nhau của các vùng màu da khi phân vùng, ví dụ vùng da
mặt và da cổ. Nguyên nhân là vì thuật toán xác định vùng dựa trên 8
láng giềng gần, chỉ cần 1 điểm chung cũng có thể sát nhập 2 vùng
Trang 17/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
thành 1. Điều này dẫn đến, khung hình chữ nhật bao vùng mặt
thường to. Và nhiều khi làm cho không phát hiện ra khuôn mặt. Ví
dụ khi bạn chồng tay vào cằm hoặc tay đặt ngang cổ, khi đó vùng
được phát hiện sẽ không có tỉ lệ phù hợp và không được xem xét là
mặt.
 Không phát hiện được trong trường hợp đeo kính hoặc dùng khăn
che mặt (nói chung là không để lộ làn da).
1.3.2. Phương pháp dựa trên nhiều chứng cứ của Manoj Seshadrinathan và
Jezekiel Ben – Arie
Trong phương pháp 1, các tác giả chỉ dựa trên màu da để xác định vùng mặt và dựa
vào tỉ lệ kích thước các chiều để xác định xem đó có phải là mặt hay không. Còn
trong phương pháp này, các tác giả sẽ đưa ra quyết định đó có phải là mặt hay không
dựa trên nhiều chứng cứ, không chỉ là màu da. Các chứng cứ đó là:
o Màu da.
o Hình dạng.
o Kết quả lọc Gabor.
1.3.2.1. Xác định màu da
Các tác giả sử dụng hệ màu YCrCb để biểu diễn màu sắc. Để xác định 1 điểm trong
ảnh có phải là màu da mặt hay không, dựa vào 2 thành phần Cr,Cb của điểm ảnh,
không sử dụng thành phần Y, vì nó là thành phần biểu thị độ sáng, không phải là cái
vốn có của màu sắc da mặt, tức là nó thay đổi theo các điều kiện ánh sáng khác nhau.
Việc loại bỏ nó sẽ giúp xác định màu da mặt một cách đơn giản hơn.
Để dựa vào Cr, Cb phát hiện 1 điểm có màu da mặt hay không, các tác giả thực hiện
quá trình học màu da mặt bằng phương pháp mạng Nơron có tên là: RPROP
(Resillient Propagasion). Đây là 1 thuật toán học mạng nơron cải tiến của thuật toán

Backpropagasion. Thuật toán RPROP cho kết quả hội tụ nhanh hơn thuật toán
Backpropagasion.
Trang 18/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Hình 1.6: Biểu đồ hội tụ của phương pháp học RPROP
Như hình trên ta thấy, sự phát hiện sai của RPROP trong quá trình học tiến về 0
nhanh hơn phương pháp kia.
1.3.2.2. Dựa trên hình dạng
Sau khi xác định được điểm nào là màu da, điểm nào không, ta đưa ảnh về ảnh nhị
phân, với các điểm màu da là 1 và các điểm không phải màu da là 0. Từ đó, trong ảnh
xuất hiện các vùng màu da. Tuy nhiên, không phải vùng nào cũng là khuôn mặt. Để
loại bỏ những vùng không phải là khuôn mặt, các tác giả dựa trên các tiêu chuẩn về
hình dạng.
Tiêu chuẩn đầu tiên được áp dụng là tiêu chuẩn tỉ lệ mặt 1/3. Tức là chiều rộng trên
chiều cao khuôn mặt phải >=1/3.
Tiêu chuẩn thứ 2 được sử dụng là tiêu chuẩn vùng elip. Mỗi khuôn mặt được coi là
gần giống hình elip. Coi các vùng phát hiện được đó như là các hình elip. Ta xác định
các độ dài các trục của nó: trục chính và trục phụ. Để xác định điều này, các tác giả
sử dụng biến đổi KL. Sau khi, xác định được độ dài các trục, các tác giả đưa ra công
thức đánh giá cho vùng đó như sau:
S
ei
(x,y)=
21
**
*4
ll
N
i
π

trong đó: l
1
, l
2
là chiều dài các trục, N
i
là số điểm trong vùng i đang xem xét.
Ngoài ra, tác giả còn xác định cả tỉ lệ tóc trong vùng elip này. Việc xác định màu tóc
cũng được thực hiện bằng học mạng nơron RPROP .
1.3.2.3. Dùng các bộ lọc Gabor
Trang 19/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Các tác giả còn sử dụng bộ lọc Gabor để nhận ra các vùng mặt. Các sóng 2 chiều
Gabor (Gabor 2D wavelet) là 1 chứng cứ độc lập khác cho nhận ra khuôn mặt. Nó
cung cấp các tính chất đáp ứng tần số của ảnh. Biểu thức của hàm Gabor 2 chiều như
sau:
Trong đó: (x,y) là các điểm trong ảnh, σ
x
, σ
y
là kí hiệu của các tỉ lệ Gaussian dọc theo
các trục tương ứng, (x
o
,y
o
) là tọa độ tâm của hàm trong miền không gian, u
o
, v
o
là các

tần số góc.
Phân tách các thành phần thực và ảo trong hàm trên theo công thức: e

=cosφ + jsinφ,
ta được các hàm dạng sin và cosin với 2 tham số độc lập là: tỉ lệ σ và góc quay θ:
Trong thử nghiệm, các tác giả đã sử dụng 64 hàm Gabor với 4 hướng và 8 tỉ lệ (32
hàm cos và 32 hàm sin). Các tác giả đã sử dụng 5 mẫu học để nhận về các dấu hiệu
của hàm Gabor cho các tư thế đầu khác nhau:
Hình 1.7: Các hướng đầu khác nhau trong học dấu hiệu Gabor
Các hình chiếu Gabor trên mỗi ảnh được nhận về. Kết quả, ta có 5 tập các dấu hiệu,
mỗi tập cho 1 hình mặt trên. Vì tập hàm Gabor là 64, nên với mỗi hình mặt trên, ta có
64 kết quả trả về.
Áp dụng các bộ lọc Gabor lên ảnh vào, thu được 1 tập dấu hiệu. Sau đó, các tác giả sẽ
tính toán sự gần gũi của tập dấu hiệu thu được đó với 5 mô hình dấu hiệu thu được
trong quá trình học ở trên, lấy về giá trị lớn nhất và gán cho điểm ảnh đang tính đó.
Như vậy, mỗi điểm trong ảnh vào sẽ có một điểm số S
g
(x,y) thể hiện sự giống của nó
với khuôn mặt mô hình.
1.3.2.4. Tổng hợp các kết quả
Qua phân tích ảnh dựa trên một loạt các tham số như trên, tác giả tiến hành tổng hợp
các kết quả lại bằng 1 công thức, sau đó đưa ra 1 giá trị ngưỡng để quyết định xem
đó có phải là mặt hay không.
Quá trình thực hiện được cho trong sơ đồ sau:
Trang 20/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Hình 1.8: Sơ đồ biểu diễn phương pháp
1.3.2.5. Kết quả thực hiện
Trong quá trình học màu da mặt, các tác giả đã dùng đến hàng nghìn điểm màu da
mặt, và cũng 1 số lượng như vậy các điểm không phải là màu da mặt. Sau đây là 1 số

kết quả thử nghiệm:
Trang 21/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Hình 1.9: Một số ảnh kết quả của phương pháp. Từ trái sang phải: ảnh nhị phân,
ảnh kết quả với ngưỡng 0,7, ảnh kết quả với ngưỡng 0,8
Hình trên sử dụng giá trị cắt là 0,7, phát hiện được nhiều khuôn mặt hơn, nhưng lại
phát hiện nhầm 1 bàn tay góc phải dưới của ảnh. Ảnh dưới sử dụng ngưỡng cắt cao
hơn là 0,8, không phát hiện nhầm bàn tay đó, nhưng lại bỏ xót vài khuôn mặt.
Kết quả thực nghiệm cho tỉ lệ rất cao: 96%
1.3.2.6. Đánh giá
Phương pháp này có thể phát hiện được các khuôn mặt có kích thước và hướng da
dạng (mà không giả định trước kích thước và hướng khuôn mặt). Phương pháp cho
kết quả phát hiện rất tốt (96%).
Tuy nhiên, có thể nó dùng nhiều tiêu chí để xác định khuôn mặt nên có thể thời gian
sẽ lâu hơn các phương pháp khác một chút. Nhưng điều này có thể khắc phục bằng
đầu tư phần cứng, sử dụng các thiết bị có cấu hình mạnh, tốc độ cao, nên nó vẫn có
khả năng sử dụng được trong hệ thống thời gian thực.
1.3.3. Phương pháp sử dụng khoảng cách Hausdorff của Oliver Jesorsky,
Klaus J. Kirchberg và Robert W. Frischholz
Phương pháp này áp dụng trên ảnh xám, không áp dụng trên ảnh màu. Nhưng đó
không phải là hạn chế vì ta có thể chuyển từ ảnh màu sang ảnh xám dễ dàng. Ngay
từ đầu ta thấy nói đến khoảng cách Hausdorff. Có thể hiểu một cách nôm na, khoảng
cách Hausdorff là 1 độ đo cho biết sự giống nhau của 2 mô hình. Ta sử dụng nó để
xác định xem 1 vùng trong ảnh giống với 1 mô hình mặt đưa ra đến mức nào, để xác
định xem vùng ảnh đó có phải là mặt người hay không.
1.3.3.1. Khoảng cách Hausdorff
Cho 2 tập điểm:
A=
{ }
m

aaa ,...,,
21
B=
{ }
n
bbb ,...,,
21
Trang 22/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
Khi đó, khoảng cách Hausdorff được định nghĩa như sau:
H(A,B)=Max(h(A,B),h(B,A))
Trong đó:
h(A,B)=
||||minmax ba
Bb
Aa




h(A,B) được gọi khoảng cách Hausdorff trực tiếp từ A tới B.
||a-b|| là chuẩn của vector a-b. Có nhiều dạng chuẩn khác nhau, phổ biến là chuẩn
Ơclit, chính là căn bậc 2 của tổng bình phương các tọa độ.
Trong xử lý ảnh, người ta không áp dụng nguyên định nghĩa khoảng cách Hausdorff
này mà áp dụng 1 biến dạng của khoảng cách Hausdorff này (modified Hausdorff
distance – mod), công thức như sau:
h
mod
(A,B)=





Aa
Bb
ba
A
||)(||min
||
1
Trong đó: |A| là lực lượng của tập A, chính là số vector trong A.
Công thức này khác công thức chuẩn ở chỗ: công thức chuẩn lấy max trong 1 tập gía
trị, còn ở đây lấy trung bình cộng.
Thực nghiệm cho thấy rằng, trong xử lý ảnh, sử dụng công thức tính khoảng cách
Hausdorff thứ 2 cho kết quả tốt hơn.
1.3.3.2. Kĩ thuật phát hiện đối tượng dựa trên mô hình
Rucklidge đưa ra phương pháp phát hiện đối tượng trong ảnh số dựa vào khoảng cách
Hausdorff như sau:
Cho 2 tập vector 2 chiều A, B; trong đó A đại diện cho ảnh, còn B là đối tượng cần
phát hiện. Mục đích là tìm các tham số biến đổi p thuộc P sao cho khoảng cách
Hausdorff giữa đối tượng được biến đổi T
p
(B) và A là nhỏ nhất. Các biến đổi được
phép và không gian tham số P phụ thuộc vào từng ứng dụng cụ thể.
Khoảng cách h(A, T
p
(B)) được gọi là khoảng cách Hausdorff lùi, còn h(T
p
(B),A) gọi
là khoảng cách Hausdorff tiến.

Quá trình có thể được mô phỏng qua hình vẽ sau:
Hình 1.10: Ví dụ mô phỏng quá trình nhận ra đối tượng dựa trên mô hình
Trang 23/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da
1.3.3.3. Quá trình thực hiện phát hiện mặt người
Quá trình thực hiện gồm 2 pha: pha thô và pha tinh chỉnh. Mỗi pha đều gồm 2 bước:
• Xác định biên
• Xác định vùng – để ốp mô hình vào.
Xác định biên: sử dụng bộ lọc sobel. Sau lọc sử dụng 1 giá trị ngưỡng để đưa ảnh về
nhị phân.
Xác định vùng: từ ảnh nhị phân thu được ở trên, ta dê mô hình đi khắp ảnh, và xác
định vùng ảnh mà giống với mô hình nhất, tức là khoảng cách Hausdorff là nhỏ nhất.
Sự khác nhau giữa pha thô và pha tinh chỉnh là ở chỗ: pha thô dùng mô hình cả
khuôn mặt, còn ở pha tinh chỉnh, sau khi nhận được các vùng có khả năng là khuôn
mặt được xác định ở pha thô, thì sẽ sử dụng mô hình chi tiết hơn là mô hình mắt, để
quyết định xem vùng đó có phải là mặt không.
Quá trình được mô phỏng qua hình sau:
Hình 1.11: Quá trình phát hiện mặt người của phương pháp
AOI là viết tắt của Area of interested – vùng ảnh quan tâm.
1.3.4. Phương pháp dựa trên phân tích bó sóng (wavelet packet analysis) của
C. Garcia, G. Zikos, G. Tziritas
Theo lời giới thiệu của các tác giả, phương pháp mà các tác giả đưa ra là phương
pháp phát hiện tự động và nhanh các mặt người trong ảnh màu. Phương pháp không
giả định trước về số lượng, vị trí, hướng và kích thước các khuôn mặt trong ảnh.
Phương pháp có thể phát hiện tốt các khuôn mặt trên các nền ảnh phức tạp, cũng như
trong những điều kiện ánh sáng khác nhau.
Sơ lược về các bước của phương pháp như sau: Với mỗi ảnh đưa vào, đầu tiên, các
tác giả sử dụng các giá trị sắc tố da mặt để đưa ra các vùng trong ảnh có khả năng là
Trang 24/92
Xây dựng ứng dụng phát hiện mặt người dựa trên màu da

vùng mặt, gọi là các ứng cử viên vùng mặt. Sau đó, các công việc phân tích hình
dạng và phân tách các bó sóng được thực hiện trên mỗi ứng cử viên vùng mặt. Mỗi
vùng ứng cử viên này sẽ được biểu diễn như là 1 tập con của các ảnh được lọc chứa
các hệ số sóng. Các hệ số này mô tả bề mặt của mặt và một tập các dữ liệu thống kê
đơn giản được đưa ra trong trình tự tới hình thức cô đọng và các vector đặc trưng có
ý nghĩa. Sau đó, một độ đo xác suất tin cậy và hiệu quả, được suy ra từ khoảng cách
Bhattacharrya, được sử dụng để phân xác định xem các vùng ứng cử viên đó, vùng
nào là khuôn mặt, vùng nào không, dựa trên các vector đặc trưng thu được từ trên.
Sau đây ta sẽ đi vào cụ thể các khâu trong phương pháp.
1.3.4.1. Xác định các vùng có màu da mặt
Để xác định các vùng này, các tác giả tiến hành nghiên cứu màu da mặt trong các
không gian màu YCrCb và HSV. Khác với không gian màu RGB, biểu diễn màu sắc
như là tổ hợp của 3 màu cơ bản đỏ (Red), xanh lá cây (Green), xanh da trời (Blue);
các không gian màu YCrCb và HSV biểu diễn màu sắc theo quan điểm nhìn màu sắc
của con người.
Qua thực nghiệm (lấy mẫu các màu da mặt của nhiều chủng tộc người khác nhau, với
những điều kiện ánh sáng khác nhau), các tác giả thấy rằng, các màu biểu diễn màu
da con người chỉ chiếm 1 không gian rất nhỏ trong không gian màu YCrCb hoặc
HSV. Minh họa qua hình sau:
Hình 1.12: Sự phân bố các điểm màu da mặt trong không gian HSV và YCrCb
Ta thấy, trong không gian màu HSV, không gian màu da mặt có vẻ kém cô đọng hơn
so với YCrCb. Các tác giả từ kết quả thực nghiệm cũng đã tính ra công thức cho việc
xác định một màu có phải là màu da mặt hay không, như sau:
Trong không gian màu YCrCb:
Trang 25/92

×