Đồ án môn Thị giác máy tính - Đề tài: Nhận dạng mặt người trên Matlab

ĐỒ ÁN MÔN THỊ GIÁC MÁY TÍNH  
ĐỀ TÀI :  
NHẬN DẠNG MẶT NGƯỜI  
TRÊN MATLAB  
Giảng viên hướng dẫn: Lê Thị Ngọc Thúy  
Sinh viên thực hiện:  
Đỗ Thanh Huy  
Trần Quốc Tuân  
Đỗ Thị Thảo  
Cù Quang Anh  
MỤC LỤC  
LỜI MỞ ĐẦU.............................................................................................................2  
PHẦN I: TỔNG QUAN VỀ NHẬN DIỆN KHUÔN MẶT THUẬT TOÁN  
PCA..............................................................................................................................3  
I. CÔNG NGHỆ NHẬN DIỆN MẶT NGƯỜI TRONG THỊ GIÁC MÁY  
TÍNH .................................................................................................................3  
II. THUẬT TOÁN PCA ........................................................................................6  
III. THUẬT TOÁN PCA TRONG NHẬN DIỆN KHUÔN MẶT .....................11  
PHẦN II: ẢNH MÀU VÀ CÁC LỆNH XỬ ẢNH MÀU TRÊN MATLAB..16  
I. GIỚI THIỆU ẢNH S.....................................................................................16  
1. Ảnh số.............................................................................................................16  
2. Các kiểu hình ảnh trong Matlab......................................................................21  
3. Chuyển đổi giữa những kiểu dữ liệu ..............................................................22  
4. Các phép toán số học cơ bản với dữ liệu ảnh .................................................23  
5. Các hàm hiển thị trong Matlab .......................................................................24  
6. Các hàm sử dụng trong đề tài .........................................................................25  
II. GIAO DIỆN GUI CỦA MATLAB .................................................................26  
1. Giao diện GUI ................................................................................................26  
2. Giới thiệu qua chương trình nhận dạng mặt người ........................................28  
III: SƠ ĐỒ KHỐI VÀ CODE CHƯƠNG TRÌNH...............................................31  
1. Sơ đồ khối.......................................................................................................31  
2. Code chương trình ..........................................................................................32  
1
LỜI MỞ ĐẦU  
Trong thế giới ngày nay với sự phát triển mạnh mẽ của kỹ thuật số mạng toàn  
cầu, vấn đề về đảm bảo an toàn về thông tin cũng như vật chất ngày càng trở nên quan  
trọng và khó khăn. Một trong những phương pháp đơn giản nhất nhưng cũng là bài  
toán phức tạp nhất là xác định một người thông qua khuôn mặt từ đó cập nhật thông  
tin để đảm bảo an toàn thông tin cũng như tìm kiếm tội phạm.  
Trong nhiều năm qua có rất nhiều công trình nghiên cứu về bài toán nhận dạng  
khuôn mặt người từ ảnh đen trắng, xám đến ảnh màu như ngày hôm nay. Các nghiên  
cứu đi từ bài toán đơn giản, mỗi ảnh chỉ một khuôn mặt người nhìn thẳng vào thiết  
bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài  
toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, nhiều tư thế  
thay đổi trong ảnh. Không những vậy mà còn mở rộng phạm vi từ môi trường xung  
quanh khá đơn giản cho đến môi trường xung quanh rất phức tạp nhằm đáp ứng nhu  
cầu của con người.  
Mục tiêu của đề tài “Nhận dạng mặt người bằng thuật toán PCA trên Matlab” là  
thực hiện chương trình tìm kiếm một bức ảnh có khuôn mặt một người trong tập ảnh  
cơ sở giống với khuôn mặt của người trong bức ảnh cần kiểm tra bằng ngôn ngữ  
Matlab.  
Để tiện theo dõi em xin trình bày đề tài theo ba phần:  
Phần đầu tổng quan về nhận diện khuôn mặt thuật toán PCA sử dụng  
trong bài.  
Phần 2 giới thiệu về ảnh màu và những thứ liên quan đến việc nhận dạng  
khuôn mặt phần mềm sử dụng.  
Sau cùng là code chương trình và thuật toán để dễ hình dung hơn  
Do tài liệu tham khảo hạn chế, trình độ hạn và kinh nghiệm thực tiễn còn non  
kém nên đề tài còn nhiều thiếu sót. Chúng em mong nhận được những ý kiến lời  
nhận xét của để giúp chúng em hoàn thiện hơn đề tài này.  
2
PHẦN I: TỔNG QUAN VỀ NHẬN DIỆN KHUÔN MẶT  
THUẬT TOÁN PCA  
I.  
CÔNG NGHỆ NHẬN DIỆN MẶT NGƯỜI TRONG THỊ GIÁC MÁY  
TÍNH.  
Sinh trắc học được sử dụng trong quá trình xác thực người bằng cách sử dụng các  
đặc trưng của con người để xác minh hoặc nhận dạng. rất nhiều loại hệ thống sinh  
trắc học như nhận diện dấu vân tay, nhận diện và phát hiện khuôn mặt, nhận diện  
mống mắt…Các đặc trưng sinh học này này thường được sử dụng cho nhận dạng  
người trong hệ thống giám sát hoặc nhận dạng tội pham. Lợi thế của việc sử dụng đặc  
trưng sinh học trong nhận dạng đó là chúng rất khó có thể thay đổi theo thời gian và là  
các đặc trưng độc nhất của mỗi người.  
Một hệ thống nhận diện khuôn mặt một ứng dụng máy tính, có khả năng nhận  
dạng và xác minh một người từ một ảnh số hoặc từ khung video trong video.  
Các pha trong một hệ thống nhận diện khuôn 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 đầu vào  
(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ử ả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 đang nói tới các ảnh có góc nhìn thẳng), tiếp đến bước trích chọn đặc trưng  
(Feature extraction), ở bước này một phương pháp trích chọn đặc trưng nào đó (mẫu  
nhị phân cục bộ – Local Binary Pattern – LBP, Gabor wavelets, …) sẽ được sử dụng  
với ảnh khuôn mặt để trích xuất các thông tin đặc trưng cho ảnh, kết quả mỗi ảnh sẽ  
được biểu diễn dưới dạng một vector đặc trưng, bước tiếp theo là bước nhận dạng hay  
phân lớp, tức là xác định danh tính hay nhãn của ảnh đó ảnh của ai. Ở bước phân  
lớp, thường thì phương pháp k-nearest neighbor sẽ được sử dụng, ngoài ra có thể sử  
dụng SVM (Support Vector Machine) tuy nhiên không mang lại hiệu quả cao. 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) 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), thông  
thường tập này được dùng để sinh ra một không gian con (projection subspace) là một  
3
ma trận phương pháp hay được sử dụng 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 trưng (Feature vector) vì các vector này thường độ  
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 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 Fisher Linear  
Discriminant Analysis-Fisherface một phương pháp làm việc với tập Training mà  
mỗi đối tượng 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 qumột ma trận với mỗi cột  
của ma trận 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 khảo  
sát, sau khi tiền xử lý xong, mỗi ảnh sẽ được áp dụng phương pháp trích chọn đặc  
trưng (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 khoảng cách (distance) gần với nó  
nhất. Ở đây cần lưu ý là mỗi ảnh 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.  
Ứng dụng của nhận diện khuôn mặt người:  
Hệ thống tương tác giữa người và máy: giúp những người bị tật hoặc khiếm  
khuyết thể trao đổi.  
Hệ thống quan sát, theo dõi và bảo vệ.  
Thẻ căn cước, chứng minh thư nhân dân (Face Indentification).  
Tìm kiếm tổ chức dữ liệu liên quan đến con người thông qua khuôn mặt  
người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng truyền  
hình.  
Ứng dụng trong video phone.  
Phân loại trong lưu trữ hình ảnh trong điện thoại di động.  
Kiểm tra trạng thái người lái xe có ngủ gật, mất tập trung hay không, và hỗ trợ  
thông báo khi cần thiết.  
Trong lĩnh vực thiết kế điều khiển robot.  
Phương pháp nhận diện khuôn mặt người:  
Dựa vào những đặc điểm của phương pháp nhận diện khuôn mặt người trên ảnh.  
Các phương pháp này được chia làm bốn hướng tiếp cận chính:  
4
Hướng tiếp cận dựa trên tri thức: Mã hóa các hiểu biết của con người về khuôn  
mặt thành các luật. Thông thường các luật tả mối quan hệ giữa các đặc  
trưng.  
Hướng tiếp cận dựa trên các đặc trưng không thay đổi: Mục tiêu của các thuật  
toán này là đi tìm các đặc trưng tả cấu trúc khuôn mặt người mà các đặc  
trưng này sẽ không thay đổi theo thời gian, và không phụ thuộc vào biểu cảm  
khuôn mặt, vị trí đặt thiết bị thu hình hay điều kiện ánh sáng.  
Hướng tiếp cận dựa trên so mẫu khớp: Dùng các mẫu chuẩn của khuôn mặt  
người (các mẫu này được lựa chọn lưu trữ) để tả cho khuôn mặt người  
hay các đặc trưng khuôn mặt (các mẫu này phải được chọn làm sao cho tách  
biệt nhau theo tiêu chuẩn mà các tác giả định ra để so sánh). Các mối tương  
quan giữa những dữ liệu ảnh đưa vào và các mẫu dùng để xác định khuôn mặt  
người.  
Hướng tiếp cận dựa trên diện mạo: Trái ngược hẳn với so mẫu khớp, 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. Hay một số tác giả còn gọi  
hướng tiếp cận này là hướng tiếp cận theo phương pháp học.  
Ưu nhược điểm  
So với các công nghệ khác  
Trong số các kỹ thuật sinh trắc học, nhận dạng khuôn mặt thể không phải là  
phương pháp đáng tin cậy hiệu quả nhất. Tuy nhiên, một trong những lợi thế quan  
trọng là nó không đòi hỏi sự hợp tác của các đối tượng thử nghiệm. Các hệ thống thiết  
kế được lắp đặt tại các sân bay, khu chung cư, những nơi công cộng khác có thể  
xác định các cá nhân giữa đám đông, mà không bỏ sót một ai. Sinh trắc học khác như  
dấu vân tay, quét mống mắt, nhận dạng giọng nói không thể thực hiện được điều  
này.  
Nhược điểm  
Nhận dạng khuôn mặt còn rất xa mới thể đạt đến mức độ hoàn hảo, ngoài ra  
cũng rất khó để thực hiện phương pháp này trong các điều kiện nhất định. Ralph  
Gross, một nhà nghiên cứu tại Viện Mellon Robotics Carnegie, mô tả một trở ngại liên  
quan đến các góc nhìn của khuôn mặt: "Nhận dạng khuôn mặt đã thực hiện được khá  
tốt ở phía mặt trước và phía chênh lệch 20 độ, nhưng ngay sau khi bạn đi về phía góc  
khuất, thì nó có vấn đề."  
Các điều kiện khác mà nhận dạng khuôn mặt không làm việc tốt bao gồm thiếu  
ánh sáng, đeo kính mát, tóc dài, hoặc các đối tượng một phần khuôn mặt bị che, và  
các hình ảnh độ phân giải thấp. Một bất lợi nghiêm trọng nhiều hệ thống sẽ kém  
5
hiệu quả nếu biểu hiện khuôn mặt khác nhau. Ngay cả một nụ cười lớn, cũng thể  
làm cho hệ thống giảm tính hiệu quả. Ngoài ra còn có sự không thống nhất trong các  
bộ dữ liệu được sử dụng bởi các nhà nghiên cứu.  
Thách thức đối với nhận diện khuôn mặt:  
Hiện nay các vấn đề sau được coi là thách thức lớn (chưa phương pháp tối ưu)  
đối với nhận dạng mặt:  
Sự thay đổi hướng khuôn mặt: kết quả với các ảnh hướng thay đổi (  
không phải chính diện) còn khá khiêm tốn.  
,
> 45°  
Độ phân giải thấp: ảnh thu được từ các camera giám sát thường có kích thước  
chất lượng rất rất thấp, các kết quả nghiên cứu về lĩnh vực này còn chưa  
nhiều.  
Nhận diện khuôn mặt dựa trên video: với sự phát triển của các phương tiện  
multimedia, thông tin mặt người trong các dữ liệu video là vô cùng nhiều, tuy  
nhiên hầu hết các phương pháp nhận dạng vẫn làm việc với ảnh tĩnh trích xuất  
từ dữ liệu video, chưa phương pháp tốt tận dụng hết ưu thế của dữ liệu  
video.  
Các hệ thống lớn: các cơ sở dữ liệu ảnh khuôn 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, dụ CSDL ảnh khuôn mặt của cảnh sát có  
thể chứa từ hàng triệu tới hơn 1 tỉ ảnh …  
Điều kiện lão hóa: việc nhận dạng ảnh mặt thay đổi theo thời gian thực sự vẫn  
còn là một vấn đề lớn ngay cả đối với khả năng nhận dạng của con người.  
Điều kiện sáng: là một trong những thách thức lớn nhất của nhận dạng mặt,  
chưa phương pháp tốt cho các ảnh chụp ở điều kiện ngoài trời.  
II.  
THUẬT TOÁN PCA.  
Phân tính thành phần chính (Principal component analysis) hay còn gọi là PCA là  
một trong những kết quả đẹp từ việc áp dụng đại số tuyến tính. PCA được sử dụng  
nhiều trong các khuôn mẫu phân tích bởi vì nó là phương pháp không cần tham số và  
đơn giản cho việc trích xuất thông tin thích hợp từ các tập dữ liệu không rõ ràng. PCA  
cung cấp một hướng đi cho việc làm thế nào để hạn chế một tập dữ liệu phức tạp tới  
một tập dữ liệu với số chiểu nhỏ hơn để hiện ra thông tin ẩn dưới tập dữ liệu không rõ  
ràng đó.  
Thông thường để hiểu một hiện tượng nào đó, ta thường đo lường một vài đại  
lượng trong hệ thống. Ta có thể không tính toán được điều đã xảy ra do dữ liệu đo  
được rất mờ, không rõ ràng, số lượng các biến đo lường thể rất lớn tại các  
6
thời điểm dễ gây nhầm lẫn. dụ như với một hệ thống đơn giản ta chỉ cần một vài đo  
lường để tính toán hệ thống đó, nhưng đó với trường hợp ta đã những kinh  
nghiệm trước đó về hệ thống, nếu không có kinh nghiệm về hệ thống, thường thì ta sẽ  
sử dụng những hiểu biết đã để đo lường hệ thống này, nhưng những hiểu biết này  
không phù hợp với hệ thống nên các phép đo này sử dụng một mô hình nhiều chiều  
hơn thực tế để tả hệ thống, gây nên dư thừa dữ liệu không rõ ràng. Thuật toán  
PCA rất hữu dụng trong những trường hợp này. Nó sẽ biến đổi tập dữ liệu đo lường  
dư thừa, nhiễu lớn về tập dữ liệu biểu diễn diễn tốt nhất (dễ quan sát nhất, dễ phân  
biệt nhất) hệ thống. Với một hệ thống liên tục tuyến tính nếu ta đưa các đo lường  
vào một không gian vector nơi mỗi thể hiện của hệ thống được xem như một  
vector thuộc không gian vector đó thì nó sẽ tổ hợp tuyến tính của các vector cơ sở  
của không gian vector đó (số các vector cơ sở số chiều của không gian đó). Ta sẽ sử  
dụng một phép biến đổi tuyến tính để ánh xạ tập dữ liệu gốc vào tập dữ liệu mới và ta  
mong muốn rằng tập dữ liệu mới này sẽ giảm sự dư thừa nhiễu. Nhiệm vụ của ta là  
tìm ra phép biến đổi này.  
Một số đặc điểm của PCA:  
Giúp giảm số chiều của dữ liệu.  
Thay vì giữ lại các trục tọa độ của không gian cũ, PCA xây dựng một không  
gian mới ít chiều hơn, nhưng lại khả năng biểu diễn dữ liệu tốt tương đương  
không gian cũ, nghĩa đảm bảo độ biến thiên (variability) của dữ liệu trên mỗi  
chiều mới.  
Các trục tọa độ trong không gian mới tổ hợp tuyến tính của không gian cũ,  
do đó về mặt ngữ nghĩa, PCA xây dựng đặc trưng mới dựa trên các đặc trưng  
đã quan sát được. Điểm hay là những đặc trưng này vẫn biểu diễn tốt dữ liệu  
ban đầu.  
Trong không gian mới, các liên kết tiềm ẩn của dữ liệu thể được khám phá,  
nếu đặt trong không gian thì khó phát hiện hơn, hoặc những liên kết như  
thế không thể hiện rõ.  
Giả sử, với X là ma trận các vector biểu diễn tập dữ liệu gốc, Y là ma trận các  
vector biểu diễn lại tập dữ liệu. P là phép biến đổi tuyến tính. Công thức để ánh xạ tập  
dữ liệu gốc vào tập dữ liệu biểu diễn lại nsau:  
(1)  
푃푋 = 푌  
Sau đây ta sẽ phân tích làm thế nào để xác định P. Có hai đại lượng toán học mà  
chúng ta cần quan tâm đó phương sai và hiệp phương sai. Trong thuyết xác  
7
Phương sai của một biến ngẫu nhiên là một độ đo sự phân tán thống của  
biến đó, nó hàm ý các giá trị của biến đó thường ở cách giá trị kỳ vọng bao xa.  
2
푋 ― 푋  
=1  
2
=  
(푛 ― 1)  
Hiệp phương sai là độ đo sự biến thiên cùng nhau của hai biến ngẫu nhiên.  
푋 ― 푋 푌 ― 푌  
=1  
푐표푣(푋,푌) =  
(푛 ― 1)  
Hiệp phương sai của hai biến ngẫu nhiên X và Y cho biết mối tương quan giữa X  
và Y. Giá trị của hiệp phương sai không quan trọng bằng dấu của nó.  
Nếu giá trị hiệp phương sai là dương chỉ ra rằng X và Y tăng hoặc giảm cùng  
nhau.  
Nếu giá trị hiệp phương sai là âm sẽ chỉ ra rằng X sẽ tăng trong khi Y sẽ giảm  
hoặc ngược lại.  
Nếu giá trị hiệp phương sai bằng không, X và Y độc lập với nhau.  
Hiệp phương sai là công cụ hữu dụng để tìm mối liên hệ giữa các chiều trong một  
tập dữ liệu số chiều cao. Hiệp phương sai của một biến bằng phương sai của biến  
đó.  
Các vector trong không gian vector được xem như một biến ngẫu nhiên nhiều  
chiều, mỗi thành phần của vector là một biến ngẫu nhiên vô hướng. Giả sử ta có  
vector sau.  
1
=  
Ma trân hiệp phương sai của của X có dạng sau.  
푐표푣(,) 푐표푣(,) ⋯ 푐표푣(,)  
1
1
1
2
1
1
푐표푣(,) 푐표푣(,) ⋯ 푐표푣(,)  
2
1
2
2
2
=  
푋푋 =  
푛 ― 1  
푐표푣(,) 푐표푣(,) ⋯ 푐표푣(,)  
1
2
Ta có nhận xét sau về ma trận hiệp phương sai:  
8
Đường chéo ma trận là các phương sai của các thành phần của vector ngẫu  
nhiên X.  
Các vị trí không phải đường chéo cho thấy mối tương quan dữ liệu theo các  
chiều tương ứng trong vector ngẫu nhiên X.  
Ma trận C là ma trận đối xứng.  
X là vector ngẫu nhiên nên ta có thể nói các thành phần không phải đường chéo  
của ma trận C biểu diễn mối tương quan giữa các chiều trong tập dữ liệu. Các thành  
phần đường chéo biểu diễn khả năng phân tán thống của dữ liệu theo chiều tương  
ứng. Như vậy để hệ thống thể quan sát và phân biệt rõ ta cần tăng giá trị phương  
sai và giảm giá trị hiệp phương sai để giảm nhiễu dư thừa. Nguyên nhân là do để  
biểu diễn tốt nhất tập dữ liệu thì nhiễu dư thừa phải nhỏ nhất.  
Một đo lường phổ biến cho biết chất lượng dữ liệu tỉ số tín hiệu trên nhiễu SNR,  
2
hay tỉ số của phương sai  
.
2
푡í푛 ℎ푖ệ푢  
푆푁푅 =  
2
푛ℎ푖ễ푢  
SNR cao ( 1) chỉ ra rằng dữ liệu độ chính xác cao, trong khi SNR thấp chỉ ra  
dữ liệu nhiễm nhiễu lớn. Trong ma trận hiệp phương sai các thành phần đường chéo là  
phương sai dữ liệu theo chiều tương ứng. Chiều phương sai lớn tương ứng với hệ  
thống thay đổi rất nhiều với chiều này tức nghĩa là nó phụ thuộc rất nhiều vào những  
chiều này nên ta có thể coi đây là các thành phần  
, còn chiều phương sai  
푡í푛 ℎ푖ệ푢  
nhỏ thì hệ thống thay đổi rất ít theo chiều đó nên ta có thể coi như  
cần loại  
푛ℎ푖ễ푢  
bỏ (do những thành phần nhiễu thường thay đổi rất ít xung quanh một hằng số nào  
đó), và ta cũng có xu hướng loại bỏ các chiều có tính chất hằng do các chiều này  
không giúp phân biệt giữa các đo lường trong hệ thống. Mục tiêu của chúng ta là  
tìm ra các chiều mới giúp phân biệt rõ các đo lường trong hệ thống. Những chiều  
không giúp phân biệt đưa vào hệ thống càng làm cho hệ thống khó hiểu hơn. Ta xét  
tiếp hình sau  
9
Trên đây một hệ tọa độ hai chiều  
và , các chấm đen là các điểm trong hệ  
2
1
tọa độ biểu diễn vị trí một vật nào đó trong hệ tọa độ 2 chiều, đường nét đứt là  
đường thẳng . Hình a). biểu diễn mức độ dư thừa trong tập quan sát thấp  
= 푘푟 +푏  
2
1
nhất. Hình c). biểu diễn mức độ dư thừa trong tập quan sát là nhiều nhất. Trong hình  
c) ta nhận thấy vị trí của vật gần như nằm trên đường thẳng, như vậy thay vì biểu diễn  
vị trí của vật trong hình c) bằng hệ tọa độ 2 chiều thì ta chỉ cần biểu diễn vị trí theo  
một trục tọa độ song song với đường thẳng  
. Việc biểu diễn bằng hai trục  
= 푘푟 +푏  
2
1
tọa độ ở đây dư thừa và không cần thiết. Như vậy nếu dữ liệu biểu diễn theo 2 chiều  
phụ thuộc tuyến tính vào nhau thì sẽ xảy ra tình trạng dư thừa. Để tránh tình trạng  
dư thừa trong biểu diễn dữ liệu thì thì  
chiều bằng không.  
hay mối tương quan giữa các  
푐표푣(, ) = 0  
1
2
Như vậy để biểu diễn tốt hệ thống thì ma trận hiệp phương sai của vector dữ liệu  
phải có các thành phần đường chéo có giá trị khác không và các thành phần không  
thuộc đường chéo có giá trị bằng không, nói cách khác ma trận hiệp phương sai phải  
ma trận chéo. Nhắc đến ma trận chéo làm ta liên tưởng tới các bài toán chéo hóa ma  
trận trong đại số tuyến tính.  
Trở lại với công thức (1). Ma trận hiệp phương sai của Y có dạng.  
1
=  
푌푌  
푛 ― 1  
1
=
(푃푋)(푃푋)  
푛 ― 1  
1
푇 푇  
=
푃푋푋 푃  
푛 ― 1  
1
=
푃(푋푋 )푃  
푛 ― 1  
1
1
, Ở đây  
và là ma trận đối xứng.  
là ma trận hiệp  
=  
푃퐴푃  
= 푋푋  
푛 ― 1  
푛 ― 1  
phương sai của X.  
Như vậy ta phải tìm P để  
là ma trân chéo. Từ công thức trên ta thấy bài toán trở  
về các bài toán chéo hóa trong đai số tuyến tính – Tìm ma trận P để  
là ma trân  
푃퐴푃  
chéo. Trong đại số tuyến tính, một ma trận đối xứng chéo hóa được bởi một ma trận  
các vector riêng trực giao của nó. Như vậy P phải một ma trận trực giao với các  
hàng là các vector riêng của A. Ta có định nghĩa về vector riêng và giá trị riêng như  
sau:  
10  
được gọi là giá trị riêng của ma trân  
nếu tồn tại  
không  
,…,푥  
= []  
푖푗 푛×푛  
1
đồng thời bằng 0 sao cho:  
1
1
= 휆  
1
Khi đó  
được gọi là vector riêng ứng với giá trị riêng .  
=  
∈ ℝ  
Trong đại số tuyến tính người ta đã chứng minh được rằng ma trận chéo hóa từ ma  
trận A có các thành phần đường chéo là các giá trị riêng của A. Như vậy ma trận hiệp  
phương sai của Y có các thành phần đường chéo là các giá trị riêng của A tương ứng  
với các vector hàng của P là các vector riêng của A. Ta mong muốn thành phần đường  
chéo của ma trận hiệp phương sai của Y càng lớn càng tốt. Như vậy ta chỉ lựa chọn  
các giá trị riêng lớn nhất và các vector riêng tương ứng với giá trị riêng đó cho thành  
phần đường chéo của  
và ma trận P.  
Nói 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 của tập mẫu X. Sau đó, ta 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.  
III. THUẬT TOÁN PCA TRONG NHẬN DIỆN MẶT NGƯỜI  
PCA được phát minh năm 1901 bởi Karl Pearson, là một thủ tục han chế biến khi  
thu được một tập dữ liệu sự dư thừa. Thuật toán này giúp cho việc hạn chế các biến  
vào một số lượng nhỏ hơn các biến khác được gọi là các thành phần chính. Khi thực  
hiện nhận diện ảnh số lượng ảnh và kích thước ảnh một vấn đề lớn trong không gian  
nhiều chiều. Mục tiêu của PCA trong nhận diện khuôn mặt hạn chế chiều của dữ  
liệu bằng cách dữ lại càng nhiều sự biến thiên có thể càng tốt trong tập dữ liệu gốc  
(điều này nó thể làm mất thông tin). Không gian hạn chế chiều tốt nhất sẽ được xác  
định bởi các thành phần chính tốt nhất.  
Nhận diện khuôn mặt sử dụng PCA trong phương pháp khuôn mặt riêng, giúp cho  
vệc giảm kích thước của cơ sở dữ liệu cho nhận diện ảnh thông qua loại bỏ các vector  
riêng bằng không và các vector riêng ứng với các giá trị riêng rất nhỏ, đồng thời làm  
nổi bật nét đặc trưng ảnh, tăng khả năng phân biệt ảnh do việc giảm mối tương quan  
giữa các chiều trong tập dữ liệu ảnh huấn luyện, hay nói cách khác làm căng không  
gian vector ảnh huấn luyện, nhờ đó bằng cách tính khoảng cách ngắn nhất với ảnh  
cần nhận dạng ta có thể dễ dạng tìm được ảnh tương ttrong cơ sở dữ liệu.  
11  
Trong phương pháp này ảnh được lưu trữ như các vector đặc trưng trong cơ sở dữ  
liệu, được thực hiện bằng cách ánh xạ mỗi ảnh huấn luyện vào không gian khuôn mặt  
riêng. Các đặc trưng này có thể hoặc không liên quan với các đặc trưng thuộc về  
khuôn mặt như mắt, mũi, miệng hay tóc. Ảnh nhận diện được chiếu vào không gian  
khuôn mặt riêng và so sánh với ảnh trong cơ sở dữ liệu.  
Phương pháp khuôn mặt riêng là một phương pháp hiệu quả được sử dụng trong  
nhận diện khuôn mặt do tính đơn giản, tốc độ nhanh và khả năng học của nó. Các  
khuôn mặt riêng là các thành phần chính của một sự phân bố khuôn mặt, hay nói cách  
khác, nó là các vector riêng của ma trận hiệp phương sai của ảnh khuôn mặt nơi mà  
2
mỗi ảnh khuôn mặt N N pixel được coi như một điểm trong không gian  
chiều.  
×
Mỗi ảnh huấn luyện tương ứng với một vector riêng, cũng như ta có thể coi các vector  
riêng như một loại khuôn mặt. Mỗi ảnh khuôn mặt thể biểu diễn chính xác bởi tổ  
hợp tuyến tính của các khuôn mặt riêng. Số lương thể của các khuôn mặt riêng  
bằng với số lượng ảnh khuôn mặt trong tập huấn hiện. Các khuôn mặt cũng thể  
biểu diễn gần đúng bằng cách sử dụng khuôn mặt riêng tốt nhất, cái mà tương ứng với  
các giá trị riêng lớn nhất, đại diện cho phương sai lớn nhất giữa tập các ảnh.  
Các bước nhận diện ảnh sử dụng PCA.  
1. Biểu diễn lại ảnh khuôn mặt  
Tập huấn luyện với m ảnh kích thước M N được biểu diễn lại thành các vector  
×
kích thước M N. Để đảm bảo tính chính xác thì mỗi khuôn mặt được chụp nhiều ảnh  
×
các góc độ khác nhau để tăng tính chính xác.  
Mỗi khuôn mặt được hiệu bởi  
dụ:  
.
Γ , Γ ,… Γ  
1
2
1
3
1  
2
1
3
1  
2
=
Mỗi ảnh được biểu diễn lại nsau:  
1
2  
1
3  
1
3
1  
1
2
2
1
Γ =  
1
Γ =  
2
Γ =  
2
Trong Matlab hàm reshape() được sử dụng đthay đổi kích thước ma trận, cú pháp  
như sau:  
12  
a = reshape (b, m, n);  
Với b là ma trận cần thay đổi, m, n là số hàng và cột của ma trận mới. m, n được  
lựa chọn sao cho số thành phần của ma trận gốc phải bằng với số thành phần của ma  
trận thay đổi kích thước.  
2. Tìm ảnh trung bình và ảnh trung bình chuẩn hóa  
Ảnh khuôn mặt trung bình là trung bình cộng các ảnh được tính bởi công thức:  
1
=  
Γ = (Γ + Γ + … + Γ )/푚  
1
2
=1  
dụ:  
1
2  
1
1
3
1  
2
1
2
2
1
1  
1  
2
+
+ … +  
3  
3  
Ảnh trung bình chuẩn hóa là sự khác biệt giữa ảnh gốc ảnh trung bình:  
= Γ ― 휓  
2
2
4
3  
5
2
3
0
4
1  
1  
0
=  
1
=  
2
=  
Đoạn code sau sẽ lấy giá trị trung bình các cột của ma trận y và tính  
% Tính , các cột của y tương ứng  
Γ
t=mean(y,2);  
for j=1:a  
y(:,j)=y(:,j)-t; % Tính  
end  
Việc lấy ảnh trung bình chuẩn hóa giúp cho việc tính ma trận hiệp phương sai ở  
bước sau dễ dàng hơn  
13  
3. Tính ma trận hiệp phương sai  
Ta coi mỗi ảnh tương ứng với một thể hiện của một lần chụp ảnh hay tương ứng  
với một đo lường. Vector ảnh một vector ngẫu nhiên và mỗi một lần chụp một  
thể hiển của vector ngẫu nhiên đó. Giả sử ta có A là một ma trận với các cột là các  
vector . Như vậy để tính mối tương quan giữa các chiều của vector ảnh ngẫu nhiên  
ta co công thức tính ma trận hiệp phương sai sau.  
. A là một ma trận với các cột là các vector  
.
= 퐴퐴  
= [,,…,]  
1
2
A có M N hàng và m cột, do đó ma trận C có kích thước (M N)  
(M N) rất  
×
×
×
×
lớn gây khó khăn cho các tính toán phía sau. Một cách đơn giản hơn là tính  
, ma  
퐴 퐴  
. Nhưng ta cần tính toán các vector riêng của ma trận  
trận này chỉ có kích thước  
× 푚  
C nên ta sẽ biến đổi công thức như sau:  
퐴 퐴푣 = 휆 푣  
푖 푖  
퐴퐴 퐴푣 = 퐴휆 푣  
푖 푖  
퐴퐴 (퐴푣 ) = 휆 (퐴푣 )  
Như vậy các vector riêng của ma trận C bằng  
với  
là vector riêng của ma  
퐴푣  
trận  
. Do đó để tính các vector riêng của ma trận C có kích thước (M N) (M  
×
퐴 퐴  
×
N) đầu tiên ta tính các vector riêng của ma trận  
sau đó nhân trái ma trận A,  
퐴푣  
×
퐴 퐴  
. Điều này giúp đơn giản trong việc tính toán.  
4. Không gian khuôn mặt riêng  
Các vector riêng của ma trận  
là  
được hiệu là . Khi ta biến đổi lại  
퐴푣 푈  
푖 푖  
퐴퐴  
kích thức của  
ngược lại thành kích thước ảnh, giống như một ảnh khuôn mặt  
nhưng khó nhìn hơn được gọi là các khuôn mặt riêng. Mỗi vector riêng ứng với  
một khuôn mặt riêng trong không gian khuôn mặt, các vector riêng bằng vector 0  
được loại bỏ do đó cũng làm hạn chế không gian khuôn mặt tới một mức độ nào đó.  
Một ảnh khuôn mặt thể được chiếu vào không gian khuôn mặt riêng bằng công  
thức.  
Ω = 푈 휙  
14  
Trong đó U là ma trận chuyển đổi có các cột là các vector riêng  
ảnh trung bình chuẩn hóa của ảnh khuôn mặt cần chiếu.  
đã tìm được.  
퐴푣  
Trong matlab ta có hàm eig trả về giá trị riêng và vector riêng của một ma trận nào  
đó. Cú pháp như sau [b c] = eig(A) trong đó b là một ma trận với các cột là vector  
riêng, c là một ma trận với các thành phần đường chéo là các giá trị riêng tương ứng  
với các vector riêng trong b.  
Để thể chéo hóa trực giao được ma trận đối xứng thì ta cần trực chuẩn hóa hệ  
các vector riêng nhận được. Trong matlab có hàm orth trả về ma trận hệ các vector  
trực chuẩn với mỗi vector tương ứng với các cột của ma trận.  
5. Bước nhận diện ảnh  
Ảnh kiểm tra được chiếu vào không gian khuôn mặt để thu được vector  
Γ
Ω
Ω = (Γ ― 휓)  
Khoảng cách từ vector tới mỗi vector khuôn mặt riêng  
được gọi khoảng  
Ω
Ω
2
2
cách Ơ-clit được định nghĩa bởi công thức:  
k = 1,2,…,m  
= ‖Ω ― Ω ‖  
Trong đó  
một vector mô tả lớp khuôn mặt thứ k. Một khuôn mặt được xác  
Ω
định thuộc lớp k nếu  
nhỏ nhỏ nhất dưới một mức ngưỡng T chọn trước.  
Ngược lại được coi là không thuộc lớp k.  
Trong trường hợp các ảnh tương đối giống nhau, vẫn một số ảnh không phải  
ảnh cần nhận diện lọt dưới ngưỡng, khi đó thể gây nhầm lẫn trong quá trình nhận  
diện. Để loại bỏ điều này ta sử dụng thuật toán láng giềng gần nhất. Ta sẽ xem xét  
khoảng cách từ ảnh cần nhận dạng tới mỗi ảnh dưới ngưỡng. Do mỗi khuôn mặt ta  
chụp nhiều ảnh, nên có thể coi mỗi khuôn mặt một lơp. Ta đếm số ảnh dưới ngưỡng  
cho mỗi lớp, ảnh thuộc lớp nào mà dưới ngưỡng nhiều nhất thì ảnh cần nhận dạng sẽ  
thuộc lớp đó.  
15  
PHẦN II: ẢNH MÀU VÀ  
CÁC LỆNH XỬ ẢNH MÀU TRONG MATLAB  
I.  
GIỚI THIỆU ẢNH SỐ  
1. Ảnh số  
Ảnh số tập hợp các điểm ảnh với mức xám phù hợp dùng để tả ảnh gần với  
ảnh thật. Ảnh một sự vật đại diện cho con người, sinh vật hay sự vật nào đó... Ảnh  
động như ta thấy trên truyền hình thực chất tập hợp của rất nhiều ảnh tĩnh liên tiếp.  
Khi một ảnh đã được số hóa thì nó trở thành ảnh só và ảnh số này lại một tập hợp  
của rất nhiều phần tử ảnh được gọi điểm ảnh hay là “pixel”. Mỗi điểm ảnh lại được  
biểu diễn dưới dạng một số hữu hạn các bit.  
Chúng ta có thể chia ảnh ra làm ba loại khác nhau:  
Ảnh đen trắng: mỗi điểm ảnh được biểu diễn bởi một bit.  
Ảnh Gray-scale: mỗi điểm ảnh được biểu diễn bằng các mức chói khác  
nhau, thường thì ảnh này được biểu diễn bằng 256 mức chói hay là 8 bit cho  
mỗi điểm ảnh.  
Ảnh màu: mỗi điểm ảnh chia ra thành tín hiệu chói và tín hiệu màu.  
16  
Ảnh màu  
1.1. Biểu diễn ảnh số  
Trong biểu diễn ảnh, người ta thường áp dụng các phần tử đặc trưng của ảnh là  
Pixel. Nhìn chung có thể xem một hàm 2 biến chứa các thông tin biểu diễn của một  
ảnh. Các mô hình biểu diễn ảnh cho ta ta một tả logic hay định lượng các tính chất  
của hàm này.  
Việc xử ảnh số phải được lấy mẫu lượng tử hóa. Việc lượng tử hóa là chuyển  
đổi tín hiệu tương tự sang tín hiệu số của một ảnh đã lấy mẫu trong mọt số hữu hạn  
mức xám. Một số mô hình thường áp dụng biểu diễn ảnh: mô hình toán, mô hình  
thống kê  
1.2. Ảnh màu  
Cơ sở về ảnh màu  
Như ta đã biết thì khi cho ảnh sáng trắng đi qua lăng kính ta sẽ thu được một dãy  
phổ màu bao gồm 6 màu rộng : tím lam, lục, vàng, cam , đỏ. Nếu nhìn kỹ thì sẽ không  
có ranh giới rõ ràng giữa các màu mà màu này sẽ từ từ chuyển sang màu kia. Mắt  
chúng ta nhìn thấy được là do ánh sáng phản xạ từ vật thể.  
Tất cả các màu được tạo ra từ 3 màu cơ bản (màu sơ cấp) là: đỏ (R), lam (B), lục  
(G). Các màu cơ bản trộn lại với nhau theo một tỉ lệ nhất định để tạo ra các màu thứ  
cấp.  
Phương trình màu:  
= 0.2989 ∗ 푅 + 0.58662 ∗ 퐺 + 0.11448 ∗ 퐵  
Hình 3.2: Các màu cơ sở  
dụ: Đỏ + Lục = Vàng  
17  
Lục + Lam = Xanh  
Trộn ba màu sơ cấp hoặc trộn một màu thứ cấp với màu sơ cấp ngược với sẽ  
tạo ra được ánh sáng trắng.  
Các màu gốc có liên quan đến các khái niệm sinh học hơn vật lý, nó dựa trên cơ  
sở phản ứng sinh lý học của mắt người đối với ánh sáng. Mắt người có các tế bào cảm  
quang có hình nón nên còn được gọi tế bào hình nón, các tế bào này thông thường  
phản ứng cực đại với ánh sáng vàng-xanh lá cây (tế bào hình nón L), xanh lá cây  
(tế bào hình nón M), và xanh lam (tế bào hình nón S) tương ứng với các bước sóng  
khoảng 564 nm, 534 nm và 420 nm.  
Các đặc trưng dùng để phân biệt một màu với màu khác là: độ sáng (brightness),  
sắc màu (hue) và độ bão hòa màu (sarturation).  
Màu sắc có liên quan đến bước sóng ánh sáng. Thông thường, sắc màu chính  
là tên của màu. Ví dụ: đỏ, cam, lục...  
Độ sáng thể hiện về cường đánh sáng: mô tả nó sáng hay tối như thế nào.  
Độ bão hòa màu: thể hiện độ thuần khiết của màu. Khi độ bão hòa cao, màu  
vẽ sạch rực rỡ. nhiều mô hình màu như RGB, CYM, YIQ, CIE... Ở  
đây chỉ trình bày về mô hình màu RGB.  
Hình 3.3: Mô hình màu RGB  
Các màu R, G, B nằm ở các đỉnh trên trục tọa độ của khối vuông. Màu đen nằm ở  
gốc tọa độ, màu trắng nằm ở góc xa nhất so với điểm gốc. Thang màu xám kéo dài từ  
đen đến trắng (đường chấm).  
Hình ảnh trong mô hình màu RGB bao gồm 3 mặt phẳng ảnh độc lập (dùng cho  
các màu sơ cấp).  
Thường thì ta giả thiết tất cả các giả trị màu được chuẩn hóa (tức khối vuông  
khối đơn vị), tất cả các giá trị màu nằm trong khoảng [0, 1]  
18  
vậy trong hệ màu RGB, các màu có thể tả như những điểm bên trong  
hình lập phương. Ở gốc tọa độ (0, 0, 0) là màu đen. Trên các trục tọa độ dương là các  
màu đỏ, lục, lam. Khi đó ánh sáng từ các điểm riêng biệt sẽ được cộng dồn với nhau  
để tạo ra các màu khác nhau.  
(0, 0, 0)  
màu đen  
(255, 255, 255)  
(255, 0, 0)  
màu trắng  
màu đỏ  
(0, 255, 0)  
màu xanh lá cây  
màu xanh lam  
màu vàng  
(0, 0, 255)  
(255, 255, 0)  
(0, 255, 255)  
(255, 0, 255)  
màu xanh ngọc  
màu hồng sẫm  
1.3. Các định dạng ảnh cơ bản trong xử ảnh  
- Định dạng ảnh IMG: ảnh đen trắng, phần đầu của IMG có 16 byte chứa thông  
tin.  
- Định dạng ảnh GIF: GIF (viết tắt của Graphics Interchange Format; trong tiếng  
anh là “Định dạng trao đổi hình ảnh”) một định dạng tập tin hình ảnh bitmap cho  
các hình ảnh dùng ít hơn 256 màu sắc khác nhau và các hoạt hình dùng ít hơn 256  
màu cho mỗi khung hình. GIF là định dạng nén dữ liệu đặc biệt hữu ích cho việc  
truyền hình ảnh qua đường truyền lưu lượng nhỏ. Định dạng này được CopuServe cho  
ra đời năm 1987 và nhanh chóng được dùng rộng rãi trên World Wide Web cho đến  
nay. Tập tin GIF dùng nén dữ liệu bảo toàn trong đó kích thước tập tin có thể được  
giảm mà không làm giảm chất lượng hình ảnh, cho những hình ảnh có ít hơn 256 màu.  
Số lượng tối đa 256 màu làm cho định dạng này không phù hợp cho các hình chụp  
(thường nhiều màu sắc), tuy nhiên các kiểu nén dữ liệu bảo toàn cho hình chụp  
nhiều màu cũng có kích thước quá lớn đối với truyền dữ liệu trên mạng hiện nay. Định  
dạng JPEG là nén dữ liệu thất thoát có thể được dùng cho các ảnh chụp, nhưng lại làm  
giảm chất lượng cho các bức vẽ ít màu, tạo nên những chỗ nhòe thay cho các đường  
sắc nét, đồng thopwif độ nén cũng thấp cho các hình vẽ ít màu. Như vậy GIF thường  
được dùng cho sơ đồ, hình vẽ nút bấm và các hình ít màu, còn JPEG được dùng cho  
ảnh chụp. Định dạng GIF dựa vào các bảng màu - một bảng chứa tối đa 256 màu khác  
nhau cho biết các màu được dùng trong hình  
19  
Tải về để xem bản đầy đủ
docx 32 trang yennguyen 30/03/2022 6180
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án môn Thị giác máy tính - Đề tài: Nhận dạng mặt người trên Matlab", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxdo_an_mon_thi_giac_may_tinh_de_tai_nhan_dang_mat_nguoi_tren.docx