You are on page 1of 58

TRƯỜ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


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Nhậ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)

Bộ môn Tin học công nghiệp 1


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
MỤ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…………………………………………………………………….
Bộ môn Tin học công nghiệp 2
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Chươ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.

Bộ môn Tin học công nghiệp 3


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiề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 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.

Bộ môn Tin học công nghiệp 4


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
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 thành phần chính (Principal Component Analysis-
PCA).
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).

Bộ môn Tin học công nghiệp 5


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
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.
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.

Bộ môn Tin học công nghiệp 6


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
1.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).

Bộ môn Tin học công nghiệp 7


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hì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

Bộ môn Tin học công nghiệp 8


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
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à 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.

Bộ môn Tin học công nghiệp 9


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
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 (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.

Bộ môn Tin học công nghiệp 10


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Sơ đồ 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
Bộ môn Tin học công nghiệp 11
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiề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.
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.

Bộ môn Tin học công nghiệp 12


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
2.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: 2 8*3 = 224 ≈
16,7 triệu màu.
 Định nghĩa ảnh số.
Bộ môn Tin học công nghiệp 13
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Ả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:
Bộ môn Tin học công nghiệp 14
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
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|).

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.
Bộ môn Tin học công nghiệp 15
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
CHƯƠ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 đó.

Bộ môn Tin học công nghiệp 16


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hì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.

Bộ môn Tin học công nghiệp 17


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
 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ý
các ma trận, điểm ảnh…

Hình 8. Cấu trúc tổng quát của EmguCV.

Truy cập địa chỉ:


http://sourceforge.net/projects/emgucv/files/
hoặc
http://en.sourceforge.jp/projects/sfnet_emgucv/downloads/emgucv/2.4.9-
alpha/libemgucv-windows-universal-gpu-2.4.9.1847.exe/
để tải về bản cài đặt của EmguCV.

Bộ môn Tin học công nghiệp 18


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
a) 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.

Bộ môn Tin học công nghiệp 19


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Bướ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…

Bộ môn Tin học công nghiệp 20


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
3. 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.

Bộ môn Tin học công nghiệp 21


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

5. Tiếp theo, khai báo các thư viện OpenCV mà chúng ta sử dụng trong mỗi class:
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
Sau khi thực hiện 5 bước trên, chúng ta có thể sử dụng các thư viện của OpenCv để lập
trình.
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.

Bộ môn Tin học công nghiệp 22


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
c) 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();
// khi hộp thoại hiển thị, nếu người dùng bấm OK
// thì nạp file ảnh lên control pictureBox1
if (OpenFile.ShowDialog() == DialogResult.OK)
{
// gán file hình do người dùng chọn cho biến MyImage
Image<Bgr, Byte> MyImage = new Image<Bgr,
Byte>(OpenFile.FileName);
// hiển thị ảnh lên control pictureBox1
pictureBox1.Image = MyImage.ToBitmap();
}
}

Bộ môn Tin học công nghiệp 23


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
 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.

Bộ môn Tin học công nghiệp 24


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
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.

Bộ môn Tin học công nghiệp 25


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Mộ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]

Bộ môn Tin học công nghiệp 26


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hì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.
Bộ môn Tin học công nghiệp 27
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
4.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.

Bộ môn Tin học công nghiệp 28


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Nhược điểm của PCA:
 PCA phân loại theo chiều lớn nhất của tập vector. Tuy nhiên, chiều phân bố lớn
nhất không phải lúc nào cũng mang lại hiệu quả tốt nhất cho bài toán nhận dạng.
Đây là nhược điểm cơ bản của PCA.
 PCA rất nhạy với nhiễu.
b) Ứng dụng trong bài toán nhận dạng mặt người.
Trong bài toán nhận dạng mặt người, PCA là thuật toán nhận dạng ảnh dựa trên những
nét tổng thể của khuôn mặt, ta sẽ áp dụng thuật toán này để thực hiện công việc tìm một khuôn
mặt giống với khuôn mặt cho trước với kích thước nhỏ hơn và chỉ mang những nét đặc trưng
của khuôn mặt.
Đặc trưng PCA: Mục tiêu của phương pháp PCA là “giảm số chiều” của một tập vector
sao cho vẫn đảm bảo được “tối đa thông tin quan trọng nhất”. Phương pháp PCA sẽ giữ lại K
thuộc tính mới (Feature extraction) từ N các thuộc tính ban đầu (feature selection) (K < N).

 Mục tiêu của phương pháp PCA đó là tìm phép biến đổi tuyến tính T thỏa mãn:
y = T.x
sao cho trung bình bình phương lỗi (MSE) là nhỏ nhất (sai số nhỏ nhất do giảm số chiều).

Bộ môn Tin học công nghiệp 29


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
 Cách tìm được T:
Gọi 𝜓 là vector trung bình của tất cả các vector x (kích thước (NxP)x1) trong tập mẫu gồm
M ảnh.
Gọi ma trận hiệp phương sai của các phần tử x trong tập mẫu là C. C được tính theo công
thức:
𝑀
1
𝐶 = ∑(𝑥𝑘 − 𝜓). (𝑥𝑘 − 𝜓)𝑇
𝑀
𝑘

Ma trận C có kích thước (NxP)x(NxP).


“Ma trận hiệp phương sai của tập hợp m biến ngẫu nhiên là một ma trận vuông hạng (m ×
m), trong đó các phần tử nằm trên đường chéo (từ trái sang phải, từ trên xuống dưới) lần lượt
là phương sai tương ứng của các biến này (ta chú ý rằng Var(X) = Cov(X,X)), trong khi các
phần tử còn lại (không nằm trên đường chéo) là các phương sai của đôi một hai biến ngẫu nhiên
khác nhau trong tập hợp..”[11]

