TRƯỜNG ĐẠI HỌC TRẦN ĐẠI NGHĨA
KHOA CÔNG NGHỆ THÔNG TIN
TRẦN ĐÌNH SƠN
NGHIÊN CỨU THUẬT TOÁN LDA MỜ VÀ ỨNG
DỤNG NHẬN DIỆN KHUÔN MẶT
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
TP.HỒ CHÍ MINH, THÁNG
NĂM 2020
TRƯỜNG ĐẠI HỌC TRẦN ĐẠI NGHĨA
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI:
NGHIÊN CỨU THUẬT TOÁN LDA MỜ VÀ ỨNG
DỤNG NHẬN DIỆN KHUÔN MẶT
Sinh viên thực hiện : TRẦN ĐÌNH SƠN
Lớp
: 15DDS0503330
Giáo viên hướng dẫn : PHẠM VĂN SÁNG
TP.HỒ CHÍ MINH, THÁNG NĂM 2020
Nhận xét của giáo viên hướng dẫn
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
...........................................................................................................................................
.........................................................................................................................................
TP.HCM, Ngày
Tháng
Năm 2020
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
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
TP.HCM, Ngày Tháng Năm 2020
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
MỤC LỤC
Trang
MỞ ĐẦU........................................................................................................................... 1
1.
Lý do chọn đề tài.....................................................................................................1
2.
Mục đích của đề tài..................................................................................................2
3.
Đối tượng và phạm vi nghiên cứu đề tài................................................................2
CHƯƠNG 1: GIỚI THIỆU.............................................................................................3
1.1. Bài toán nhận dạng mặt người và những khó khăn..............................................3
1.1.1.
Bài toán nhận dạng khuôn mặt người...............................................................3
1.1.2.
Những khó khăn của hệ thống nhận dạng khuôn mặt.......................................3
1.2. Tổng quan kiến trúc của một hệ thống nhận dạng mặt người.............................4
1.3. Ngôn ngữ lập trình..................................................................................................6
CHƯƠNG 2 : TỔNG QUAN VỀ XỬ LÝ ẢNH.............................................................7
2.1. Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh.......................................................7
2.2. Một số khái niệm cơ bản.......................................................................................10
2.3. Quan hệ giữa các điểm ảnh...................................................................................11
TỔNG KẾT CHƯƠNG 2..............................................................................................13
CHƯƠNG 3: LÀM QUEN VỚI THƯ VIỆN OPEN CV.............................................14
3.1. Giới thiệu về OpenCV...........................................................................................14
3.1.1.
OpenCV là gì?................................................................................................14
3.1.2.
Cấu trúc tổng quan..........................................................................................14
3.2. OpenCV trong nhận dạng khuôn mặt..................................................................15
3.2.1.
Giới thiệu........................................................................................................15
3.2.2.
Làm thế nào để xử lý trước ảnh mặt để nhận diện khuôn mặt:........................17
3.3. Hướng dẫn sử dụng các thư viện của OpenCV....................................................21
TỔNG KẾT CHƯƠNG 3..............................................................................................28
CHƯƠNG 4: BÀI TOÁN PHÁT HIỆN VÀ NHẬN DẠNG MẶT NGƯỜI...............29
4.1. Face Detection........................................................................................................29
4.1.1.
Bài toán xác định mặt người...........................................................................29
4.1.2.
Hướng tiếp cận dựa trên tri thức (knowledge-based)......................................29
4.1.3.
Hướng tiếp cận dựa trên các đặc trưng không đổi...........................................30
4.1.4.
Hướng tiếp cận dựa trên phương pháp đối sánh mẫu......................................30
4.1.5.
Hướng tiếp cận dựa trên diện mạo (appearance-based)...................................31
4.2. Total error of classification -TEC.........................................................................32
4.2.1.
Thuật toán LDA (Linear Discriminant Analysis)............................................33
4.2.1.1. Giới thiệu chung về thuật toán...............................................................33
4.2.1.2. Ý tưởng cơ bản........................................................................................33
4.2.1.3. Xây dựng hàm mục tiêu...........................................................................34
4.2.1.4. Nghiệm của bài toán tối ưu.....................................................................36
4.2.1.5. Tìm hiểu them về phương sai (covariance)............................................36
4.2.2.
Thuật toán LDA cho multi-class classification problems................................37
4.2.2.1. Xây dựng hàm mất mát...........................................................................38
4.2.2.2. Hàm mất mát cho multi-class LDA.........................................................40
4.2.3.
Model LDA.....................................................................................................40
4.2.3.1. LDA giảm thiểu khối lượng tính toán.....................................................41
4.2.3.2. Làm thế nào để giảm chiều dữ liệu.........................................................41
4.2.3.3. Lý thuyết về model LDA..........................................................................42
CHƯƠNG 5: XÂY DỰNG CHƯƠNG TRÌNH - MÔ PHỎNG..................................46
5.1. Phân Tích Thiết Kế Hệ Thống..............................................................................46
5.1.1.
Sơ đồ use-case................................................................................................46
5.1.2.
Mô Hình Sequence diagram............................................................................47
5.1.2.1. Mô hình đăng ký đăng nhập hệ thống....................................................47
5.1.2.2. Mô hình chức năng nhận diện camera...................................................47
5.1.2.3. Chức năng thông báo, chỉnh sửa danh sách điểm danh và cho các bộ
phận.........................................................................................................48
5.1.3.
Sơ đồ thực thể kết hợp....................................................................................48
5.1.4.
Cấu trúc bảng và kiểu dữ liệu thuộc tính.........................................................49
5.1.5.
Thiết kế cơ sở dữ liệu......................................................................................50
5.2. Thiết Kế Giao Diện................................................................................................51
5.2.1.
Giao diện đăng nhập.......................................................................................51
5.2.2.
Giao diện chính của phần mềm.......................................................................52
5.2.3.
Giao diện thêm sinh viên................................................................................52
5.2.4.
Giao diện điểm danh.......................................................................................53
5.2.5.
Giao diện tra cứu thông tin điểm danh............................................................53
5.3. Một số thư viện hỗ trợ...........................................................................................54
5.4. Thiết kế hệ thống:..................................................................................................54
5.4.1.
Lấy các vectơ riêng tạo thành không gian riêng..............................................54
5.4.2.
Nhận hoặc đặt nhãn cho hình ảnh đào tạo tương ứng.....................................54
5.4.3.
Nhận hoặc đặt ngưỡng khoảng cách riêng......................................................55
5.4.4.
Nhận hình ảnh trung bình...............................................................................55
5.4.5.
Nhận các giá trị đặc trưng của mỗi hình ảnh đào tạo......................................55
5.4.6.
Tạo một trình nhận dạng đối tượng bằng cách sử dụng dữ liệu và tham số
truyền.............................................................................................................. 55
5.4.7.
Tạo một trình nhận dạng đối tượng bằng cách sử dụng dữ liệu và thông số
truyền cụ thể...................................................................................................56
5.4.8.
Tính toán các hình ảnh đặc trưng cho hình.....................................................56
5.4.9.
Phân rã hình ảnh dưới dạng các giá trị riêng...................................................57
5.4.10. Với giá trị eigen, tạo lại hình ảnh được chiếu.................................................57
5.4.11. Nhận khoảng cách giữa eigen Euclid và mọi hình ảnh khác trong cơ sở dữ
liệu.................................................................................................................. 58
5.4.12. Cho đối tượng cần kiểm tra, tìm đối tượng tương tự nhất trong cơ sở dữ liệu,
trả về chỉ mục và khoảng cách riêng...............................................................58
5.4.13. Cố gắng nhận ra hình ảnh và trả lại nhãn của nó.............................................59
CHƯƠNG 6: ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN...........................60
6.1. Đánh giá kết quả....................................................................................................60
6.1.1.
Kết quả đạt được.............................................................................................60
6.1.2.
Việc chưa hoàn thành......................................................................................60
6.2. Hướng phát triển...................................................................................................60
DANH MỤC TÀI LIỆU THAM KHẢO......................................................................61
LỜI CẢM ƠN
Trước tiên em xin được bày tỏ sự trân trọng và lòng biết ơn đối với thầy
Phạm Văn Sáng. Trong suốt thời gian học và làm đồ án tốt nghiệp, thầy đã dành rất
nhiều thời gian quý báu để tận tình chỉ bảo, hướng dẫn, định hướng cho em thực
hiện đồ án.
Em xin được cảm ơn các thầy cô giáo Trường Đại học Trần Đại Nghĩa đã
giảng dạy trong quá trình học tập, thực hành, làm bài tập, giúp em hiểu thấu đáo
hơn các nội dung học tập và những hạn chế cần khắc phục trong việc học tập,
nghiên cứu và thực hiện bản đồ án này.
Em xin cảm ơn các bạn bè và nhất là các thành viên trong gia đình đã tạo
mọi điều kiện tốt nhất, động viên, cổ vũ trong suốt quá trình học tập và đồ án
tốt nghiệp.
TP.HCM, ngày……tháng……năm 2020.
Sinh viên
TRẦN ĐÌNH SƠN
MỞ ĐẦ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
1
PCA, LDA, LFA . Trong đó, LDA 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.
2.
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 phân biệt tuyến tính (Linear
Discriminant Analysis - LDA).
3.
Đối tượng và phạm vi nghiên cứu đề tài.
a) Đối tượng:
- Các phương pháp, thuật toán phục vụ cho việc phát hiện và nhận dạng
khuôn mặt người trên ảnh.
- 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).
2
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 khuôn 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ạ.
Hình 1. Hệ thống 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.
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.
3
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.
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).
Hình 2. Các bước chính trong một hệ thống nhận dạng khuôn mặt.
4
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 có độ 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à
5
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.3.
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 2015
6
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.
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.
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.
Sơ đồ này bao gồm các phần sau:
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).
7
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 tí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.
8
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.
9
2.2. 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.
10
Ả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ả
2 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ố.
Ả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.3. 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.
1
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.
11
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:
1. 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 D4(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|).
12
TỔNG KẾT CHƯƠNG 2
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.
Phần thu nhận ảnh (Image Acquisition).
Tiền xử lý (Image Processing).
Phân đoạn (Segmentation).
Biểu diễn ảnh (Image Representation).
Nhận dạng ảnh và nội suy ảnh (Image Recognition and Interpretaion).
Cơ sở tri thức (Knowledge Base).
Mô tả (biểu diễn ảnh).
- Các khái niệm cơ bản trong XLA:
Điểm ảnh.
Độ phân giải của ảnh.
Mức xám của ảnh.
Ảnh số.
- Quan hệ giữa các điểm ảnh.
Các lân cận của điểm ảnh (Image Neighbors).
Các mối liên kết điểm ảnh.
Đo khoảng cách giữa các điểm ảnh.
13
CHƯƠNG 3: LÀM QUEN VỚI THƯ VIỆN OPEN CV
3.1. Giới thiệu về OpenCV
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..
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 đó.
Hình 7. Các thành phần của thư viện OpenCV.
14
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. OpenCV trong nhận dạng khuôn mặt
3.2.1. Giới thiệu
Khi bắt đầu với lĩnh vực nhận dạng mặt (Face Recognition-FR, không phải
Face detetion-phát hiện khuôn mặt người trong ảnh), tôi đã mất khá nhiều thời gian
cho các thuật toán cơ bản của nhận dạng mặt: PCA, WPCA, LDA, 2DPCA,
KPCA, LBP … hay các câu hỏi đại loại như: dùng ngôn ngữ và công cụ gì để cài
đặt thuật toán, Matlab, Python, C++ hay C#? Cuối cùng thấy rằng việc chọn
Matlab là thích hợp nhất (cho việc nghiên cứu thôi, tất nhiên) và việc hiểu được
cặn kẽ các thuật toán cơ bản như PCA là rất quan trọng cho những ai bắt đầu, vì
vậy hy vọng bài viết này sẽ có ích cho ai muốn tìm hiểu về nhận dạng mặt người.
Nhận dạng mặt người (Face recognition) là một lĩnh vực nghiên cứu của
ngành Computer Vision, và cũng được xem là một lĩnh vực nghiên cứu của ngành
Biometrics (tương tự như nhận dạng vân tay – Fingerprint recognition, hay nhận
dạng mống mắt – Iris recognition). Xét về nguyên tắc chung, nhận dạng mặt có sự
tương đồng rất lớn với nhận dạng vân tay và nhận dạng mống mắt, tuy nhiên sự
khác biệt nằm ở bước trích chọn đặt trưng (feature extraction) của mỗi lĩnh vực.
Trong khi nhận dạng vân tay và mống mắt đã đạt tới độ chín, tức là có thể áp
dụng trên thực tế một cách rộng rãi thì nhận dạng mặt người vẫn còn nhiều thách
thức và vẫn là một lĩnh vực nghiên cứu thú vị với nhiều người. So với nhận dạng
vân tay và mống mắt, nhận dạng mặt có nguồn dữ liệu phong phú hơn (bạn có thể
nhìn thấy mặt người ở bất cứ tấm ảnh, video clip nào liên quan tới con người trên
mạng) và ít đòi hỏi sự tương tác có kiểm soát hơn (để thực hiện nhận dạng vân tay
hay mống mắt, dữ liệu input lấy từ con người đòi hỏi có sự hợp tác trong môi
trường có kiểm soát).
Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướng theo
các tiêu chí khác nhau: nhận dạng với dữ liệu đầu vào là ảnh tĩnh 2D(still image
based FR) là phổ biến nhất, tuy nhiên tương lai có lẽ sẽ là 3D FR (vì việc bố trí
nhiều camera 2D sẽ cho dữ liệu 3D và đem lại kết quả tốt hơn, đáng tin cậy hơn),
cũng có thể chia thành 2 hướng là: làm với dữ liệu ảnh và làm với dữ liệu video.
Trên thực tế người ta hay chia các phương pháp nhận dạng mặt ra làm 3 loại:
phương pháp tiếp cận toàn cục (global, như Eigenfaces-PCA, Fisherfaces-LDA),
phương pháp tiếp cận dựa trên các đặc điểm cục bộ (local feature based, như LBP,
15
Gabor wavelets) và phương pháp lai (hybrid, là sự kết hợp của hai phương pháp
toàn cục và local feature). Phương pháp dựa trên các đặc điểm cục bộ đã được
chứng minh là ưu việt hơn khi làm việc trong các điều kiện không có kiểm soát và
có thể nói rằng lịch sử phát triển của nhận dạng mặt (A never ending story) là sự
phát triển của các phương pháp trích chọn đặc trưng (feature extractrion methods)
được sử dụng trong các hệ thống dựa trên feature based.
Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mô hình nhận dạng:
identification (xác định danh tính, bài toán 1-N), và verification (xác thực danh
tính, bài toán 1-1). Trong bài toán identification, ta cần xác định danh tính của ảnh
kiểm tra, còn trong bài toán verification ta cần xác định 2 ảnh có cùng thuộc về
một người hay không.
Các pha trong một hệ thống nhận dạng mặt: để xây dựng một hệ thống nhận
dạng mặt, cũng không hề đơn giản, bước đầu tiên cần thực hiện là face detection,
tức là phát hiện phần ảnh mặt trong dữ liệu input (CSDL ảnh, video …) và cắt lấy
phần ảnh mặt để thực hiện nhận dạng (face cropping), bước thứ hai là tiền xử lý
ảnh (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) (ở đây tôi đang nói tới các ảnh có
góc nhìn thẳng – frontal view face image), tiếp đến là bước trích chọn đặc điểm
(feature extraction), ở bước này 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, kết quả là mỗi ảnh
sẽ được biểu diễn dưới dạng một vector đặc điểm (feature vector), bước tiếp theo
là bước nhận dạng (recognition) hay phân lớp (classification), tức là xác định danh
tính (identity) hay nhãn (label) của ảnh – đó là ảnh của ai.
Ở bước classification, thường thì phương pháp k-láng giềng gần nhất (knearest neighbor:kNN) sẽ được sử dụng, thực tế cho thấy việc dùng SVM (Support
Vector Machine) không mang lại hiệu quả cao hơn mà còn chậm hơn. 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 hay gallery 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 có độ
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ẽ
16
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 LDAcò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.
3.2.2. Làm thế nào để xử lý trước ảnh mặt để nhận diện khuôn mặt:
Bây giờ bạn đã phát hiện một khuôn mặt, bạn có thể sử dụng hình ảnh khuôn
mặt cho nhận diện khuôn mặt. Tuy nhiên, nếu bạn đã cố gắng để đơn giản là thực
hiện nhận dạng khuôn mặt trực tiếp trên một hình ảnh hình ảnh bình thường, có thể
bạn sẽ nhận được ít hơn độ chính xác 10%! Nó là vô cùng quan trọng để áp dụng
các kỹ thuật hình ảnh trước khi chế biến khác nhau để tiêu chuẩn hóa các hình ảnh
mà bạn cung cấp cho một nhận dạng khuôn mặt hệ thống.
Hầu hết các thuật toán nhận dạng khuôn mặt cực kỳ nhạy cảm với điều kiện
ánh sáng, do đó nếu nó được huấn luyện để nhận ra một người khi họ đang ở trong
một căn phòng tối, thì có lẽ nó wont nhận ra họ trong một căn phòng sáng…Vấn
đề này được gọi là "lumination phụ thuộc ", và cũng có nhiều vấn đề khác, chẳng
hạn như mặt cũng phải ở trong một vị trí rất phù hợp trong những hình ảnh (như
mắt là trong cùng một điểm ảnh tọa độ), kích thước phù hợp, góc quay, tóc và trang
điểm, cảm xúc ( mỉm cười, giận dữ, vv), vị trí của đèn (bên trái hoặc bên trên, vv).
Đây là lý do tại sao nó là rất quan trọng để sử dụng một bộ lọc hình ảnh tốt tiền xử
lý trước khi áp dụng nhận dạng khuôn mặt.
Bạn cũng nên làm những việc như loại bỏ các điểm ảnh xung quanh khuôn
mặt mà không được sử dụng, chẳng hạn như với một mặt nạ hình elip để chỉ hiển
thị các khu vực mặt bên trong, không phải là tóc và hình nền, kể từ khi họ thay đổi
nhiều so với khuôn mặt không. Để đơn giản , hệ thống nhận diện khuôn mặt tôi sẽ
cho bạn thấy là Eigenfaces sử dụng hình ảnh thang độ xám. Vì vậy, tôi sẽ cho bạn
thấy làm thế nào để dễ dàng chuyển đổi hình ảnh màu xám (còn được gọi là "màu
xám"), và sau đó dễ dàng áp dụng Histogram Equalization là một phương pháp rất
đơn giản của tự động tiêu chuẩn hóa độ sáng và độ tương phản của hình ảnh gương
mặt của bạn.
17
Để có kết quả tốt hơn, bạn có thể sử dụng màu sắc nhận diện khuôn mặt (lý
tưởng với phụ kiện màu sắc biểu đồ trong HSV hoặc một không gian màu thay vì
RGB), hoặc áp dụng nhiều công đoạn chế biến như tăng cường cạnh, phát hiện
đường viền, phát hiện chuyển động, vv Ngoài ra, mã này là thay đổi kích thước
hình ảnh đến một kích thước tiêu chuẩn, nhưng điều này có thể thay đổi tỷ lệ khía
cạnh của khuôn mặt.
// Hoặc chuyển đổi hình ảnh để thang màu xám, hoặc sử dụng các hình ảnh
màu xám hiện có.
IplImage * imageGrey;
if (imageSrc-> nChannels == 3) {
imageGrey = cvCreateImage (cvGetSize (imageSrc), IPL_DEPTH_8U, 1); //
Chuyển đổi từ RGB (thực ra nó là BGR) để Greyscale. cvCvtColor (imageSrc,
imageGrey, CV_BGR2GRAY);
}
else { // Chỉ cần sử dụng các hình ảnh đầu vào, vì nó đã là Greyscale.
imageGrey = imageSrc;
} // Thay đổi kích thước hình ảnh là một kích thước phù hợp , ngay cả khi
những thay đổi tỉ lệ.
IplImage * imageProcessed;
imageProcessed = cvCreateImage (cvSize (chiều rộng, chiều cao),
IPL_DEPTH_8U, 1); . // Tạo các hình ảnh kích thước cố định
// CV_INTER_CUBIC hoặc CV_INTER_LINEAR là tốt cho việc mở rộng,
và
// CV_INTER_AREA là tốt cho thu hẹp / decimation, nhưng xấu là sự tăng
cường. cvResize (imageGrey, imageProcessed, CV_INTER_LINEAR); . // cho
hình ảnh độ sáng và độ tương phản tiêu chuẩn cvEqualizeHist (imageProcessed,
imageProcessed);
..... Sử dụng 'imageProcessed' cho Face Recognition ....
if (imageGrey)
cvReleaseImage (& imageGrey);
if (imageProcessed)
cvReleaseImage (& imageProcessed);
Như đã đề cập ở trên, giai đoạn đầu tiên trong nhận diện khuôn mặt Face
Detection là. Các thư viện OpenCV làm cho nó khá dễ dàng để phát hiện một
khuôn mặt phía trước trong một hình ảnh bằng cách sử Haar Cascade Mặt Detector
(còn gọi là phương pháp Viola-Jones). Chức năng "cvHaarDetectObjects" trong
OpenCV thực hiện việc phát hiện khuôn mặt đích thực, nhưng chức năng là một
18