-Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt. -Tìm hiểu về thư viện OpenCv, phần mềm EmguCv. -Nghiên cứu phương pháp trích chọn đặc trưng Eigenfaces. -Tìm hiểu các phương pháp xác định khuôn mặt (Face Detection). -Nghiên cứu phương pháp phân tích thành phần chính (Principal Component Analysis-PCA).
Trang 1TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
BỘ MÔN: TIN HỌC CÔNG NGHIỆP
ĐỒ ÁN MÔN HỌC
MÔN HỌC CÔNG NGHỆ PHẦN MỀM
Giáo viên hướng dẫn : Ths Phùng Thị Thu Hiền
Nhóm sinh viên : Trương Văn Khoan – DTK1151030245
Lớp : K47KMT01
Thái Nguyên – 2014
Trang 2Nhận xét của giáo viên hướng dẫn
Thái Nguyên, Ngày Tháng Năm 2014 Giáo Viên hướng dẫn (Ký ghi rõ họ tên) Nhận xét của giáo viên chấm
Thái Nguyên, Ngày Tháng Năm 2014
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
Trang 3MỤC LỤC
Mở đầu
1 Lý do chọn đề tài
2 Mục đích đề tài
3 Đối tượng và phạm vi nghiên cứu
Chương 1: Giới thiệu
1.1 Bài toán nhận dạng mặt người và những khó khăn………
1.1.1 Bài toán nhận dạng mặt người………
1.1.2 Những khó khăn của hệ thống nhận dạng khuôn mặt………
1.2 Tổng quan kiến trúc của một hệ thống nhận dạng mặt người………
1.2.1 Ngôn ngữ lập trình………
Chương 2: Tổng quan về xử lý ảnh 2.1 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh………
2.1.1 Xử lý ảnh là gì?
2.1.2 Các vấn đề cơ bản trong xử lý ảnh………
2.2 Một số khái niệm cơ bản………
2.2.1 Quan hệ giữa các điểm ảnh………
Tổng kết chương………
Chương 3: Làm quen với thư viện OpenCV 3.1 Giới thiệu về OpenCV………
3.1.1 OpenCV là gì? 3.1.2 Cấu trúc tổng quan………
3.2 Hướng dẫn sử dụng các thư viện của OpenCV………
Tổng kết chương………
Chương 4: Bài toán phát hiện và nhận dạng mặt người 4.1 Detection………
4.1.1 Bài toán xác định mặt người………
4.1.2 Hướng tiếp cận dựa trên tri thức (knowledge-based)………
4.1.3 Hướng tiếp cận dựa trên các đặc trưng không đổi (feature invariant)………
4.1.4 Hướng tiếp cận dựa trên phương pháp đối sánh mẫu (template matching)… 4.1.5 Hướng tiếp cận dựa trên diện mạo (appearance-based)………
4.2 Recognition-Sử dụng Eigenfaces 4.2.1 Thuật toán PCA và ứng dụng trong nhận dạng mặt người………
4.2.2 Đi tìm Eigenfaces………
4.2.3 So sánh khoảng cách-Compare Distance………
Tổng kết chương………
Trang 4Chương 5: Xây dựng chương trình-Mô phỏng
5.1 Xây dựng chương trình………
5.1.1 Phân tích………
5.2 Thiết kế hệ thống………
5.2.1 Xử lý ảnh đầu vào………
5.2.2 Phát hiện khuôn mặt trong ảnh………
5.2.3 Xử lý đầu ra………
5.2.4 Thiết kế cơ sở dữ liệu………
5.2.5 Thiết kế giao diện chương trình………
5.3 Một số kết quả thực nghiệm………
Tổng kết chương………
Kết Luận
Trang 5MỞ ĐẦU
1 Lý do chọn đề tài
Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là với những chiếc
điện thoại thông minh (smartphone) ngày càng hiện đại và được sử dụng phổ biến trong đời sống
con người đã làm cho lượng thông tin thu được bằng hình ảnh ngày càng tăng Theo đó, lĩnh vực
xử lý ảnh cũng được chú trọng phát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại
Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện
nay chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vân tay, nhận
dạng khuôn mặt…
Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử lý ảnh hiện
nay đó là nhận dạng khuôn mặt (Face Recognition) Như chúng ta đã biết, khuôn mặt đóng vai
trò quan trọng trong quá trình giao tiếp giữa người với người, nó mang một lượng thông tin giàu
có, chẳng hạn như từ khuôn mặt chúng ta có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái
cảm xúc, đặc biệt là xác định mối quan hệ với đối tượng (có quen biết hay không) Do đó, 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 Có rất nhiều phương pháp nhận dạng khuôn mặt để nâng
cao hiệu suất tuy nhiên dù ít hay nhiều những phương pháp này đang vấp phải những thử thách
về độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng của tham số môi trường
Bài toán Nhận diện khuôn mặt (Face Recognition) bao gồm nhiều bài toán khác nhau
như: phát hiện mặt người (face detection), đánh dấu (facial landmarking), trích chọn (rút) đặc
trưng (feature extration),gán nhãn, phân lớp (classification) Trong thực tế, nhận dạng khuôn
mặt người (Face Recognition) là một hướng nghiên cứu được nhiều nhà khoa học quan tâm,
nghiên cứu để ứng dụng trong thực tiễn Ở các trường đại học hàng đầu về Công Nghệ Thông
Tin như Massachusetts Institute of Technology (MIT), Carnegie Mellon University (CMU),
Standford, Berkeley và các công ty lớn như Microsoft, Apple, Google, Facebook đều có các
trung tâm về sinh trắc học (Biometrics Center) và nghiên cứu về nhận dạng khuôn mặt người và
nó đã trở thành một trong những lĩnh vực nghiên cứu chính cho đến nay Gần đây, công ty
Hitachi Kokusai Electric của Nhật mới cho ra đời một camera giám sát, có thể chụp ảnh và tìm
ra 36 triệu khuôn mặt khác có nét tương tự trong cơ sở dữ liệu chỉ trong vòng một giây
Có hai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên đặc trưng của
các phần tử trên khuôn mặt như biến đổi Gabor Wavelet và mạng Neural, SVM,…và nhận dạng
dựa trên xét tổng thể toàn khuôn mặt như phương pháp PCA, LDA, LFA Trong đó, PCA là
phương pháp trích rút đặc trưng nhằm giảm số chiều của ảnh tuy đơn giản nhưng mang lại hiệu
quả tốt Hệ thống hoạt động ổn định và có tính thích nghi cao khi dữ liệu đầu vào thay đổi nhiều
Trang 62 Mục đích của đề tài
- Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt
- Tìm hiểu về thư viện OpenCv, phần mềm EmguCv
- Nghiên cứu phương pháp trích chọn đặc trưng Eigenfaces
- Tìm hiểu các phương pháp xác định khuôn mặt (Face Detection)
- Nghiên cứu phương pháp phân tích thành phần chính (Principal Component
- Bộ thư viện xử lý ảnh OpenCv và công cụ hỗ trợ EmguCv
- Bộ CSDL chuẩn Yalefaces, ngoài ra có thêm bộ CSDL sinh viên tự thu thập
b) Phạm vi nghiên cứu:
- Tập trung tìm hiểu nhận dạng khuôn mặt (Face Recognition) chứ không chú trọng tìm
hiểu phát hiện khuôn mặt (Face Detection)
- Việc xử lý ảnh, nhận dạng khuôn mặt thỏa mãn các điều kiện:
Ánh sáng bình thường, ngược sáng, ánh sáng đèn điện (Với bộ CSDL tự thu thập)
Góc ảnh: Trực diện (frontal) hoặc góc nghiêng không quá 10o
Không bị che khuất (no occulusion)
Ảnh có chất lượng cao (high quality images)
Trang 7CHƯƠNG 1: GIỚI THIỆU
1.1 Bài toán nhận dạng mặt người và những khó khăn
1.1.1 Bài toán nhận dạng mặt người
Hệ thống nhận dạng mặt người là một hệ thống nhận vào là một ảnh hoặc một đoạn video
(một dòng các hình ảnh liên tục) Qua xử lý, tính toán hệ thống xác định được vị trí mặt người
(nếu có) trong ảnh và xác định là người nào trong số những người mà hệ thống đã được biết (qua
quá trình học) hoặc là người lạ.[1]
Hình 1 Hệ thống nhận dạng mặt người
Trang 81.1.2 Những khó khăn của hệ thống nhận dạng khuôn mặt [1]
Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ những năm 70 Tuy nhiên,
đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạt được những kết quả mong
muốn Chính vì thế, vấn đề này vẫn đang được nhiều nhóm trên thế giới quan tâm nghiên cứu
Khó khăn của bài toán nhận dạng mặt người có thể kể đến như sau:
a Tư thế chụp, góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc chụp
giữa camera và khuôn mặt Chẳng hạn như: chụp thẳng, chụp chéo bên trái 45o hay chụp chéo
bên phải 45o, chụp từ trên xuống, chụp từ dưới lên, v.v… Với các tư thế khác nhau, các thành
phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một phần hoặc thậm chí khuất hết
b Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưng như: râu mép,
râu hàm, mắt kính, v.v… có thể xuất hiện hoặc không Vấn đề này làm cho bài toán càng trở nên
khó hơn rất nhiều
c Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt con người có thể làm ảnh hưởng
đáng kể lên các thông số của khuôn mặt Chẳng hạn, cùng một khuôn mặt một người, nhưng có
thể sẽ rất khác khi họ cười hoặc sợ hãi, v.v…
d Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các khuôn
mặt khác
e Hướng của ảnh (pose variations): Các ảnh khuôn mặt có thể biến đổi rất nhiều với các
góc quay khác nhau của trục camera Chẳng hạn chụp với trục máy ảnh nghiêng làm cho khuôn
mặt bị nghiêng so với trục của ảnh
f Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng, về tính
chất camera (máy kỹ thuật số, máy hồng ngoại, v.v…), ảnh có chất lượng thấp ảnh hưởng rất
nhiều đến chất lượng ảnh khuôn mặt
g Aging condition: Việc nhận dạng ảnh mặt thay đổi theo thời gian còn là một vấn đề khó
khăn, ngay cả đối với khả năng nhận dạng của con người
h Các hệ thống cực lớn (very large scale systems): Các CSDL ảnh mặt được test bởi các
nhà nghiên cứu còn khá nhỏ (vài trăm tới vài chục nghìn ảnh mặt), tuy nhiên trên thực tế các
CSDL có thể rất lớn, ví dụ CSDL ảnh mặt của cảnh sát của một đất nước có thể chứa từ hàng
triệu tới hơn 1 tỉ ảnh…
1.2 Tổng quan kiến trúc của một hệ thống nhận dạng mặt người [1[2]]
Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lý sau:
1 Phát hiện khuôn mặt (Face Detection)
2 Phân đoạn khuôn mặt (Face Alignment hay Segmentation)
3 Trích chọn đặc trưng (Feature Extraction)
4 Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification)
Trang 9Hình 2 Các bước chính trong một hệ thống nhận dạng khuôn mặt
Phát hiện khuôn mặt dò tìm, định vị những vùng (vị trí) có thể là khuôn mặt xuất hiện
trong ảnh hoặc các frame video Các vùng này sẽ được tách riêng để xử lý Phân đoạn khuôn
mặt sẽ xác định vị trí mắt mũi, miệng và các thành phần khác của khuôn mặt và chuyển kết quả
này cho bước trích chọn đặc trưng Ở bước trích chọn đặc trưng, bằng một phương pháp trích
chọn đặc điểm nào đó (mẫu nhị phân cục bộ-Local Binary Pattern-LBP, Gabor wavelets…) sẽ
được sử dụng với ảnh mặt để trích xuất các thông tin đặc trưng cho ảnh từ các thông tin về các
thành phần trên khuôn mặt, kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng một vector đặc trưng
(feature vector) Những vecto đặc trưng này sẽ là dữ liệu đầu vào cho một mô hình đã được huấn
luyện trước để nhận dạng khuôn mặt (Face Recognition) hay phân lớp khuôn mặt (Face
Classifition), tức là xác định danh tính (identity) hay nhãn của ảnh-đó là ảnh của ai Ở bước nhận
dạng khuôn mặt (Face Recognition), thường thì phương pháp k-láng giềng gần (k-nearest
neighbor:kNN) sẽ được sử dụng
Bên cạnh những bước chính nêu trên, chúng ta còn có thể áp dụng thêm một số bước khác
như tiền xử lý, hậu xử lý nhằm làm tăng độ chính xác cho hệ thống Ví dụ, sau bước phát hiện
khuôn mặt, ta có thể thực hiện bước tiền xử lý (Preprocessing) bao gồm các bước căn chỉnh ảnh
(face image alignment) và chuẩn hóa ánh sáng (illumination normalization)
Do một số thông số như: tư thế khuôn mặt, độ sáng, điều kiện ánh sáng, v.v… phát hiện
khuôn mặt được đánh giá là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ
thống Tuy nhiên, trong phạm vi đồ án này, không tập trung tìm hiểu bước phát hiện khuôn mặt
mà chỉ tập trung chủ yếu vào bước nhận dạng khuôn mặt
Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tập huấn luyện (training set),
tập tham chiếu (reference set haygallery set) và tập để nhận dạng (probe set hay query set, đôi
khi còn gọi là test set) Trong nhiều hệ thống, tập training trùng với tập reference Tập training
gồm các ảnh được dùng để huấn luyện (hay học-learning), thông thường tập này được dùng để
sinh ra một không gian con (projection subspace) là một ma trận và phương pháp hay được sử
dụng là PCA (Principal Component Analysis), WPCA (Whitened PCA), LDA (Linear
Discriminant Analysis), KPCA (Kernel PCA) Tập reference gồm các ảnh đã biết danh tính được
chiếu (projected) vào không gian con ở bước training Bước training nhằm 2 mục đích: giảm số
chiều (dimension reduction) của các vector đặc điểm (feature vector) vì các vector này thường
Trang 10có độ dài khá lớn (vài nghìn tới vài trăm nghìn) nên nếu để nguyên thì việc tính toán sẽ rất rất
lâu, thứ hai là làm tăng tính phân biệt (discriminative) giữa các ảnh khác lớp (định danh khác
nhau), ngoài ra có thể làm giảm tính phân biệt giữa các ảnh thuộc về một lớp (tùy theo phương
pháp, ví dụ như Linear Discriminant Analysis LDA- còn gọi là Fisher Linear Discriminant
Analysis-Fisherface là một phương pháp làm việc với tập training mà mỗi đối tượng có nhiều
ảnh mặt ở các điều kiện khác nhau) Sau khi thực hiện chiếu tập reference vào không gian con,
hệ thống lưu lại kết quả là một ma trận với mỗi cột của ma trận là một vector tương ứng với ảnh
(định danh đã biết) để thực hiện nhận dạng (hay phân lớp) Nhận dạng (hay phân lớp) được thực
hiện với tập các ảnh probe, sau khi tiền xử lý xong, mỗi ảnh sẽ được áp dụng phương pháp trích
chọn đặc điểm (như với các ảnh thuộc tập training và reference) và được chiếu vào không gian
con Tiếp đến việc phân lớp sẽ dựa trên phương pháp k-NN, định danh của một ảnh cần xác định
sẽ được gán là định danh của ảnh có khoảng cách (distance) gần với nó nhất Ở đây cần lưu ý là
mỗi ảnh là một vector nên có thể dùng khái niệm hàm khoảng cách giữa hai vector để đo sự khác
biệt giữa các ảnh
1.2.1 Ngôn ngữ lập trình
Để giải quyết bài toán nhận dạng khuôn mặt sử dụng thư viện OpenCV, chúng ta có thể sử
dụng các ngôn ngữ lập trình như: NET C#, VB, IronPython, Java, C++…
Trong đồ án này ngôn ngữ lập trình được sử dụng là NET C#, viết trên phần mềm Visual
Studio 2013
Trang 11CHƯƠNG 2 : TỔNG QUAN VỀ XỬ LÝ ẢNH
2.1 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh
2.1.1 Xử lý ảnh (XLA) là gì ?
Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng
nhất Những năm trở lại đây với sự phát triển của phần cứng máy tính, XLA và đồ họa đã phát
triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống XLA và đồ họa đóng vai trò
quan trọng trong tương tác người máy.[3]
Quá trình XLA được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả
mong muốn Kết quả đầu ra của một quá trình XLA có thể là một ảnh “tốt hơn” hoặc một kết
luận
Hình 3 Quá trình xử lý ảnh
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng
cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và
nó có thể xem như một hàm n biến P(c1, c2, …, cn) Do đó, ảnh trong XLA có thể xem như ảnh
n chiều Sơ đồ tổng quát của một hệ thống XLA:
Hình 4 Các bước cơ bản trong một hệ thống xử lý ảnh
Trang 12Sơ đồ này bao gồm các phần sau[4]:
a Phần thu nhận ảnh (Image Acquisition)
Ảnh có thể nhận qua camera màu hoặc đen trắng Thường thì ảnh nhận qua camera là ảnh
tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh 25 dòng), cũng có loại camera
đã số hóa (như loại CCD-Change Coupled Device) là loại photodiot tạo cường độ sáng tại mỗi
điểm ảnh
Camera thường dùng là loại quét dòng; ảnh tạo ra có dạng hai chiều Chất lượng một ảnh
thu nhận được phụ thuộc vào thiết bị thu, môi trường (ánh sáng, thời tiết)
b Tiền xử lý (Image Processing)
Sau bộ thu nhận, ảnh có thể bị nhiễu, độ tương phản thấp nên cần đưa vào bộ tiền xử lý để
nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, nâng độ tương phản để làm
ảnh rõ, nét hơn
c Phân đoạn (Segmentation) hay phân vùng ảnh
Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích,
nhận dạng ảnh Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong bì thư cho mục đích phân
loại bưu phẩm, cần chia các câu, chữ, về địa chỉ hoặc tên người thành các từ, các chữ, các số
(hoặc các vạch) riêng biệt để nhận dạng Đây là phần phức tạp khó khăn nhất trong XLA và cũng
dễ gây lỗi, làm mất độ chính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công
đoạn này
d Biểu diễn ảnh (Image Representation)
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với
mã liên kết với các vùng lân cận Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc
trưng (Feature Selection) gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định
lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận
được Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng
ký tự giúp phân biệt ký tự này với ký tự khác
e Nhận dạng ảnh và nội suy ảnh (Image Recognition and Interpretation)
Nhận dạng ảnh là quá trình xác định ảnh Quá trình này thường thu được bằng cách so sánh
với mẫu chuẩn đã được học (hoặc lưu từ trước) Nội suy là phán đoán theo ý nghĩa trên cơ sở
nhận dạng Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể được nội suy thành
mã điện thoại Có nhiều cách phân loại ảnh khác nhau về ảnh Theo lý thuyết về nhận dạng, các
mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
- Nhận dạng theo tham số
- Nhận dạng theo cấu trúc
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong khoa học và
công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (Text),
nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người…
f Cơ sở tri thức (Knowledge Base)
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối, dung lượng
điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu Trong nhiều khâu xử lý và phân
Trang 13tích ảnh ngoài việc đơn giản hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta
mong muốn bắt chước quy trình tiếp nhận và XLA theo cách của con người Trong các bước xử
lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ con người Vì vậy, ở đây các
cơ sở tri thức được phát huy
g Mô tả (biểu diễn ảnh)
Từ hình 5, ảnh sau khi số hóa sẽ được lưu vào bộ nhớ, hoặc chuyển tiếp sang các khâu tiếp
theo để phân tích Nếu lưu trữ ảnh trực tiếp từ các ảnh thô, đòi hỏi dung lượng bộ nhớ cực lớn,
và không hiệu quả theo quan điểm ứng dụng và công nghệ Thông thường, các ảnh thô đó được
đặc tả (biểu diễn lại hay đơn giản là mã hóa) theo các đặc điểm của ảnh được gọi là các đặc trưng
ảnh (Image Features) như: biên ảnh (Boundary), vùng ảnh (Region) Một số phương pháp biểu
diễn thường dùng:
- Biểu diễn bằng mã chạy (Run-Length Code)
- Biểu diễn bằng mã xích (Chaine-Code)
- Biểu diễn bằng mã tứ phân (Quad-Tree Code)
Trên đây là các thành phần cơ bản trong các khâu XLA Trong thực tế, các quá trình sử
dụng ảnh số không nhất thiết phải qua hết các khâu đó, tùy theo đặc điểm ứng dụng Hình 5 cho
sơ đồ phân tích, XLA và lưu đồ thông tin giữa các khối một cách khá đầy đủ Ảnh sau khi số
hóa, được nén, lưu lại để truyền qua các hệ thống khác sử dụng hoặc xử lý tiếp theo Mặt khác,
ảnh sau khi số hóa có thể bỏ qua công đoạn nâng cao chất lượng (khi ảnh đủ chất lượng theo
một yêu cầu nào đó) để chuyển tới khâu phân đoạn hoặc bỏ tiếp khâu phân đoạn chuyển trực
tiếp tới khâu trích chọn đặc trưng Hình 5 cũng chia các nhánh song song như: nâng cao chất
lượng ảnh có hai nhánh phân biệt: nâng cao chất lượng ảnh (tăng độ sáng, độ tương phản, lọc
nhiễu) hoặc khôi phục ảnh (hồi phục lại ảnh thật khi ảnh gốc bị hỏng) v.v…
Hình 5 Sơ đồ phân tích, xử lý ảnh và lưu đồ thông tin giữa các khối
Trang 142.1.2 Các vấn đề cơ bản trong xử lý ảnh.[4]
2.1.2.1 Một số khái niệm cơ bản
Điểm ảnh (Picture Element)
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý được bằng
máy tính (số), ảnh cần phải được số hóa Số hóa ảnh là sự biến đổi gần đúng một ảnh liên tục
thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng (mức xám) Khoảng
cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa
chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel Trong
khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y)
Định Nghĩa: Điểm ảnh (Pixcel) là một phần tử của ảnh số tại tọa độ (x, y) với độ xám hoặc
màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho
mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh
thật Mỗi một phần tử trong ma trận được gọi là một phần tử ảnh
Độ phân giải của ảnh
Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một
ảnh số được hiển thị
Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn
thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ
đó chính là độ phân giải và được phân bố theo trục x và y trong không gian hai chiều
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là một lưới điểm
theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh (320*200) Rõ ràng, cùng màn
hình CGA 12 “ta nhận thấy mịn hơn màn hình CGA 17” độ phân giải 320*200 Lý do: cùng một
mật độ (độ phân giải) nhưng diện tích mà hình rộng hơn thì độ mịn (liên tục của các điểm) kém
hơn
Mức xám của ảnh
Một điểm ảnh (pixcel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và độ xám của
nó Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ thường dùng trong XLA
Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá
trị số tại điểm đó
Các thang mức xám thông thường: 16,32,64,128, 256 (Mức 256 là mức phổ dụng
Lý do: từ kỹ thuật máy tính dùng 1 byte (8bit) để biểu diễn mức xám: Mức xám dùng 1 byte
biểu diễn: 28 = 256, tức là từ 0 đến 255)
Ảnh đen trắng: Là ảnh có hai màu đen, trắng (không chứa mầu khác) với mức xám
ở các điểm ảnh có thể khác nhau
Ảnh nhị phân: Ảnh chỉ có hai mức đen trắng phân biệt, tức dùng 1 bit mô tả 21
mức khác nhau Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1
Ảnh màu: Trong khuôn khổ lý thuyết 3 màu (Red, Blue, Green) để tạo nên thế
giới màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó các giá trị màu: 28*3 = 224 ≈
16,7 triệu màu
Định nghĩa ảnh số
Trang 15Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật
2.2.1 Quan hệ giữa các điểm ảnh
a) Các lân cận của điểm ảnh (Image Neighbors)
- Giả sử có điểm ảnh p tại tọa độ (x, y) có 4 điểm lân cận gần nhất theo chiều đứng và
ngang (có thể coi như lân cận 4 hướng chính: Đông, Tây, Nam, Bắc)
{( x-1,y); (x, y-1); (x+1, y); (x, y+1)}= N4(p)
Trong đó, số 1 là giá trị logic; N4(p): tập 4 điểm lân cận của p
Hình 6 Lân cận các điểm ảnh của tọa độ (x, y)
- Các lân cận chéo: Các điểm lân cận chéo Np(P) (Có thể coi lân cận chéo là 4 hướng:
Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)
Np(P) = {(x+1,y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)}
- Tập kết hợp: N8(p) = N4(p) + Np(p) là tập hợp 8 lân cận của điểm ảnh p
- Chú ý: Nếu (x, y) nằm ở biên (mép) ảnh; một số điểm sẽ nằm ngoài ảnh
b) Các mối liên kết điểm ảnh
Các mối liên kết được xác định để xác định giới hạn (Boundaries) của đối tượng vật thể
hoặc xác định vùng trong một ảnh Một liên kết được đặc trưng bởi tính liền kề giữa các điểm
và mức xám của chúng
Giả sử V là tập các giá trị mức xám Một ảnh có các giá trị cường độ sáng từ thang mức
xám từ 32 đến 64 được mô tả như sau:
V = {32, 33, 34, …, 63, 64}
Có 3 loại liên kết
- Liên kết 4: Hai điểm ảnh p và q được nói là liên kết 4 với các giá trị cường độ sáng V
nếu q nằm trong một các lân cận của p, tức p thuộc N4(p)
- Liên kết 8: Hai điểm ảnh p và q nằm trong một các lân cận của p, tức q thuộc N8(p)
- Liên kết m (liên kết hỗn hợp): Hai điểm ảnh p và q với các giá trị cường độ sáng V được
nói là liên kết m nếu:
1 q thuộc N4(p) hoặc
2 q thuộc Np(p)
c) Đo khoảng cách giữa các điểm ảnh
Định nghĩa: Khoảng cách D(p) giữa hai điểm ảnh p tọa độ (x, y), q tọa độ (s, t) là hàm
khoảng cách (Distance) hoặc Metric nếu:
Trang 161 D(p,q) ≥ 0 (Với D(p,q) = 0 nếu và chỉ nếu p = q)
2 D(p,q) = D (p, q)
3 D(p, z) ≤ D(p,q) + D(q, z); z là một điểm ảnh khác
Khoảng cách Euclide: Khoảng cách Euclide giữa hai điểm ảnh p(x, y) và q(s, t) được định
nghĩa như sau:
De(p,q) = [(x - s) 2 + (y – t) 2 ] 1/2
Khoảng cách khối: Khoảng cách D 4(p,q) được gọi là khoảng cách khối đồ thị (City-Block
Distance) và được xác định như sau:
D4(p,q) = |x - s| + |y - t|
Giá trị khoảng cách giữa các điểm ảnh r: giá trị bán kính r giữa điểm ảnh từ tâm điểm ảnh
đến tâm điểm ảnh q khác Ví dụ: Màn hình CGA 12’’ (12’’*2,54cm = 30,48cm = 304,8mm) độ
phân giải 320*200; tỷ lệ 4/3 (chiều dài/chiều rộng) Theo định lý Pitago về tam giác vuông,
đường chéo sẽ láy tỷ lệ 5 phần (5/4/3: đường chéo/chiều dài/chiều rộng màn hình); khi đó độ dài
thật là (305/244/183) chiều rộng màn hình 183mm ứng với màn hình CGA 200 điểm ảnh theo
chiều dọc Như vậy, khoảng cách điểm ảnh lân cận của CGA 12’’ là ≈ 1mm
Khoảng cách D8(p,q) còn gọi là khoảng cách bàn cờ (Chess-Board Distance) giữa điểm
ảnh p, q được xác định như sau: D8(p,q) = max (|x – s|, |y – t|)
TỔNG KẾT CHƯƠNG Các kiến thức cần nắm được:
- Khái niệm xử lý ảnh: Quá trình XLA được xem như là quá trình thao tác ảnh đầu
vào nhằm cho ra kết quả mong muốn Kết quả đầu ra của một quá trình XLA có thể
là một ảnh “tốt hơn” hoặc một kết luận
- Các bước cơ bản trong một hệ thống XLA
o Phần thu nhận ảnh (Image Acquisition)
o Tiền xử lý (Image Processing)
o Phân đoạn (Segmentation)
o Biểu diễn ảnh (Image Representation)
o Nhận dạng ảnh và nội suy ảnh (Image Recognition and Interpretaion)
o Cơ sở tri thức (Knowledge Base)
o Mô tả (biểu diễn ảnh)
- Các khái niệm cơ bản trong XLA:
o Điểm ảnh
o Độ phân giải của ảnh
o Mức xám của ảnh
o Ảnh số
- Quan hệ giữa các điểm ảnh
o Các lân cận của điểm ảnh (Image Neighbors)
o Các mối liên kết điểm ảnh
o Đo khoảng cách giữa các điểm ảnh
Trang 17CHƯƠNG 3: LÀM QUEN VỚI THƯ VIỆN OPEN CV
Giới thiệu về OpenCV
Hướng dẫn cách sử dụng
Tổng kết chương
3.1 Giới thiệu về OpenCV. [5]
3.1.1 OpenCV là gì?
OpenCv (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy
với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA, và các vấn đề liên quan tới
thị giác máy OpenCv được thiết kế một cách tối ưu, sử dụng tối đa mạnh của các dòng chip đa
lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó thể đủ
nhanh cho các ứng dụng thông thường
OpenCv là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross-platform),
nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS… Việc sử dụng thư viện
OpenCv tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD do đó bạn có thể sử
dụng thư viện này một cách miễn phí cho các mục đích phi thương mại lẫn thương mại
Dự án về OpenCv được khởi động từ những năm 1999, đến năm 2000 nó được giới thiệu
trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy nhiên bản
OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm 2008 bản 1.1
(pre-release) mới được ra đời Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra đời (thường gọi là
phiên bản 2.x), phiên bản này có giao diện của C++ (khác với phiên bản trước có giao diện của
C) và có nhiều điểm khác biệt so với phiên bản thứ nhất
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởi Willow Garage,
một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot Cho đến nay, OpenCV vẫn là thư
viện mở, được phát triển bởi nguồn quỹ không lợi nhuận (none-profit foundation) và được sự
hưởng ứng rất lớn của cộng đồng
3.1.2 Cấu trúc tổng quan..[8]
Cấu trúc tổng quan của OpenCv bao gồm 5 phần chính Hình vẽ dưới đây, mô tả 4 trong 5
thành phần đó
Trang 18Hình 7 Các thành phần của thư viện OpenCV
Phần CV bao gồm các thư viện cơ bản về XLA và các giải thuật về thị giác máy tính MLL
là bộ thư viện về các thuật toán học máy, bao gồm rất nhiều bộ phân cụm và phân loại thống kê
HighGUI chứa đựng những thủ tục vào ra, các chức năng về lưu trữ cũng như đọc các file ảnh
và video Phần thứ 4, Cxcore chứa đựng các cấu trúc dữ liệu cơ bản (ví dụ như cấu trúc XML,
các cây dữ liệu…) Phần cuối cùng là CvAux, phần này bao gồm cá thư viện cho việc phát hiện,
theo dõi và nhận dạng đối tượng (khuôn mặt, mắt…)
3.2 Hướng dẫn sử dụng các thư viện của OpenCV
Để sử dụng các thư viện của OpenCV, có thể tải về một bản cài đặt OpenCV bằng cách
truy cập địa chỉ: http://sourceforge.net/projects/opencvlibrary/ để tải về phiên bản mới nhất Sau
khi tải về, tiến hành cài đặt bình thường, với thư mục mặc định là C:\Emgu Sau đó, cần tiến
hành tùy chỉnh để có thể làm việc với OpenCV qua hai IDE thông dụng là Microsoft Visual
Studio hoặc Eclipse CDT Tuy nhiên, việc tùy chỉnh này có thể gây khó khăn cho một số người
mới bắt đầu, vì vậy, ở đây trình bày một cách khác để có thể sử dụng các thư viện của OpenCV
Đó chính là sử dụng gói phần mềm EmguCV
EmguCV là một gói bao bên ngoài (wrapper) thư viện xử lý ảnh OpenCV của Intel, cho
phép lập trình viên có thể gọi các hàm của OpenCV từ trong các ngôn ngữ NET C#, VB,
IronPython… Gói này có thể được biên dịch trong Mono và chạy trên Linux / Mac OS X
Việc sử dụng và lập trình với EmguCV cũng rất đơn giản, chỉ cần thêm các file DLL trong
thư mục cài đặt của EmguCV vào chương trình C# thì có thể gọi tất cả các thuộc tính của
EmguCV
Trang 19 Cấu trúc của EmguCV gồm hai lớp cơ bản:
o Lớp thứ nhất là các cấu trúc, thuộc tính, và các hàm dùng để xử lý hình ảnh, lấy ảnh…
o Lớp thứ hai là lớp cấp cao, với nhiều tính chất phức tạp dùng để nhận dạng hay xử lý
để tải về bản cài đặt của EmguCV
Trang 20a) Hướng dẫn cài đặt EmguCV.[6]
Bước 1: Cài đặt EmguCV 2.4.9
- Tải phiên bản EmguCV 2.4.9 Cài đặt vào thư mục mặc định tại: C:\ không nên thay
đổi đường dẫn, sử dụng đường dẫn mặc định
“C:\Emgu\emgucv-windows-universal-gpu2.4.9.1847”.
- Chọn tất cả các tùy chọn để cài đặt đầy đủ gói
Trang 21Bước 2: Thiết lập biến môi trường
- Thiết lập 3 đường dẫn sau trong biến người dùng và hệ thống
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin;
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin\x64;
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin\x86;
Bước 3: Cấu Hình Visual Studio 2010 (Tương tự với bản 2013)
1 Tạo một project Window Application mới, đặt tên là “Two Layer”
2 Trong Solution Explorer, click phải chuột vào References, chọn Add Reference…
Trang 223 Chọn tab Browser, duyệt tới thư mục:
“C:\Emgu\emgucv-windows-universal-gpu2.4.9.1847\bin” Chọn 3 file: “Emgu.CV.dll”,”Emgu.CV.UI.dll”,”Emgu.Util.dll”
Sau đó click vào OK
4 Các tham chiếu hiển thị trong Solution Explorer
Trang 235 Tiếp theo, khai báo các thư viện OpenCV mà chúng ta sử dụng trong mỗi class:
b) Thêm Control của EmguCV vào Toolbox
Trong Toolbox, click phải chuột vào tab bất kì, chọn Add Tab, gõ tên EmguCV > Enter
Click chuột phải lên tab EmguCV vừa tạo, chọn Choose Items…, sau khi hộp thoại hiển
thị, chọn tab NET Framework Components Click vào nút Browse, duyệt đến thư mục:
C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin
Chọn tệp tin Emgu.CV.UI.dll Nhấn Open Trong ô Filter, gõ Emgu Danh sách các
control của thư viện OpenCV sẽ hiển thị ra, chọn tất cả rồi nhấn OK
Sử dụng Control:
Chọn tab EmguCV vừa tạo, chọn control cần sử dụng, kéo thả vào form Đặt thuộc tính
Name và set Text cho control, rồi sử dụng bình thường như các control khác
Trang 24c) Một số ví dụ
- Khai báo biến chứa ảnh:
private Image<Bgr, Byte> MyImage;
Image là một lớp ảnh trong thư viện OpenCV, trong đó Color (Bgr) là hệ màu, Depth
(Byte) là độ sâu màu
Dòng bên trên nghĩa là khai báo đối tượng MyImage, là một đối tượng thuộc lớp ảnh, có hệ
màu là RGN (red, green, blue) và độ sâu màu là Byte, tức là giá trị mỗi pixel nằm trong đoạn [0,
255]
- Đối với ảnh xám (grayscale), ta khai báo như sau:
private Image<Gray, Byte> MyImage;
Trong đó giá trị mỗi pixel là độ sáng tại pixel đó, với 0 là tối (đen), và 255 là sáng nhất
(trắng)
- Viết code cho sự kiện bấm nút sẽ hiển thị hộp thoại chọn ảnh, sau đó hiển thị ảnh vừa
chọn được lên ImageBox:
private void btnLoadImage_Click(object sender, EventArgs e)
{
// khai báo đối tượng OpenFileDialog để chuẩn bị mở hộp thoại //duyệt
file
OpenFileDialog OpenFile = new OpenFileDialog();
// thì nạp file ảnh lên control pictureBox1
if (OpenFile.ShowDialog() == DialogResult.OK)
{
Image<Bgr, Byte> MyImage = new Image<Bgr, Byte>(OpenFile.FileName);
pictureBox1.Image = MyImage.ToBitmap();
}
}
Trang 25 TỔNG KẾT CHƯƠNG 3 Nội dung chương 3 bao gồm các nội dung chính như sau:
- Giới thiệu về bộ thư viện xử lý ảnh-OpenCv
- Giới thiệu, hướng dẫn cách cài đặt, sử dụng phần mềm EmguCv-là một phần mềm hỗ trợ
giúp người dùng có thể sủ dụng bộ thư viện OpenCV một cách dễ dàng
- Hướng dẫn cách sử dụng bộ thư viện OpenCv trong Visual Studio (với hình minh họa là
Visual Studio 2010)
- Hướng dẫn cách lấy các Control của thư viện OpenCv thêm vào Toolbox
- Một số đoạn code ví dụ, sử dụng thư viện OpenCv trong chương trình
Trang 26
CHƯƠNG 4: BÀI TOÁN PHÁT HIỆN VÀ NHẬN DẠNG MẶT NGƯỜI
Detection
Recognition
4.1 Face Detection
4.1.1 Bài toán xác định mặt người
Nhận dạng khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác định các
vị trí và các kích thước của các khuôn mặt người trong các ảnh bất kỳ (ảnh kỹ thuật số) nếu có
Kỹ thuật này nhận biết các đặc trưng của khuôn mặt và bỏ qua những thứ khác, như: tòa nhà,
cây cối, cơ thể [7]
Có nhiều nghiên cứu tìm phương pháp xác định khuôn mặt người, từ ảnh xám đến ảnh
màu Dựa vào tính chất của các phương pháp xác định mặt người trên ảnh, các phương pháp này
được chia thành bốn loại chính, tương ứng với bốn hướng tiếp cận khác nhau
1 Hướng tiếp cận dựa trên tri thức (knowledge-based)
2 Hướng tiếp cận dựa trên các đặc trưng không đổi (feature invariant)
3 Hướng tiếp cận dựa trên phương pháp đối sánh mẫu (Template matching)
4 Hướng tiếp cận dựa trên diện mạo (appearance-based)
Ngoài ra cũng có rất nhiều nghiên cứu mà phương pháp xác định mặt người không chỉ dựa
vào một hướng mà có liên quan đến nhiều hướng Trong phạm vi đồ án môn học này, chỉ giới
thiệu tổng quan các hướng tiếp cận để xác định khuôn mặt người trong ảnh
4.1.2 Hướng tiếp cận dựa trên tri thức (knowledge-based) [7]
Trong hướng tiếp cận này, các luật sẽ phụ thuộc rất lớn vào tri thức của những tác giả
nghiên cứu về bài toán xác định khuôn mặt người Đây là hướng tiếp cận dạng top-down Dễ
dàng xây dựng các luật cơ bản để mô tả các đặc trưng của khuôn mặt và các quan hệ tương ứng
Ví dụ, một khuôn mặt thường có hai mắt đối xứng nhau qua trục thẳng đứng ở giữa khuôn mặt
và có một mũi, một miệng
Hình 9 Nhận dạng dựa trên tri thức
Trang 27Một vấn đề khá phức tạp khi dùng hướng tiếp cận này là làm sao chuyển từ tri thức con
người sang các luật một cách hiệu quả Nếu các luật này quá chi tiết thì khi xác định có thể xác
định thiếu các khuôn mặt có trong ảnh, vì những khuôn mặt này không thể thỏa mãn tất cả các
luật đưa ra Nhưng các luật tổng quát quá thì có thể chúng ta sẽ xác định nhầm một vùng nào đó
trên thực tế không phải là khuôn mặt nhưng lại xác định là khuôn mặt Và cũng khó khăn mở
rộng yêu cầu từ bài toán để xác định các khuôn mặt có nhiều tư thế khác nhau
Một số nghiên cứu áp dụng phương pháp này từ rất sớm như: Kanade 1973, G Yang 1994
và Kotropoulos 1997.[1]
4.1.3 Hướng tiếp cận dựa trên các đặc trưng không đổi (feature invariant)
Đây là hướng tiếp cập theo kiểu bottom-up Các tác giả cố gắng tìm các đặc trưng không
thay đổi của khuôn mặt người để xác định khuôn mặt người Dựa trên nhận xét thực tế, con
người dễ dàng nhận biết các khuôn mặt và các đối tượng trong các tư thế khác nhau và điều kiện
ánh sáng khác nhau, thì phải tồn tại các thuộc tính hay đặc trưng không thay đổi Có nhiều nghiên
cứu đầu tiên xác định các đặc trưng khuôn mặt rồi chỉ ra có khuôn mặt trong ảnh hay không
Các đặc trưng như lông mày, mắt, mũi, miệng, và đường viền của tóc được trích bằng phương
pháp xác định cạnh Trên cơ sở các đặc trưng này, xây dựng một mô hình thống kê để mô tả
quan hệ của các đặc trưng này và xác định sự tồn tại của khuôn mặt trong ảnh Một vấn đề của
thuật toán theo hướng tiếp cận này đó là cần phải điều chỉnh cho phù hợp điều kiện ánh sáng,
nhiễu, và bị che khuất Đôi khi bóng của một khuôn mặt sẽ tạo thêm cạnh mới, mà cạnh này lại
rõ ràng hơn cạnh thật sự của khuôn mặt, gây ra sự nhầm lẫn khi xác định các khuôn mặt
Các công trình sử dụng hướng tiếp cận này có thể kể như: K C Yow và R Cipolla 199,
T K Leung 1995.[1]
4.1.4 Hướng tiếp cận dựa trên phương pháp đối sánh mẫu (Template matching)
Trong phương pháp đối sánh mẫu, các mẫu chuẩn của khuôn mặt (thường là khuôn mặt
được chụp thẳng) sẽ được xác định trước hoặc xác định các tham số thông qua một hàm Từ một
ảnh đưa vào, tính các giá trị tương quan so với các mẫu chuẩn về đường viền khuôn mặt, mắt,
mũi và miệng Thông qua các giá trị tương quan này mà các tác giả quyết định có hay không tồn
tại khuôn mặt trong ảnh Hướng tiếp cận này có lợi thế là rất dễ cài đặt, nhưng không hiệu quả
khi tỷ lệ, tư thế và hình dáng thay đổi Nhiều độ phân giải, đa tỷ lệ, các mẫu con và các mẫu biến
dạng được xem xét thành bất biến về tỷ lệ và hình dáng
I.Craw 1992 đã áp dụng một mẫu cứng trong khi A Lanitis 1995 sử dụng một mẫu có thể
biến dạng trong bước phát hiện khuôn mặt.[1]
Trang 28Hình 10 Nhận dạng dựa trên phương pháp đối sánh mẫu
4.1.5 Hướng tiếp cận dựa trên diện mạo (appearance-based)
Trái ngược hẳn với hướng tiếp cận dựa trên đối sánh mẫu, các mô hình (hay các mẫu) được
học từ một tập ảnh huấn luyện trước đó Sau đó hệ thống (mô hình) sẽ xác định khuôn mặt người
Do phương pháp này thường dùng một mô hình máy học nên còn được gọi là phương pháp dựa
trên máy học (machine learning-based)
Hình 11 Tập ảnh dùng để huấn luyện mặt người
Sau đó hệ thống sẽ tồng hợp tất cả các đặc tinh của khuôn mặt con người như: mắt, mũi,
miệng, thành một vector riêng
Có nhiều mô hình máy học được áp dụng trong hướng tiếp cận này: Eigenface (M.Turk
và A Pentland 1991), Mô hình dựa trên phân phối (K K Sung and T Poggio 1998) Mjang
Neural (H Rowley 1998), Support Vector Machine (E Osuna et al 1997) Phân lớp Bayes (H
Schneiderman và T Kanade 1998) Mô hình Markov ẩn (A Rajagopalan et al 1998) và các mô
hình tăng cường (Adaboost của P Viola và M Jones 2001; FloatBoost do Stan Z Li và Zhen
Qiu Zhang 2004).[1]
Trên đây là giới thiệu tổng quan bốn hướng tiếp cận để xác định khuôn mặt người trong
ảnh và trong đồ án này, hướng tiếp cận dựa trên diện mạo (appearance-based) được lựa chọn
để thực hiện phát hiện khuôn mặt người trong ảnh
Trang 294.2 RECOGNITION-SỬ DỤNG EIGENFACES.[9][10]
Eigen Faces là phương pháp áp dụng trực tiếp phép phân tích các thành phần chính PCA,
nó đã được áp dụng rất nhiều vào biểu diễn, phát hiện và nhận dạng mặt Ưu điểm của phương
pháp này là biểu diễn được toàn bộ ảnh và có độ nén rất tốt (loại bỏ nhiễu và dư thừa)
Hình 12 Sơ đồ khối trích chọn đặc trưng sử dụng Eigen Faces
4.2.1 Thuật toán PCA và ứng dụng trong nhận dạng mặt người
a) Giới thiệu chung về thuật toán
Phân tích thành phần chính (Principal Coponent Analysis) gọi tắt là PCA là một thuật
toán được sử dụng để tạo ra một ảnh mới từ ảnh ban đầu Ảnh mới này có kích thước nhỏ hơn
nhiều so với ảnh ban đầu nhưng vẫn mang những đặc trưng cơ bản nhất của ảnh cần nhận dạng
PCA không cần quan tâm đến việc tìm ra các đặc điểm cụ thể của thực thể cần nhận dạng
và mối quan hệ giữa các đặc điểm đó Tất cả các chi tiết đó đều được thể hiện ở ảnh mới được tạo
ra từ PCA
Ưu điểm của phương pháp PCA:
Tìm được các đặc tính tiêu biểu của đối tượng cần nhận dạng mà không cần phải
xác định các thành phần và mối quan hệ giữa các thành phần đó
Thuật toán có thể thực hiện tốt với các ảnh có độ phân giải cao, do PCA sẽ thu gọc
ảnh thành một ảnh có kích thước nhỏ hơn
PCA có thể kết hợp với các phương pháp khác như mạng Nổn, Support Vector
Machine… để mang lại hiệu quả nhận dạng cao hơn