Người ta chứng minh được rằng: “Nếu T là ma trận m hàng, mỗi hàng là 1 vector riêng của
C, đồng thời m vector riêng này phải ứng với m trị riêng lớn nhất. Khi đó, T chính là phép biến
đổi thỏa mãn MSE nhỏ nhất”.
 Tóm lại, phương pháp PCA quy về việc đi tìm trị riêng (Eigenvalues) và vector riêng
(eigenvectors) của ma trận hiệp phương sai C. Sau đó, chỉ giữ lại K vector riêng ứng với K trị
riêng lớn nhất để làm cơ sở cho không gian mới này.

4.2.2 Đi tìm EigenFaces.


Ban đầu ta có một tập ảnh khuôn mặt gọi là tập ảnh huấn luyện (training set). Giả sử mỗi
ảnh có kích thước NxP, ta coi mỗi bức ảnh này là một vector trong không gian NxP chiều. Bây
giờ, mỗi khuôn mặt là một vector, ta thấy những vector này không phân bố ngẫu nhiên trong
không gian ảnh mà phân bố theo một quy luật tương đối này đó, ta có thể nói những vector này
nằm trong một không gian con gọi là không gian khuôn mặt. Từ những vector trong tập huấn
luyện, ta sẽ tìm một cơ sở trực chuẩn cho không gian khuôn mặt. Những vector thuộc cơ sở này
có thể coi là những vector mang những nét tổng thể đặc trưng về khuôn mặt.
Các bước thực hiện tìm EigenFaces:
Bước 1: Giả sử tập huấn luyện có M ảnh: I1, I2,.., IM , với khuôn mặt phải chính diện và tất cả
các ảnh đều có cùng kích thước NxP.

Bộ môn Tin học công nghiệp 30


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hình 13. Tập ảnh huấn luyện.

Bước 2: Biểu diễn mỗi ảnh I1, I2,.., IM, thành các vector T1, T2, …, TM tương ứng. Mỗi vector
Ti sẽ có kích thước (NxP)x1.
Ví dụ: Để đơn giản, ta giả sử chỉ có 4 ảnh trong tập huấn luyện (kích thước mỗi ảnh là 3x3).
Ta tính toán được các vector Ti có kích thước (9x1) :
225 10 196 255
229 219 35 223
48 24 234 224
251 255 232 255
𝑇𝑖 = 33 ; 𝑇2 = 18 ; 𝑇3 = 59 ; 𝑇4 = 0
238 247 244 255
0 17 243 249
255 255 57 255
[217] [ 2 ] [226] [235]
Bước 3: Tính vector khuôn mặt trung bình theo công thức:

𝑀
1
𝜓= ∑ 𝑇𝑖
𝑀
𝑖=1

Cụ thể, ta có:

Bộ môn Tin học công nghiệp 31


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
171.50
176.50
132.50
248.25
𝜓 = 27.50
246.00
127.25
205.50
[ 170 ]
Bước 4: Tính sai số của các vector ảnh so với giá trị vector mặt trung bình.

Ф𝑖 = 𝑇𝑖 − 𝜓
(i = 1 .. M)

Cụ thể ta có:
53.50 −161.50 24.50 83.50
52.50 42.50 −141.50 46.50
−84.50 −108.50 101.50 91.50
2.75 6.75 −16.25 6.75
Ф𝑖 = 5.50 ; Ф2 = −9.50 ; Ф3 = 31.50 ; Ф4 = −27.50
−8.00 1.00 −2.00 9.00
127.25 −110.25 115.75 121.75
49.50 49.50 −148.50 49.50
[ 47.00 ] [−168.00] [ 56.00 ] [ 65.00 ]

Bước 5: Tính ma trận hiệp phương sai (covariance) C:


𝑀 1
1 𝑀
𝐶 = ∑ Ф𝑛 Ф𝑇𝑛 ⇒ 𝐴. 𝐴𝑇
𝑀
𝑛

Ma trận C sẽ có kích thước (NxP)x(NxP) = (3x3)x(3x3)


Trong đó:
- Ma trận A có kích thước (NxP)xM.
A A= [Ф1, Ф2, .., ФM]

Bộ môn Tin học công nghiệp 32


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
- Ma trận AT là ma trận chuyển vị của ma trận A. (Để có được ma trận AT, từ ma trận
A, ta chuyển hàng thành cột, cột thành hàng. => AT có kích thước Mx(NxP).

Cụ thể ta có:
53.50 −161.50 24.50 83.50
52.50 42.50 −141.50 46.50
−84.50 −108.50 101.50 91.50
2.75 6.75 −16.25 6.75
𝐴= 5.50 −9.50 31.50 −27.50
−8.00 1.00 −2.00 9.00
−127.25 −110.25 115.75 121.75
49.50 49.50 −148.50 49.50
[ 47.00 −168.00 56.00 65.00 ]
Ma trận A kích thước (3x3)x4
Từ đó, ta tính được ma trận hiệp phương sai C, kết quả như sau:

36517 −3639 23129 −778 304 113 24000 −4851 36446


−3639 26747 −19155 3045 −5851 324 −22083 28017 −9574
23129 −19155 37587 −1997 1247 1188 45603 −20097 25888
−778 3045 −1996 363 −746.5 78 −2153 3217 −1476
𝐶 = 304 −5851 1247 −747 1869 −364 645 −6237 1831
113 324 1188 78 −364 150 1772 396 −71
24000 −22083 45603 −2153 645.5 1772 56569 −22919 26937
−4851 28017 −20097 3218 −6237 396 −22919 29403 −1088
[ 36446 −9574 25888 −1476 1831 −71 26937 −11088 37794 ]
Ma trận C kích thước (NxP)x(NxP) = (9x9).
Bước 6: Tính các vector riêng (Eigenvectors) của ma trận vuông C = AAT.
Nhận thấy ma trận AAT có kích thước (NxP)x(NxP), do kích thước ma trận này quá lớn nên
ta không thể tìm các vector riêng và trị riêng tương ứng một cách trực tiếp, thay vào đó, ta sẽ
tìm những vector riêng của ma trận ATA có kích thước MxM.
Nếu v là một vector riêng của ma trận ATA và λ là trị riêng tương ứng, khi đó ta có:
(ATA).v = λ.v  A.(ATA).v = A.(λ.v)  (AAT).(A.v) = λ. (A.v)
Tức u = A.v là một vector riêng của ma trận AAT.
Đặt L = ATA, tìm V là tập hợp các vector riêng của L, D là tập hợp các trị riêng tương ứng.

Bộ môn Tin học công nghiệp 33


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
V bao gồm K vectors riêng ứng với những trị riêng lớn hơn một giá trị nào đó hoặc ứng với
K trị riêng lớn nhất trong D. (K << NxP)
Có 2 cách để xác định K:
Cách 1:
- Sắp xếp theo thứ tự giảm dần các eigenvalues tìm được.
- Theo dõi sự biến thiên của dãy trên, khi không còn biến thiên (hoặc xấp xỉ bằng không)
thì lúc đó ta đã chọn đủ K.
Cách 2:
Chọn K theo công thức sau:

∑𝐾
𝑖=1 𝜆𝑖
> 𝑇ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 (𝑒. 𝑔, 0.9 𝑜𝑟 0.95)
∑𝑁
𝑖=1 𝜆𝑖

E =A.V là tập các vectors riêng của A.AT. Do đây là những vectors riêng, mà nó lại có dạng
khuôn mặt nên còn được gọi là Eigenfaces. E là ma trận (NxP)xK, mỗi cột là một vector riêng.
Chuẩn hóa các vector cột trong E để thu được một cơ sở trực chuẩn của không gian khuôn
mặt.

𝑢𝑖
𝑢𝑖 (‖𝑢𝑖 = 1‖), nghĩa là: 𝑢𝑖 = ‖𝑢𝑖 ||

Bước 6.1: Xét ma trận L = ATA có kích thước MxM = 4x4.


Cụ thể ta có:
33712 11301 −33998 −115015
11301 82627 −50914 −43014
𝐴𝑇 𝐴 = [ ]
−33998 −50914 70771 14141
−11015 −43014 14141 39888

Bước 6.2: Tính các vector riêng vi (eigenvectors) của ma trận vuông ATA kích thước 4x4.
 Cách tìm trị riêng (eigenvalues) và vector riêng (eigenvectors) có thể xem lại “Toán cao
cấp_Tập 1_Đại số và hình học giải tích”. Tuy nhiên, cách này không khả thi khi lập trình. Do
đó, khi lập trình, ta có thể dùng “Phương pháp lặp” (thuật toán QR) để tìm.
Bộ môn Tin học công nghiệp 34
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Ở đây ta sẽ tìm được 4 trị riêng của ma trận ATA, tuy nhiên ta sẽ sắp xếp lại theo thứ tự giảm
dần, và chỉ lấy các trị riêng khác 0 “non=zero”. Kết quả ta thu được 3 trị riêng (từ đó tính ra
các vector riêng tương ứng).
−0.263 0.521 −0.640
−0.679 −0.437 0.314
𝑣1 = [ ]; 𝑣2 = [ ]; 𝑣3 = [ ]
0.586 −0.559 −0.306
0.355 0.475 0.631
𝜆1 = 153520 𝜆2 = 50696 𝜆3 = 22781

V=[v1, v2, v3]: Các vector riêng (eigenvector) của ma trận ATA.
D= [λ1, λ2, λ3]: Các trị riêng (eigenvalues) tương ứng với các vectors riêng.
Bước 6.3: Từ các vector riêng vi (có kích thước Mx1 = 4x1), ta dễ dàng suy ra được các vector
riêng ui (kích thước (NxP)x1 = (3x3)x1 =9x1) cần tìm theo công thức:

ui = Avi (*)

139.5734 124.311 −39.787


−109.108 109.995 52.380
187.906 −9.981 46.675
−12.435 10.777 9.591
𝑢1 = 13.699 ; 𝑢2 = −23.655 ; 𝑢3 = −33.493
3.452 0.781 11.725
219.448 −25.098 88.213
−116.108 11.715 60.533
[ 157.593 ] [ 97.366 ] [−58.978]
u1, u2, u3: Các vectors riêng (eigenvectors) của ma trận hiệp phương sai C (AT.A) cần tìm.
Bước 7: Chuẩn hóa các vectors của ma trận C để thu được một cơ sở trực chuẩn của không
gian khuôn mặt.

𝑢𝑖
𝑢𝑖 = ‖𝑢𝑖 ||

Bộ môn Tin học công nghiệp 35


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Các vectors ui sau khi chuẩn hóa:
0.356 −0.552 −0.264
−0.279 −0.489 0.347
0.480 0.044 0.309
−0.032 −0.048 0.064
𝑢1 = 0.035 ; 𝑢2 = 0.105 ; 𝑢3 = −0.222
0.009 −0.004 0.078
0.560 0.112 0.585
−0.296 0.492 0.401
0.402 [ −0. 432 ] [ −0.391]
Các vector này là các vector cơ sở của không gian mới. Ta gọi các vector này là các
EIGENFACES.
0.356 −0.552 −0.264
−0.279 −0.489 0.347
0.480 0.044 0.309
−0.032 −0.048 0.064
𝐸 = 0.035 0.105 −0.222
0.009 −.0004 0.078
0.560 0.112 0.585
−0.296 0.492 0.401
[ 0.402 −0.432 −0.391]

4.2.3 So sánh khoảng cách-Compare Distance.


Xét ảnh H có cùng kích thước với những bức ảnh trong tập huấn luyện. H được xem là một
vector trong không gian NxP chiều.
Đặt G = H - 𝜓, với 𝜓 là vector ảnh trung bình.
Cho V là một không gian có tích vô hướng hữu hạn chiều và W là một không gian con của V.
Giả sử W có một cơ sở trực chuẩn là {u1, …, uK}. Khi đó, hình chiếu trực giao của vector u bất
kỳ lên W được xác định như sau:
𝐾

𝑝𝑟𝑤 𝑢 = 𝑢0 = ∑(𝑢 𝑢𝑖 ) . 𝑢𝑖
⃗ , ⃗⃗⃗
𝑖=1

- Độ dài || u – u0 || được gọi là khoảng cách từ u đến W.


- Tập hợp 𝑐𝑖 = (𝑢 𝑢𝑖 ), i=1,…, K được gọi là tọa độ của u0 trong không gian W.
⃗ , ⃗⃗⃗

Bộ môn Tin học công nghiệp 36


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
- Tìm C = ETG là tọa độ hình chiếu Gf của G lên không gian khuôn mặt. C là vector cột Kx1.
𝐾

𝐺𝑓 = ∑ 𝑐𝑖 . 𝑒𝑖
𝑖=1
với ci = C(i, 1); ei = E(1, i).
Với Ai là một cột trong ma trận A (tương ứng với bức ảnh Ti trong tập huấn luyện). Ta tính
Ci = ET.Ai là tọa độ của hình chiếu Aif của Ai lên không gian khuôn mặt.
Tính: Si = || C – Ci || xem như khoảng cách từ H đến bức ảnh Ti trong tập huấn luyện.
Gọi β = eigenDistanceThreshold là khoảng cách ngưỡng riêng, khi đó:
 Nếu Si < β thì Ti là bức ảnh của cùng một người với H (H đủ gần với Ti).

TỔNG KẾT CHƯƠNG 4.


Chương 4 bao gồm 2 nội dung chính:
 Bài toán phát hiện mặt người trong ảnh-Face Detection.
 Bài toán nhận dạng mặt người bằng phương pháp Eigenfaces-sử dụng thuật toán PCA.
 Face Detection.
- Giới thiệu bài toán xác định mặt người.
- Giới thiệu các hướng tiếp cận các phương pháp giải quyết bài toán xác định mặt
người.
o Hướng tiếp cận dựa trên tri thức (knowledge-based)
o Hướng tiếp cận dựa trên các đặc trưng không đổi (feature invariant)
o Hướng tiếp cận dựa trên phương pháp đối sánh mẫu (Template matching)
o Hướng tiếp cận dựa trên diện mạo (appearance-based).
 Recognition-Sử dụng Eigenfaces.
- Giới thiệu thuật toán PCA và ứng dụng trong bài toán nhận dạng mặt người.
- Hướng dẫn cách sử dụng thuật toán PCA trong bài toán nhận dạng mặt người.

Bộ môn Tin học công nghiệp 37


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
CHƯƠNG 5: XÂY DỰNG CHƯƠNG TRÌNH-MÔ PHỎNG
4.3 . Xây dựng chương trình.
4.3.1 Phân tích.
Nhiệm vụ chính của chương trình là nhận dạng một khuôn mặt người xem khuôn mặt đó có
được biết đến hay chưa. Ngoài ra, chương trình còn thực hiện công việc phát hiện, tách các
khuôn mặt người (nếu có) từ một ảnh tĩnh, hoặc từ các frame ảnh thu được từ camera. Sau đó,
lưu vào CSDL làm tập mẫu.

Hình 14: Sơ đồ ngữ cảnh của hệ thống.


- Như vậy, các chức năng của chương trình bao gồm:
o Lấy một ảnh từ trong máy tính, hoặc kết nối đến webcam hiển thị lên ImageBox.
o Thực hiện tách các khuôn mặt trên ImageBox (nếu có).
o Thực hiện lưu khuôn mặt phát hiện được vào CSDL. Thực hiện xóa, đổi tên…
o Nhận dạng ảnh một khuôn mặt. Nếu “biết” người đó (có lưu thông tin trong CSDL) thì
hiển thị tên và một ảnh của người đó. Nếu “không biết” (không có thông tin của người đó
trong CSDL) thì hiển thị 1 màu đen lên màn hình và tên người là: “Unknow”
4.4 Thiết kế hệ thống.
Với các chức năng nêu trên, chương trình được chia thành 3 phần chính:
1. Xử lý ảnh đầu vào.
2. Phát hiện khuôn mặt.
3. Xử lý đầu ra. (Ảnh đầu ra dùng để nhận dạng, hay lưu vào CSDL hay cả hai).

Bộ môn Tin học công nghiệp 38


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hình 15: Sơ đồ khối thực hiện chương trình.

5.2.1. Xử lý ảnh đầu vào.


Đầu vào của hệ thống là 1 ảnh chứa khuôn mặt cần xử lý, ảnh này có thể là ảnh tĩnh, lấy
từ trong bộ nhớ máy tính hoặc là frame ảnh bắt được từ dòng hình ảnh của camera. Sau khi có
được ảnh đầu vào thì bắt đầu tiến hành tìm kiếm, phát hiện các khuôn mặt trong ảnh.

Bộ môn Tin học công nghiệp 39


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hình 16: Lưu đồ giải thuật chọn ảnh đầu vào.


 Code thực hiện chức năng.
private Capture capture;
private Image<Bgr, Byte> ImageFrame, NextFrame;
//Hàm thực hiện mở hộp thoại để lấy ảnh Tĩnh lưu trong máy tính.
private void btnBrowse_Click(object sender, EventArgs e)
{
if (oFDtoGetImage.ShowDialog() == DialogResult.OK)
{
Image InputImg = Image.FromFile(oFDtoGetImage.FileName);
NextFrame = new Image<Bgr, byte>(new Bitmap(InputImg));
CamImageBox.Image = NextFrame;
}
}

Bộ môn Tin học công nghiệp 40


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Hình 17: Hiển thị hình ảnh lấy từ máy tính.


5.2.2. Phát hiện khuôn mặt trong ảnh.
Sau khi nhận được ảnh đầu vào, hệ thống sẽ thực hiện chức năng phát hiện khuôn mặt
có trong ảnh. Như đã nói trong phần Giới Thiệu, bài toán phát hiện mặt người trong ảnh là một
bài toán khó, nên ta không đi sâu tìm hiểu cách giải quyết bài toán này.
Ở đây, ta sử dụng phương pháp tiếp cận dựa trên diện mạo (appearance-based) được
thực hiện nhanh bằng thuật toán adaboost thông qua hàm cvHaarObjects() của bộ thư viện
OpenCV. Hàm này thực hiện việc phát hiện đối tượng dựa trên các đặc trưng haar-like, cụ thể
là nhờ vào một bộ Cascade được truyền vào cho hàm. Bộ Cascade được xây dựng theo dạng
cây (tree-node) và đã được huấn luyện từ trước.
Việc huấn luyện bộ Cascade có thể thực hiện từ những dữ liệu thu thập được để phục vụ
cho quá trình nhận dạng. Ví dụ, muốn nhận dạng một người A, ta thu thập các ảnh khuôn mặt
của người A với nhiều tư thế, góc chụp và điều kiện chụp khác nhau, sau đó cho bộ nhận dạng
học theo thuật toán Cascade training. Kết quả thu được là ta sẽ có một mô hình nhận diện, được
sử dụng để nhận dạng các đối tượng.

Bộ môn Tin học công nghiệp 41


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
 Code thực hiện chức năng:
private HaarCascade haarface;
private CascadeClassifier haar;
private int WindowSize = 25;
private Double ScaleIncreaseRate = 1.1;
private int MinNeighbors = 3;
// Control Timer
private void timer_getImage_Tick(object sender, EventArgs e)
{
MinNeighbors = int.Parse(comboBoxMinNeigh.Text);
WindowSize = int.Parse(textBoxWinSiz.Text);
ScaleIncreaseRate = Double.Parse(comboBoxScIncRte.Text);
using (Image<Bgr, byte> ImageFrame = capture.QueryFrame())
{
if (ImageFrame != null)
{
//STEP1. COnvert the image to Gray scale
Image<Gray, byte> grayframe = ImageFrame.Convert<Gray, byte>();

//STEP2. Detectfaces from the gray-scale image and


store into an array of type 'var', i.e 'MCvAvgComp[]'
var faces = grayframe.DetectHaarCascade(haarface,
ScaleIncreaseRate,
MinNeighbors,
HAAR_DETECTION_TYPE.DO_CANNY_PRU
NING,
new Size(ImageFrame.Width / 8, ImageFrame.Height / 8))[0];

//STEP3. Draw a green rectangle on each detected


face in image
foreach (var face in faces)
{
ImageFrame.Draw(face.rect, new Bgr(Color.Gray), 3);
}
}
CamImageBox.Image = ImageFrame;
}
}

Bộ môn Tin học công nghiệp 42


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
 Hàm thực hiện chức năng phát hiện mặt người trong dòng hình ảnh của camera. Trong
đó:
1. The HaarCascade (haarface): Một đối tượng thuộc lớp Mô hình nhận diện: HaarCascade.
Đây là tham số đầu tiên trong lời gọi DetectHaarCascade(). Thực chất, đây là một file
XML, từ đó, chuỗi dữ liệu được nạp cho bộ phân loại Haar. Có một số thác phát hiện khuôn
mặt có trước trong OpenCV (và EmguCV). Các khuôn mặt trong ảnh sẽ được phát hiện nhờ
mô hình nhận diện này. OpenCV cung cấp khá nhiều mô hình nhận diện khuôn mặt, không
có bộ phân loại nào là tốt nhất, tùy từng trường hợp mà mô hình nhận dạng này cho kết quả
tốt hơn mô hình kia. Chúng ta có thể thay đổi mô hình nhận dạng trong phần mềm một cách
dễ dàng, chỉ cần thay đổi tên tệp tin XML. Ngoài mô hình nhận diện khuôn mặt, OpenCV còn
cung cấp cho chúng ta nhiều mô hình nhận diện khác, như: tròng mắt, mắt, mũi, tay…
Ở đây, ta dùng một mô hình nhận diện khuôn mặt, với:
- haarface = “đường dẫn tới mô hình nhận diện”.
- mô hình nhận diện: haarcascade_frontalface_alt_tree.xml.
2. ScaleIncreaseRate: Tham số thứ hai trong lời gọi đến DetectHaarCascade() là tỷ lệ co
giãn, sử dụng trong thuật toán lặp-quét ảnh để tìm đối tượng (ở đây là mặt người). Thiết
lập này cao hơn làm tăng tốc độ phát hiện khuôn mặt (giảm thời gian tìm kiếm, phát hiện
khuôn mặt trong ảnh) bằng cách chạy đường chuyền ít hơn, nhưng nếu nó quá cao, bạn
có thể nhảy quá nhanh giữa các phạm vi và phát hiện thiếu các khuôn mặt. Mặc định
trong OpenCV là 1.1, nói cách khác, tăng quy mô với hệ số 1.1 (10%) mỗi cái.
Thông số này có thể có một trong các giá trị: 1.1, 1.2, 1.3 hoặc 1.4.
Trong phần mềm, mặc định giá trị của thông số ScaleIncreaseRate là cao nhất tức 1.4. Có
nghĩa là nó sẽ chạy số lượng lặp ít nhất, do đó sẽ phát hiện nhanh chóng các khuôn mặt,
nhưng cũng có thể bỏ qua một số khuôn mặt. Nếu thiết lập giá trị thấp hơn, việc kiểm tra,
phát hiện đối tượng: khuôn mặt hoàn hảo hơn, nhưng sẽ mất nhiều thời gian hơn. Tùy
từng bức ảnh đầu vào mà điều chỉnh thông số này để có thể đạt kết quả mong muốn.
3. Minimum Neighbors Threshold (MinNeighbors) : Tham số thứ ba trong lời gọi đến
DetectHaarCascade() là “Ngưỡng hàng xóm tối thiểu”, thiết lập mức độ cắt cho việc loại
bỏ hoặc giữ nhóm hình chữ nhật để xây dựng bộ phân loại mạnh từ các bộ phân loại yếu.
Giả sử, với 5 hình chữ nhật, ta xác định được một khuôn mặt-bộ phân loại mạnh. Còn bộ
phân loại yếu là tập các hình chữ nhật thuộc một bộ phận của khuôn mặt, bộ phân loại
yếu ở đây sẽ nhỏ hơn 5.
Nếu số lượng khuôn mặt nhận dạng được ít hơn thực tế thì hãy hạ thấp giá trị của tham
số này (Dao động từ 0-4).
4. Canny Pruning Flag: Tham số thứ tư là một biến cờ. Hiện chỉ có hai lựa chọn: 0 hoặc
DO-CANNY-PRUNING.
Nếu lựa chọn Canny Pruning được chọn, bộ dò sẽ bỏ qua các vùng mà không có khả năng
có chứa một khuôn mặt, giảm chi phí tính toán và có thể loại bỏ một số phát hiện sai. Các

Bộ môn Tin học công nghiệp 43


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
vùng bỏ qua được xác định bằng cách chạy một máy dò cạnh (máy dò cạnh Canny) trên
ảnh trước khi chạy máy phát hiện khuôn mặt.
5. Minimum Detection Scale (WindowSize): Quy mô phát hiện tối thiểu.
Tham số thứ 5 trong các lời gọi đến DetectHaarCascade () là kích thước của khuôn mặt
nhỏ nhất để tìm kiếm. Quy mô tối thiểu mặc định trong file XML là 24x24. Tuy nhiên,
trong phần mềm, chúng ta để mặc định là 25x25.

Hình 18: Phát hiện khuôn mặt trong dòng hỉnh ảnh của camera.

Bộ môn Tin học công nghiệp 44


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
5.2.3. Xử lý đầu ra.
Các khuôn mặt sau khi được phát hiện sẽ được tách ra khỏi bức ảnh, hiển thị lên picturebox.
Người dùng có thể xem, di chuyển qua lại giữa các khuôn mặt được phát hiện (kể cả các ảnh bị
nhận nhầm là khuôn mặt).
Các khuôn mặt trước khi được hiển thị lên picturebox sẽ được chỉnh lại kích thước và chuẩn
hóa (tăng chỉnh độ sáng, đưa về một kênh màu: Ảnh Xám). Ảnh sau khi chuẩn hóa có thể được
kiểm tra nhận dạng hoặc lưu vào CSDL dưới dạng nhị phân.
5.2.4. Thiết kế cơ sở dữ liệu.
CSDL là trái tim của hệ thống, việc thiết kế, tổ chức CSDL ảnh hưởng lớn đến hoạt động
của chương trình, bởi dữ liệu cần lưu trữ ở đây là các ảnh. Dù kích thước mỗi ảnh có thể không
lớn, nhưng số lượng ảnh cần lưu trữ lại rất lớn. Ảnh hưởng lớn đến tốc độ truy xuất dữ liệu. Do
đó cần thiết kế, tổ chức CSDL một cách hợp lý, ngoài ra việc lựa chọn Hệ quản trị CSDL cũng
rất quan trọng. Ở đây, Hệ quản trị SQL server được lựa chọn để xây dựng, quản lý CSDL. Đây
là một hệ quản trị CSDL mạnh, đáp ứng được nhiều yêu cầu về quản lý các CSDL lớn.
Ta cần xác định các thông tin cần được lưu trữ:
3. Ảnh các khuôn mặt.
4. Tên người có khuôn mặt được phát hiện.
5. Id xác định các đối tượng.
1. Ảnh (FaceImage). Ảnh đầu vào.
a. Kiểu dữ liệu: image.
b. Is null: true.
2. Tên người (FaceName).
c. Kiểu dữ liệu: nvarchar(200);
d. Is null: true;
3. Id (FaceID)
e. Kiểu dữ liệu: Int.
f. Khóa chính.
g. Mã tự tăng.
h. Is null: false.

Bộ môn Tin học công nghiệp 45


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
5.2.5. Thiết kế giao diện chương trình.

Hình 19. Màn hình chính của chương trình.


Giao diện chương trình được thiết kế đơn giản, dễ nhìn. Bố cục giao diện chia làm 3 phần.
Phần 1, dành cho người dùng chọn đầu vào, có thể là một ảnh tĩnh từ trong máy tính, hoặc mở
webcam để lấy hình ảnh. Phần 2 bao gồm phần điều chỉnh các thông số phát hiện khuôn mặt,
thông số nhận dạng khuôn mặt. Và cuối cùng là phần nhận dạng khuôn mặt.
 Phần 1:
- Button Browse Image: Mở hộp thoại để lấy một ảnh tùy ý trong máy tính.
- Button Detect face: Thực hiện việc tìm kiếm, phát hiện mặt người trong ảnh, đang hiện
trên Imagebox. Nếu có thì hiển thị thông báo số lượng khuôn mặt phát hiện được, tách
các khuôn mặt hiển thị lên picturebox.
- Button Start: Khởi động webcam để thu hình ảnh.
- Button Extract face: Tách các khuôn mặt phát hiện được trong dòng hình ảnh của
camera hiển thị lên picture box.

Bộ môn Tin học công nghiệp 46


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
 Phần 2:
1. Điều chỉnh thông số phát hiện khuôn mặt.
- Scale Increase Rate.
- Min Neighbors.
- Min Detection Scale (Window Size).
2. Điều chỉnh thông số nhận dạng khuôn mặt.
- Eigen Distance Threshold: Khoảng cách ngưỡng.
 Phần 3:
- Picturebox pbInputFaces: Hiển thị ảnh các khuôn mặt phsat hiện được trong ảnh.
- Picturebox pbTSFace: Hiển thị các ảnh trong CSDL và kết quả ảnh nhận dạng.
- Button Prev, Next: Di chuyển giữa các ảnh khuôn mặt phát hiện được.
- Button btnTSFirst, btnTSPArev, btnTSNxt, btnLoadTSLast: Di chuyển qua lại giữa
các ảnh trong CSDL.
- Button btTrainforReg (Trained for Recognizer): Thực hiện huấn luyện các ảnh.
- Button btnCheckRecognizer (Check Recognizer): Thực hiện nhận dạng khuôn mặt.
- Button btnView (View Information Of TrainingSet): Xem thông tin về CSDL trong
tập Training Set.
- Button btnAddtoTS (Add to Training Set): Lưu ảnh khuôn mặt phát hiện được vào
CSDL.
- Button btnUpdateFace (Update Face): Cập nhật lại tên và ID của đối tượng.
- Button btnDelFace (Delete Face): Xóa đối tượng khỏi CSDL.

Bộ môn Tin học công nghiệp 47


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
5.3. Một số kết quả thực nghiệm.
- Với khoảng cách ngưỡng riêng β = 3000.
Tên Đối Lần Nhận Nhận Không
tượng nhận dạng dạng sai nhận
dạng đúng dạng
được
1 x
2 x
3 x
4 x
Subject 01
5 x
6 x
7 x
8 x
9 x
Subject 02 1 x
2 x
3 x
4 x
5 x
6 x
7 x
8 x
Subject 03 1 x
2 x

Bộ môn Tin học công nghiệp 48


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
3 x
4 x
5 x
6 x
7 x
Subject 04 1 x
2 x
3 x
4 x
5 x
6 x
Subject 05 1 x
2 x
3 x
4 x
5 x
Subject 06 1 x
2 x
3 x
4 x
Subject 07 1 x
2 x
3 x

Bộ môn Tin học công nghiệp 49


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Subject 08 1 x
2 x
Subject 09 1 x

Tên đối Số ảnh huấn Số Tỷ lệ Nhận dạng


tượng luyện của 1 ảnh đúng.
đối tượng test
Subject 01 1 9 22.22%
Subject 02 2 8 50%
Subject 03 3 7 57.14%
Subject 04 4 6 16.67%
Subject 05 5 5 80%
Subject 06 6 4 75%
Subject 07 7 3 0%
Subject 08 8 2 0%
Subject 09 9 1 0%

Bộ môn Tin học công nghiệp 50


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

- Với khoảng cách ngưỡng riêng β = 7000.

Tên Đối Lần Nhận dạng Nhận Không nhận


tượng nhận đúng dạng sai dạng được
dạng
1 x
2 x
3 x
4 x
Subject 01
5 x
6 x
7 x
8 x
9 x
1 x
2 x
3 x
4 x
Subject 02
5 x
6 x
7 x
8 x
1 x

Bộ môn Tin học công nghiệp 51


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
2 x
3 x
Subject
03 4 x
5 x
6 x
7 x
1 x
2 x
3 x
Subject 04
4 x
5 x
6 x
1 x
2 x
Subject 05
3 x
4 x
5 x
1 x
2 x
Subject 06
3 x
4 x
Subject 07 1 x
2 x

Bộ môn Tin học công nghiệp 52


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
3 x
Subject 08 1 x
2 x
Subject 09 1 x

Tên đối Số ảnh huấn Số Tỷ lệ Nhận dạng


tượng luyện của 1 đối ảnh đúng.
tượng test
Subject 01 1 9 88.89%
Subject 02 2 8 75%
Subject 03 3 7 71.43%
Subject 04 4 6 83.33%
Subject 05 5 5 100%
Subject 06 6 4 100%
Subject 07 7 3 33.33%
Subject 08 8 2 50%
Subject 09 9 1 100%

Nhận xét: Từ bảng kết quả, ta có thể thấy rằng, kết quả nhận dạng phụ thuộc rất nhiều
vào giá trị của khoảng cách ngưỡng riêng. Do đó, cần điều chỉnh thông số một cách phù hợp để
có thể thu được kết quả tốt nhất. Ngoài ra, các ảnh bị nhận dạng sai hoặc không nhận dạng
được phụ thuộc vào chất lượng ảnh đầu vào, đa số các ảnh bị nhận dạng sai hoặc không nhận
dạng được đều là các bức ảnh bị chụp thiếu sáng.

Bộ môn Tin học công nghiệp 53


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

Một số kết quả nhận dạng với dữ liệu ảnh chưa chuẩn hóa.
- Ảnh đầu vào là ảnh tĩnh.

- Ảnh đầu vào là ảnh chụp từ camera.

Bộ môn Tin học công nghiệp 54


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền

 Tổng kết chương.


- Phân tích, thiết kế hệ thống phần mềm nhận dạng mặt người.
o Thiết kế các chức năng của phần mềm.
o Thiết kế cơ sở dữ liệu.
o Thiết kế giao diện.
- Sử dụng phần mềm nhận dạng mặt người dựa trên bộ cơ sở dữ liệu đã được
chuẩn hóa Yalefaces. Nhận xét kết quả nhận dạng.

Bộ môn Tin học công nghiệp 55


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
KẾT LUẬN
Báo cáo đồ án môn học đã trình bày các kiến thức cơ bản để giải quyết bài toán nhận dạng
khuôn mặt người. Riêng phương pháp nhận dạng mặt người Eigenfaces được xây dựng dựa trên
phương pháp Eigenfaces-sử dụng thuật toán PCA đã được trình bày cụ thể, chi tiết trong chương
4. Phần mềm Face Recognition áp dụng phương pháp Eigenfaces được thiết kế để nhận dạng
mặt người. Từ kết quả thực nghiệm cho thấy, độ chính xác của chương trình tương đối cao
khoảng 80% nhận dạng đúng. Tuy nhiên, do thời hạn thời gian hạn chế nên chương trình vẫn
còn nhiều nhược điểm và nhiều ý tưởng chưa được thực hiện.
Để chương trình có thể được sử dụng vào trong thực tế, cần giải quyết những nhược điểm
mà phần mềm còn gặp phải, thực hiện các ý tưởng mới nhằm năng cao tốc độ, hiệu suất và độ
chính xác của chương trình.
Các ý tưởng mới:
- Chuẩn hóa ảnh đầu vào nhằm tăng khả năng nhận dạng. Đưa tất cả các ảnh chưa chuẩn
hóa về cùng một kênh màu (đã thực hiện được), cùng kích thước sao cho khuôn mặt ở giữa tâm
ảnh. (chưa thực hiện được).
- Các Button mở ra các form để xem thông tin của tập training set và thông tin đối tượng
sẽ được chuyển sang các tab, nhằm làm gọn chương trình.
- Sẽ tiến hành làm việc với cơ sở dữ liệu là một thư mục trong máy tính.
- Nhận dạng mặt người qua webcam. Ta đã thực hiện được công việc mở camera, thu dòng
hình ảnh, hiển thị lên Imagebox và phát hiện các mặt người có trong đó. Công việc mới cần
thực hiện ở đây là, sau khi phát hiện, xác định được vị trí các khuôn mặt trong ảnh. Chương
trình sẽ tự động thực hiện việc nhận dạng và hiển thị kết quả ngay trên dòng hình ảnh của
camera. Đó là, nếu có thông tin của người trong hình, thì hiển thị dòng chữ là tên và id của
người đó, ngược lại thì hiển thị dòng chữ “Unknow”. Ta có thể ứng dụng chức năng này trong
việc điểm danh sinh viên trong các trường đại học.

Bộ môn Tin học công nghiệp 56


ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
DANH MỤC TÀI LIỆU THAM KHẢO
[1] Trần Lê Hồng Dũ, “Phát hiện khuôn mặt dựa trên đặc trưng lồi lõm”. ĐH Quốc gia
TP Hồ Chí Minh, 2005.
[2] https://4fire.wordpress.com/2012/07/31/nhan-dang-mat-nguoi-face-recognition-bang-
pca-eigen-face-matlab-code-on-orl-database/
[3] TS. Đỗ Năng Toàn, TS. Phạm Việt Bình. Giáo trình môn học: “Xử lý ảnh”. Khoa Công
Nghệ Thông Tin. ĐH Thái Nguyên.
[4] PGS.TS Nguyễn Quang Toàn. “Xử lý ảnh” Học Viện Công Nghệ Bưu Chính Viễn
Thông. Hà Nội-2006.
[5] Nguyễn Văn Long. “Ứng dụng xử lý ảnh trong thực tế với thư viện OpenCV C/C++”
[6]http://www.codeproject.com/Articles/722569/Video-Capture-using-OpenCV-with-
Csharp https://vtct.wordpress.com/2013/05/
[7] Trần Thanh Duy, Nguyễn Minh Quang. Báo Cáo đề tài: “Thiết kế và thi công Robot
bám đối tượng mặt người”.
Trường ĐH SPKT TP. HCM.
[8] Lê Mạnh Tuấn. Khóa luận tốt nghiệp ĐH hệ chính quy: “Phát hiện mặt người trong
ảnh và ứng dụng”. ĐH Công Nghệ. Đại Học Quốc Gia Hà Nội.
[9] Nguyễn Trung Hiếu, Bùi Ngọc Liêm. Đồ án tốt nghiệp: “Dò tìm và cắt ảnh mặt người
dùng PCA”. ĐH Công Nghiệp TP. HCM.
[10] Lê Hoàng Thanh. “Dò tìm và nhận dạng khuôn mặt người bằng Eigenfaces”
[11]
http://vi.wikipedia.org/wiki/Ma_tr%E1%BA%ADn_hi%E1%BB%87p_ph%C6%B0%C6%A1
ng_sai

Bộ môn Tin học công nghiệp 57

You might also like