ỨNG DỤNG THUẬT TOÁN PCA vào VIỆC NHẬN DIỆN mặt NGƯỜI DÙNG MATLAB (có code)

39 895 12
ỨNG DỤNG THUẬT TOÁN PCA vào VIỆC NHẬN DIỆN mặt NGƯỜI DÙNG MATLAB (có code)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỒ ÁN TỐT NGHIỆP ỨNG DỤNG THUẬT TOÁN PCA VÀO VIỆC NHẬN DIỆN MẶT NGƯỜI DÙNG MATLAB DANH MỤC CÁC TỪ VIẾT TẮT MATLAB: MATrix LABoratory PCA: Principal Component Analysis CSDL: Cơ sở liệu ĐỒ ÁN TỐT NGHIỆP Trang 3/36 CHƯƠNG 1: KHÁI QUÁT ĐỀ TÀI 1.1 Giới thiệu đề tài - Ngày nay, tiến không ngừng lĩnh vực khoa học công nghệ, thuật tốn giúp người sử dụng thiết bị máy thay cho vấn đề khó khăn trở nên đơn giản hơn, việc làm yêu cầu xử lý tốc độ cao mà hiệu mang lại tốt xác gấp nhiều lần so với người làm - Ứng dụng “Nhận diện khuôn mặt người” ứng dụng xuất sắc với giá trị to lớn mà mang lại Để tìm thơng tin đó, nhiều thời gian tốn nhiều cơng sức tìm kết thu phạm vi nhỏ tìm kiếm đơn giản mà thơi, muốn có thơng tin hình ảnh người tỉnh thành khác, đất nước, chí quốc tế ta phải làm sao? Đó việc làm vơ khó khăn dường bất khả thi Nhưng thuật tốn chun nhận diện khn mặt, tất gói gọn phút lâu chút sở liệu lớn nhiên mặt hiệu tốt - Ứng dụng nhận diện khuôn mặt người phát triển ngày rộng rãi phát triển không ngừng Ngày dễ dàng thấy xuất chúng điện thoại smartphone để khóa mở hình, dùng để kiểm tra thông tin, điểm danh trường học, doanh nghiệp, 1.1.1 Đề tài yêu cầu - Chuẩn đốn xác định khn mặt, rút trích tách lọc riêng khn mặt Dùng phương pháp thuật tốn PCA để trainning tạo CSDL testing nhận diện khuôn mặt 1.1.2 Phương hướng - Viết sơ đồ giải thuật, code, tạo giao diện người dùng ứng dụng MATLAB Ứng dụng thuật toán PCA vào việc nhận diện mặt người dùng Matlab ĐỒ ÁN TỐT NGHIỆP Trang 4/36 1.2 Lý thuyết chung - Trước hết phải tìm khn mặt có tồn hình hay khơng sau ta tiếp tục tiến hành việc nhận diện Vấn đề tìm khn mặt tốn cần thực trước hết - Trình bày hình ban đầu thành ma trận hai chiều, việc xác định hình có khn mặt cần tìm có sở liệu hay không thực việc tiến hành toán trừ với tập mẫu Mấu chốt kích thước ma trận lớn, sở liệu bao la, tốn khơng thời gian, khơng có yếu tố khả thi cao cho việc áp dụng nhận diện khuôn mặt điều kiện số lượng đông - Cách giải tìm thuật tốn xử lý vấn đề nhanh cho việc tính tốn thuật toán PCA đáp ứng thứ cho việc nhận diện mặt người, PCA làm cho chiều vector giảm so với vector ban đầu , trích lọc yếu tố đặc trưng khn mặt, tính tốn ma trận hiệp phương sai để tìm trị riêng vector riêng hình Các vector riêng sở giúp xác định liệu thông tin khn mặt người Ứng dụng thuật tốn PCA vào việc nhận diện mặt người dùng Matlab CHƯƠNG 2: GIỚI THIỆU VỀ THUẬT TOÁN PCA 2.1 Sơ đồ khối - Với điều nêu sơ đồ khối thực có dạng sau: Đưa hình cần tìm vào Quét kiểm tra khuôn mặt Tách khuôn mặt Sử dụng PCA tính tốn So sánh kết với CSDL Xuất kết cần tìm Hình 1: Sơ đồ khối - Với hình cần tìm:  Sử dụng hình có chứa khn mặt người  Dùng thuật toán Haar Like để định vị, chuẩn đốn vị trí khn mặt  Khi tra vị trí khn mặt, xác định bề mặt thực việc cắt lấy khuôn mặt cận diện  Thuật toán giúp rút gọn chắt lọc đặc trưng khn mặt sau giữ chúng lại  Tạo liệu cho CSDL  Ảnh cần nhận diện phải với ảnh mẫu kích thước  Càng nhiều ảnh mẫu CSDL hạn chế sai sót  Thiết kế giao diện người dùng với chức cần thiết cho trình nhận diện 2.2 Khái qt thuật tốn PCA Xác định khuôn mặt người (Face Detection) kỹ thuật máy tính để xác định vị trí kích thước khn mặt người ảnh chân dung ảnh khác (ảnh kỹ thuật số) Kỹ thuật có khả nhận biết đặc trưng riêng khuôn mặt bỏ qua chi tiết khơng quan trọng khác như: tịa nhà, cối, thể… 2.2.1 Phương pháp xác định khuôn mặt người Hướng tiếp cận tri thức: Mã hóa hiểu biết người loại khuôn mặt người thành luật Thông thường luật mô tả quan hệ đặc trưng khuôn mặt Hướng tiếp cận đặc trưng không thay đổi: Mục tiêu thuật tốn tìm đặc trưng cấu trúc khuôn mặt người mà đặc trưng không thay đổi tư khn mặt thay đổi, vị trí đặt thiết bị thu hình điều kiện xung quanh, độ sáng thay đổi Hướng tiếp cận so với khớp mẫu: Dùng mẫu chuẩn khuôn mặt người (các mẫu lựa chọn lưu trữ) để mô tả cho khuôn mặt người hay đặc trưng khuôn mặt (các mẫu phải chọn cho tách biệt nhau, theo tiêu chuẩn mà tác giả định để so sánh) Các mối quan hệ qua lại liệu ảnh đưa vào mẫu dùng để xác định khuôn mặt người Hướng tiếp cận dựa vào diện mạo: Khác hồn tồn với so khớp mẫu, mơ hình (hay mẫu) học từ tập ảnh huấn luyện trước Sau hệ thống (mơ hình) xác định khn mặt người 2.2.2 Thuật tốn PCA Ý tưởng cho Pearson đưa vào năm 1901 Sau Hotelling vào năm 1933 Cho tập ảnh huấn luyện có kích thước M×N mơ tả vector có kích thước M×M, vector cở sở cho khơng gian tối ưu xác định thông qua lỗi bình phương trung bình chiếu ảnh huấn luyện vào không gian Tập vector sở tối ưu ảnh riêng sau gọi tắt vector riêng ma trận hiệp phương sai tính từ ảnh khn mặt vector hóa tập huấn luyện Nếu cho 100 ảnh, mà khuôn mặt có kích thước 91×50 cần dùng 50 ảnh riêng, trì khả giống hợp lý (giữ 95% tính chất) PCA (Principal Component Analysis) thuật toán nhận dạng ảnh phụ thuộc vào nét tổng quát khuôn mặt (hướng tiếp cận dựa vào diện mạo), ta áp dụng thuật tốn để thực hai cơng việc sau : • Đầu tiên tìm khn mặt giống với khn mặt cho trước • Sau xác định vị trí khn mặt người ảnh  Phân tích thuật tốn PCA - Đầu tiên ta sưu tầm tập ảnh khuôn mặt gọi tập ảnh huấn luyện (training) Giả sử ảnh có kích thước M×N, ta coi ảnh vector không gian M*N chiều Giờ khuôn mặt ứng với vector, ta thấy vector không phân bố ngẫu nhiên không gian ảnh mà phân bố theo quy luật tương đối đó, nói vector nằm không gian gọi không gian khuôn mặt Từ vector tập huấn luyện, ta tiếp tục tìm sở trực chuẩn cho khơng gian khn mặt Các vector thuộc sở xem vector mang theo nét tổng quát đặc trưng khuôn mặt - Giả sử tập huấn luyện có G ảnh, ta có G vector T 1, T2, … TG (tập khuôn mặt training) với khn mặt phải diện tất ảnh phải kích thước Hình 2: Ảnh khn mặt người Tính vector ảnh trung bình : m = Sự khác biệt khn mặt với ảnh trung bình vector : Ai = Ti - m , i=1…G Ý tưởng việc phân tích thành phần dựa vào tập vector trực chuẩn uk cho vector biểu diễn tốt trình phân bố vector khuôn mặt không gian Những vector uk lựa chọn : lớn Các vector uk giá trị vơ hướng λk vector riêng giá trị riêng tương ứng ma trận A*AT (u/v) phép nhân tích vơ hướng hai vector u v: A = [A 1A2…AP ] Ta thấy ma trận A có kích thước M*N×P, cịn ma trận A*A T có kích thước M*N×M*N, kích thước ma trận lớn ta khơng thể tìm vector riêng trị riêng trực tiếp được, thay vào cần tìm vector riêng ma trận AT*A có kích thước P×P Nếu v vector riêng AT*A λ trị riêng, dựa vào ta có: AT*A v = λv  A AT*A v = λAv, tức Av trị riêng ma trận AAT Thông thường ta lấy số J vector riêng ứng với J trị riêng có giá trị lớn Sau thu thập vector riêng ma trận A*A T , ta chuẩn hóa chúng để thu sở trực chuẩn không gian khuôn mặt Đặt L= ATA, tìm V tập hợp vector riêng L, D tập hợp trị riêng tương ứng V gồm J vector riêng ứng với trị riêng lớn giá trị ứng với J trị riêng lớn D E = A*V tập vector riêng A*A T Do vector riêng, mà lại có dạng khn mặt nên cịn đuợc gọi Eigenfaces E ma trận M*N×J, cột vector riêng Chuẩn hóa vector cột E (chia vector cho độ dài vector đó) Có thể coi E sở trực chuẩn không gian khn mặt Với H ảnh có đồng kích thước với ảnh tập training Ta xét có phải ảnh khn mặt hay khơng, tìm ảnh giống với tập huấn luyện H xem vector không gian M*N chiều Đặt Z=H - m với m vector ảnh trung bình Cho V khơng gian có tích vơ hướng hữu hạn chiều R không gian V Giả sử R có sở trực chuần { u1, … , uQ} Khi hình chiếu trực giao vector u lên R xác định sau: Độ dài ||u – u0|| gọi khoảng cách từ u đến R Tập hợp ci= 〈u/ui〉, i=1,… , J gọi tọa độ u0 không gian R ETZ tọa độ hình chiếu Zf Z lên khơng gian khn mặt C Tìm C = vector cột J×1 với ci = C( i , 1) ; ei = E( : , i ) Với Ai cột ma trận A (tương ứng với ảnh T i tập huấn luyện) Ta tính: Ci = ET Ai tọa độ hình chiếu Aif Ai lên khơng gian khn mặt Ta tính hai đại lượng sau: s = ||Z – Zf|| xem khoảng cách từ ảnh B đến không gian mặt si = ||C – Ci|| xem khoảng cách từ B đến ảnh T i tập huấn luyện Xét α β hai ngưỡng s < α => B ảnh khuôn mặt (do B đủ gần với không gian mặt) si < β => Ti ảnh người với B (B đủ gần với Ti) Như ta tìm ảnh tập huấn luyện (training) giống với ảnh H hay xác định có phải ảnh khn mặt hay khơng Tuy nhiên ảnh B phải đồng kích thước với ảnh tập huấn luyện (training) 4.2 Đánh giá kết hệ thống Hình 24: Hệ thống nhận diện xác người Training CSDL Hình 25: Hệ thống nhận diện sai với người Training CSDL  Đánh giá hệ thống: - Vì chương trình hồn tồn viết theo cách đơn giản nhất, nhiên hệ thống hoạt động tương đối đạt mục đích ban đầu đề đạt tỉ lệ xác tươn đối cao so với hệ thống khác (https://4fire.wordpress.com/2012/07/31/nhan-dang-mat-nguoi-facerecognition-bang-pca-eigen-face-matlab-code-on-orl-database/) https://www.researchgate.net/publication/226973571_Performance_evaluation _and_comparison_of_PCA_Based_human_face_recognition_methods_for_dis torted_images) (https://www.researchgate.net/publication/278021966_A_Human_Face_Recog nition_Software_Development_Applying_PCA) - Bên báo viết tỉ lệ xác hệ thống thực công bố sưu tầm internet.Từ kết báo ta nhận thấy tăng số lượng CSDL để training lên cao giảm bớt số lượng ảnh testing người tỉ lệ thành cơng tăng cao - Như tỉ lệ xác hệ thống tương đối sát so với hệ thống khác công bố, 84% số tương đối chấp nhận với hệ thống nhận diện khuôn mặt mức đơn giản - Những yếu tố dẫn đến việc sai sót khâu nhận diện do:  Hướng chụp khuôn mặt  Khoảng cách từ thiết bị chụp đến khuôn mặt  Yếu tố thời tiết (độ sáng, gió, )  Ngồi cịn có vài chi tiết ảnh hưởn đến kết nhận diện nếp nhăn, tóc, kinh cận, … - Thấy rõ phương pháp giảm số chiều vector PCA nên đồng thời giảm thời gian xử lý tính tốn phép toán CHƯƠNG 5: KẾT LUẬN 5.1 Ưu điểm - Đối với việc sử dụng thuật toán PCA để nhận diện khuôn mặt, với việc giảm số chiều vector làm cho thời gian tính tốn xử lý giảm nhiều - Tỉ lệ xác việc nhận diện khuôn mặt dùng PCA tương đối cao, cho kết xác - Sơ lượng ảnh CSDL khơng cần quan tâm đến mấu chốt thực PCA giảm só chiều vector, trích xuất đặc trưng khn mặt Sau so sánh với liệu CSDL Vì CSDL nhiều ảnh tăng tỉ lệ xác lên cao - Hệ thống hồn tồn xử lý tốt ảnh có độ phân giải cao PCA thu gọn ảnh gốc ban đầu thành ảnh có kích thước nhỏ 5.2 Nhược điểm - Các mẫu khn mặt hồn tồn bị phụ thuộc vào tập training CSDL, tức ảnh dùng để testing phải giống với ảnh training kích thước ảnh, tư độ sáng - PCA phân loại theo chiều phân bố lớn tập vector Tuy vậy, chiều phân bố lớn lúc cho kết tốt - PCA nhạy nhiễu nhiều - Dễ dàng nhận diện sai thay đổi vài yếu tố ảnh cười, nheo mắt, há miệng, thay đổi góc chụp,… 5.3 Hướng phát triển đề tài - Cần phát triển nâng cấp cho hệ thống trích xuất đặc trưng khn mặt tóc, tai lông mày, miệng mồm, mũi mắt Như làm tăng khả nhận diện xác tăng tỉ lệ xác cao - Áp dụng vào phần mêm tự động chụp, ghi lại hình ảnh người - Thiết kế hệ thống nhận diện áp dụng vào đời sống như: điểm danh lớp học tổ chức cơng ty, tìm thơng tin người phục vụ cho quan,… - Tiếp tục nghiên cứu hoàn thiện phát triển nhằm nâng cao tỉ lệ xác cao TÀI LIỆU THAM KHẢO https://www.slideshare.net/littlemoretry/bo-co-40799272 https://123doc.org/document/333793-tim-hieu-phuong-phap-pca-nhan-dang- khuon-mat-ung-dung-matlab.htm https://vutienvlog.com/xu-ly-anh-matlab-tong-quan-ve-anh-so/ https://www.slideshare.net/TuanRemy/thuat-toan-pca-full-2452017 https://machinelearningcoban.com/2017/10/20/fundaml_matrices/ https://4fire.wordpress.com/2012/07/31/nhan-dang-mat-nguoi-face-recognition- bang-pca-eigen-face-matlab-code-on-orl-database/ https://tapit.vn/image-processing-he-thong-nhan-dang-khuon-mat-su-dung-pca/ http://doc.edu.vn/tai-lieu/do-an-do-tim-va-cat-anh-mat-nguoi-dung-pca-4339/ https://vtct.wordpress.com/2013/05/13/tao-anh-xam-grayscale/ PHỤ LỤC  Chương trình chính:  Training: clear all; close all; R1=imread('101.jpg');R2=imread('102.jpg');R3=imread('103.jpg');R4=imread('104.jpg' );R5=imread('105.jpg'); R6=imread('106.jpg');R7=imread('107.jpg');R8=imread('108.jpg');R9=imread('109.jpg' );R10=imread('110.jpg'); R11=imread('111.jpg');R12=imread('112.jpg');R13=imread('113.jpg');R14=imread('114 jpg');R15=imread('115.jpg'); R16=imread('116.jpg');R17=imread('117.jpg');R18=imread('118.jpg');R19=imread('11 9.jpg');R20=imread('120.jpg'); R21=imread('121.jpg');R22=imread('122.jpg');R23=imread('123.jpg');R24=imread('12 4.jpg');R25=imread('125.jpg'); R26=imread('126.jpg');R27=imread('127.jpg');R28=imread('128.jpg');R29=imread('12 9.jpg');R30=imread('130.jpg'); R31=imread('131.jpg');R32=imread('132.jpg');R33=imread('133.jpg');R34=imread('13 4.jpg');R35=imread('135.jpg'); R36=imread('136.jpg');R37=imread('137.jpg');R38=imread('138.jpg');R39=imread('13 9.jpg');R40=imread('140.jpg'); R41=imread('141.jpg');R42=imread('142.jpg');R43=imread('143.jpg');R44=imread('14 4.jpg');R45=imread('145.jpg'); R46=imread('146.jpg');R47=imread('147.jpg');R48=imread('148.jpg');R49=imread('14 9.jpg');R50=imread('150.jpg'); R51=imread('151.jpg');R52=imread('152.jpg');R53=imread('153.jpg');R54=imread('15 4.jpg');R55=imread('155.jpg'); R56=imread('156.jpg');R57=imread('157.jpg');R58=imread('158.jpg');R59=imread('15 9.jpg');R60=imread('160.jpg'); R61=imread('161.jpg');R62=imread('162.jpg');R63=imread('163.jpg');R64=imread('16 4.jpg');R65=imread('165.jpg'); R66=imread('166.jpg');R67=imread('167.jpg');R68=imread('168.jpg');R69=imread('16 9.jpg');R70=imread('170.jpg'); R71=imread('171.jpg');R72=imread('172.jpg');R73=imread('173.jpg');R74=imread('17 4.jpg');R75=imread('175.jpg'); R76=imread('176.jpg');R77=imread('177.jpg');R78=imread('178.jpg');R79=imread('17 9.jpg');R80=imread('180.jpg'); R81=imread('181.jpg');R82=imread('182.jpg');R83=imread('183.jpg');R84=imread('18 4.jpg');R85=imread('185.jpg'); R86=imread('186.jpg');R87=imread('187.jpg');R88=imread('188.jpg');R89=imread('18 9.jpg');R90=imread('190.jpg'); R91=imread('191.jpg');R92=imread('192.jpg');R93=imread('193.jpg');R94=imread('19 4.jpg');R95=imread('195.jpg'); R96=imread('196.jpg');R97=imread('197.jpg');R98=imread('198.jpg');R99=imread('19 9.jpg');R100=imread('200.jpg'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% %%%%%%%%%% chuyen Anh Xam%%%%%%%%%%%%%%%%% R1_gray=Anhxam(R1);R2_gray=Anhxam(R2);R3_gray=Anhxam(R3);R4_gray=Anh xam(R4);R5_gray=Anhxam(R5); R6_gray=Anhxam(R6);R7_gray=Anhxam(R7);R8_gray=Anhxam(R8);R9_gray=Anh xam(R9);R10_gray=Anhxam(R10); R11_gray=Anhxam(R11);R12_gray=Anhxam(R12);R13_gray=Anhxam(R13);R14_gr ay=Anhxam(R14);R15_gray=Anhxam(R15); R16_gray=Anhxam(R16);R17_gray=Anhxam(R17);R18_gray=Anhxam(R18);R19_gr ay=Anhxam(R19);R20_gray=Anhxam(R20); R21_gray=Anhxam(R21);R22_gray=Anhxam(R22);R23_gray=Anhxam(R23);R24_gr ay=Anhxam(R24);R25_gray=Anhxam(R25); R26_gray=Anhxam(R26);R27_gray=Anhxam(R27);R28_gray=Anhxam(R28);R29_gr ay=Anhxam(R29);R30_gray=Anhxam(R30); R31_gray=Anhxam(R31);R32_gray=Anhxam(R32);R33_gray=Anhxam(R33);R34_gr ay=Anhxam(R34);R35_gray=Anhxam(R35); R36_gray=Anhxam(R36);R37_gray=Anhxam(R37);R38_gray=Anhxam(R38);R39_gr ay=Anhxam(R39);R40_gray=Anhxam(R40); R41_gray=Anhxam(R41);R42_gray=Anhxam(R42);R43_gray=Anhxam(R43);R44_gr ay=Anhxam(R44);R45_gray=Anhxam(R45); R46_gray=Anhxam(R46);R47_gray=Anhxam(R47);R48_gray=Anhxam(R48);R49_gr ay=Anhxam(R49);R50_gray=Anhxam(R50); R51_gray=Anhxam(R51);R52_gray=Anhxam(R52);R53_gray=Anhxam(R53);R54_gr ay=Anhxam(R54);R55_gray=Anhxam(R55); R56_gray=Anhxam(R56);R57_gray=Anhxam(R57);R58_gray=Anhxam(R58);R59_gr ay=Anhxam(R59);R60_gray=Anhxam(R60); R61_gray=Anhxam(R61);R62_gray=Anhxam(R62);R63_gray=Anhxam(R63);R64_gr ay=Anhxam(R64);R65_gray=Anhxam(R65); R66_gray=Anhxam(R66);R67_gray=Anhxam(R67);R68_gray=Anhxam(R68);R69_gr ay=Anhxam(R69);R70_gray=Anhxam(R70); R71_gray=Anhxam(R71);R72_gray=Anhxam(R72);R73_gray=Anhxam(R73);R74_gr ay=Anhxam(R74);R75_gray=Anhxam(R75); R76_gray=Anhxam(R76);R77_gray=Anhxam(R77);R78_gray=Anhxam(R78);R79_gr ay=Anhxam(R79);R80_gray=Anhxam(R80); R81_gray=Anhxam(R81);R82_gray=Anhxam(R82);R83_gray=Anhxam(R83);R84_gr ay=Anhxam(R84);R85_gray=Anhxam(R85); R86_gray=Anhxam(R86);R87_gray=Anhxam(R87);R88_gray=Anhxam(R88);R89_gr ay=Anhxam(R89);R90_gray=Anhxam(R90); R91_gray=Anhxam(R91);R92_gray=Anhxam(R92);R93_gray=Anhxam(R93);R94_gr ay=Anhxam(R94);R95_gray=Anhxam(R95); R96_gray=Anhxam(R96);R97_gray=Anhxam(R97);R98_gray=Anhxam(R98);R99_gr ay=Anhxam(R99);R100_gray=Anhxam(R100); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% %%%%%% chuyen vector cot%%%%%%%%%%%%%%%%%% R1_col=vector(R1_gray);R2_col=vector(R2_gray);R3_col=vector(R3_gray);R4_col= vector(R4_gray);R5_col=vector(R5_gray); R6_col=vector(R6_gray);R7_col=vector(R7_gray);R8_col=vector(R8_gray);R9_col= vector(R9_gray);R10_col=vector(R10_gray); R11_col=vector(R11_gray);R12_col=vector(R12_gray);R13_col=vector(R13_gray);R 14_col=vector(R14_gray);R15_col=vector(R15_gray); R16_col=vector(R16_gray);R17_col=vector(R17_gray);R18_col=vector(R18_gray);R 19_col=vector(R19_gray);R20_col=vector(R20_gray); R21_col=vector(R21_gray);R22_col=vector(R22_gray);R23_col=vector(R23_gray);R 24_col=vector(R24_gray);R25_col=vector(R25_gray); R26_col=vector(R26_gray);R27_col=vector(R27_gray);R28_col=vector(R28_gray);R 29_col=vector(R29_gray);R30_col=vector(R30_gray); R31_col=vector(R31_gray);R32_col=vector(R32_gray);R33_col=vector(R33_gray);R 34_col=vector(R34_gray);R35_col=vector(R35_gray); R36_col=vector(R36_gray);R37_col=vector(R37_gray);R38_col=vector(R38_gray);R 39_col=vector(R39_gray);R40_col=vector(R40_gray); R41_col=vector(R41_gray);R42_col=vector(R42_gray);R43_col=vector(R43_gray);R 44_col=vector(R44_gray);R45_col=vector(R45_gray); R46_col=vector(R46_gray);R47_col=vector(R47_gray);R48_col=vector(R48_gray);R 49_col=vector(R49_gray);R50_col=vector(R50_gray); R51_col=vector(R51_gray);R52_col=vector(R52_gray);R53_col=vector(R53_gray);R 54_col=vector(R54_gray);R55_col=vector(R55_gray); R56_col=vector(R56_gray);R57_col=vector(R57_gray);R58_col=vector(R58_gray);R 59_col=vector(R59_gray);R60_col=vector(R60_gray); R61_col=vector(R61_gray);R62_col=vector(R62_gray);R63_col=vector(R63_gray);R 64_col=vector(R64_gray);R65_col=vector(R65_gray); R66_col=vector(R66_gray);R67_col=vector(R67_gray);R68_col=vector(R68_gray);R 69_col=vector(R69_gray);R70_col=vector(R70_gray); R71_col=vector(R71_gray);R72_col=vector(R72_gray);R73_col=vector(R73_gray);R 74_col=vector(R74_gray);R75_col=vector(R75_gray); R76_col=vector(R76_gray);R77_col=vector(R77_gray);R78_col=vector(R78_gray);R 79_col=vector(R79_gray);R80_col=vector(R80_gray); R81_col=vector(R81_gray);R82_col=vector(R82_gray);R83_col=vector(R83_gray);R 84_col=vector(R84_gray);R85_col=vector(R85_gray); R86_col=vector(R86_gray);R87_col=vector(R87_gray);R88_col=vector(R88_gray);R 89_col=vector(R89_gray);R90_col=vector(R90_gray); R91_col=vector(R91_gray);R92_col=vector(R92_gray);R93_col=vector(R93_gray);R 94_col=vector(R94_gray);R95_col=vector(R95_gray); R96_col=vector(R96_gray);R97_col=vector(R97_gray);R98_col=vector(R98_gray);R 99_col=vector(R99_gray);R100_col=vector(R100_gray); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% %%%%%%%%% tim vector trung binh %%%%%%%%%%%%%%%% R_trungbinh=(R1_col+R2_col+R3_col+R4_col+R5_col+R6_col+R7_col+R8_col+R9 _col+R10_col+R11_col+R12_col+R13_col+R14_col+R15_col+R16_col+R17_col+R 18_col+R19_col+R20_col +R21_col+R22_col+R23_col+R24_col+R25_col+R26_col+R27_col+R28_col+R29_c ol+R30_col+R31_col+R32_col+R33_col+R34_col+R35_col+R36_col+R37_col+R38 _col+R39_col+R40_col+R41_col+R42_col+R43_col+R44_col+R45_col+R46_col+R 47_col+R48_col+R49_col+R50_col+R51_col+R52_col+R53_col+R54_col+R55_col +R56_col+R57_col+R58_col+R59_col+R60_col+R61_col+R62_col+R63_col+R64_c ol+R65_col+R66_col+R67_col+R68_col+R69_col+R70_col+R71_col+R72_col+R73 _col+R74_col+R75_col+R76_col+R77_col+R78_col+R79_col+R80_col+R81_col+R 82_col+R83_col+R84_col+R85_col+R86_col+R87_col+R88_col+R89_col+R90_col +R91_col+R92_col+R93_col+R94_col+R95_col+R96_col+R97_col+R98_col+R99_c ol+R100_col)/100; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% %%%%%%%% vector chuan hoa %%%%%%%%%%%%%%%%%%%%%%%%% %%%% %%%%%%%% double(R - trungbinh); R1_chuan=double(R1_col - R_trungbinh); R2_chuan=double(R2_colR_trungbinh);R3_chuan=double(R3_col-R_trungbinh); R4_chuan=double(R4_col-R_trungbinh); R5_chuan=double(R5_colR_trungbinh);R6_chuan=double(R6_col-R_trungbinh); R7_chuan=double(R7_col-R_trungbinh); R8_chuan=double(R8_colR_trungbinh);R9_chuan=double(R9_col-R_trungbinh); R10_chuan=double(R10_col-R_trungbinh); R11_chuan=double(R11_colR_trungbinh);R12_chuan=double(R12_col-R_trungbinh); R13_chuan=double(R13_col-R_trungbinh); R14_chuan=double(R14_colR_trungbinh);R15_chuan=double(R15_col-R_trungbinh); R16_chuan=double(R16_col-R_trungbinh); R17_chuan=double(R17_colR_trungbinh);R18_chuan=double(R18_col-R_trungbinh); R19_chuan=double(R19_col-R_trungbinh); R20_chuan=double(R20_colR_trungbinh);R21_chuan=double(R21_col-R_trungbinh); R22_chuan=double(R22_col-R_trungbinh);R23_chuan=double(R23_colR_trungbinh);R24_chuan=double(R24_colR_trungbinh);R25_chuan=double(R25_col-R_trungbinh); R26_chuan=double(R26_col-R_trungbinh);R27_chuan=double(R27_colR_trungbinh);R28_chuan=double(R28_col-R_trungbinh); R29_chuan=double(R29_col-R_trungbinh);R30_chuan=double(R30_colR_trungbinh);R31_chuan=double(R31_col-R_trungbinh); R32_chuan=double(R32_col-R_trungbinh);R33_chuan=double(R33_colR_trungbinh);R34_chuan=double(R34_col-R_trungbinh); R35_chuan=double(R35_col-R_trungbinh);R36_chuan=double(R36_colR_trungbinh);R37_chuan=double(R37_col-R_trungbinh); R38_chuan=double(R38_col-R_trungbinh);R39_chuan=double(R39_colR_trungbinh);R40_chuan=double(R40_col-R_trungbinh); R41_chuan=double(R41_col-R_trungbinh);R42_chuan=double(R42_colR_trungbinh);R43_chuan=double(R43_col-R_trungbinh); R44_chuan=double(R44_col-R_trungbinh);R45_chuan=double(R45_colR_trungbinh);R46_chuan=double(R46_col-R_trungbinh); R47_chuan=double(R47_col-R_trungbinh);R48_chuan=double(R48_colR_trungbinh);R48_chuan=double(R48_col-R_trungbinh); R49_chuan=double(R49_col-R_trungbinh);R50_chuan=double(R50_colR_trungbinh);R51_chuan=double(R51_col-R_trungbinh); R52_chuan=double(R52_col-R_trungbinh);R53_chuan=double(R53_colR_trungbinh);R54_chuan=double(R54_col-R_trungbinh); R55_chuan=double(R55_col-R_trungbinh);R56_chuan=double(R56_colR_trungbinh);R57_chuan=double(R57_col-R_trungbinh); R58_chuan=double(R58_col-R_trungbinh);R59_chuan=double(R59_colR_trungbinh);R60_chuan=double(R60_col-R_trungbinh); R61_chuan=double(R61_col-R_trungbinh);R62_chuan=double(R62_colR_trungbinh);R63_chuan=double(R63_col-R_trungbinh); R64_chuan=double(R64_col-R_trungbinh);R65_chuan=double(R65_colR_trungbinh);R66_chuan=double(R66_col-R_trungbinh); R67_chuan=double(R67_col-R_trungbinh);R68_chuan=double(R68_colR_trungbinh);R69_chuan=double(R69_col-R_trungbinh); R70_chuan=double(R70_col-R_trungbinh);R71_chuan=double(R71_colR_trungbinh);R72_chuan=double(R72_col-R_trungbinh); R73_chuan=double(R73_col-R_trungbinh);R74_chuan=double(R74_colR_trungbinh);R75_chuan=double(R75_col-R_trungbinh); R76_chuan=double(R76_col-R_trungbinh);R77_chuan=double(R77_colR_trungbinh);R78_chuan=double(R78_col-R_trungbinh); R79_chuan=double(R79_col-R_trungbinh);R80_chuan=double(R80_colR_trungbinh);R81_chuan=double(R81_col-R_trungbinh); R82_chuan=double(R82_col-R_trungbinh);R83_chuan=double(R83_colR_trungbinh);R84_chuan=double(R84_col-R_trungbinh); R85_chuan=double(R85_col-R_trungbinh);R86_chuan=double(R86_colR_trungbinh);R87_chuan=double(R87_col-R_trungbinh); R88_chuan=double(R88_col-R_trungbinh);R89_chuan=double(R89_colR_trungbinh);R90_chuan=double(R90_col-R_trungbinh); R91_chuan=double(R91_col-R_trungbinh);R92_chuan=double(R92_colR_trungbinh);R93_chuan=double(R93_col-R_trungbinh); R94_chuan=double(R94_col-R_trungbinh);R95_chuan=double(R95_colR_trungbinh);R96_chuan=double(R96_col-R_trungbinh); R97_chuan=double(R97_col-R_trungbinh);R98_chuan=double(R98_colR_trungbinh);R99_chuan=double(R99_col-R_trungbinh); R100_chuan=double(R100_col-R_trungbinh); %%%%%%%%%%%%%% ket hop cac vector chuan hoa ma tran chuan hoa A(:,1)=R1_chuan;A(:,2)=R2_chuan;A(:,3)=R3_chuan;A(:,4)=R4_chuan;A(:,5)=R5_ch uan; A(:,6)=R6_chuan;A(:,7)=R7_chuan;A(:,8)=R8_chuan;A(:,9)=R9_chuan;A(:,10)=R10 _chuan; A(:,11)=R11_chuan;A(:,12)=R12_chuan;A(:,13)=R13_chuan;A(:,14)=R14_chuan;A(:, 15)=R15_chuan; A(:,16)=R16_chuan;A(:,17)=R17_chuan;A(:,18)=R18_chuan;A(:,19)=R19_chuan;A(:, 20)=R20_chuan; A(:,21)=R21_chuan;A(:,22)=R22_chuan;A(:,23)=R23_chuan;A(:,24)=R24_chuan;A(:, 25)=R25_chuan; A(:,26)=R26_chuan;A(:,27)=R27_chuan;A(:,28)=R28_chuan;A(:,29)=R29_chuan;A(:, 30)=R30_chuan; A(:,31)=R31_chuan;A(:,32)=R32_chuan;A(:,33)=R33_chuan;A(:,34)=R34_chuan;A(:, 35)=R35_chuan; A(:,36)=R36_chuan;A(:,37)=R37_chuan;A(:,38)=R38_chuan;A(:,39)=R39_chuan;A(:, 40)=R40_chuan; A(:,41)=R41_chuan;A(:,42)=R42_chuan;A(:,43)=R43_chuan;A(:,44)=R44_chuan;A(:, 45)=R45_chuan; A(:,46)=R46_chuan;A(:,47)=R47_chuan;A(:,48)=R48_chuan;A(:,49)=R49_chuan;A(:, 50)=R50_chuan; A(:,51)=R51_chuan;A(:,52)=R52_chuan;A(:,53)=R53_chuan;A(:,54)=R54_chuan;A(:, 55)=R55_chuan; A(:,56)=R56_chuan;A(:,57)=R57_chuan;A(:,58)=R58_chuan;A(:,59)=R59_chuan;A(:, 60)=R60_chuan; A(:,61)=R61_chuan;A(:,62)=R62_chuan;A(:,63)=R63_chuan;A(:,64)=R64_chuan;A(:, 65)=R65_chuan; A(:,66)=R66_chuan;A(:,67)=R67_chuan;A(:,68)=R68_chuan;A(:,69)=R69_chuan;A(:, 70)=R70_chuan; A(:,71)=R71_chuan;A(:,72)=R72_chuan;A(:,73)=R73_chuan;A(:,74)=R74_chuan;A(:, 75)=R75_chuan; A(:,76)=R76_chuan;A(:,77)=R77_chuan;A(:,78)=R78_chuan;A(:,79)=R79_chuan;A(:, 80)=R80_chuan; A(:,81)=R81_chuan;A(:,82)=R82_chuan;A(:,83)=R83_chuan;A(:,84)=R84_chuan;A(:, 85)=R85_chuan; A(:,86)=R86_chuan;A(:,87)=R87_chuan;A(:,88)=R88_chuan;A(:,89)=R89_chuan;A(:, 90)=R90_chuan; A(:,91)=R91_chuan;A(:,92)=R92_chuan;A(:,93)=R93_chuan;A(:,94)=R94_chuan;A(:, 95)=R95_chuan; A(:,96)=R96_chuan;A(:,97)=R97_chuan;A(:,98)=R98_chuan;A(:,99)=R99_chuan;A(:, 100)=R100_chuan; %%%%%%%%%% eigen face E %%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% A size 273378 x 100 L = A'*A; % 100 x 100 [V D] = eig(L); %D is a diagonal matrix containing the eigenvalues (gia tri rieng) %V is a matrix whose columns are the corresponding right %eigenvectors (vector rieng) E = A * V; % 273378 x 100 %%%%%% Eigenface sovector=size(E,2); for i=1:sovector dodai=norm(E(:,i));%%%norm(X) is the Euclidean distance X=[3 3] t=norm(X)= sqrt(9+9+9): normalize E(:,i)=E(:,i)/dodai;%% normalize: chuan hoa end  Testing: TestImage=imread('91.jpg'); TI_gray=Anhxam(TestImage);%% chuyen qua anh xam [TI_gray_vector]=vector(TI_gray);%% chuyen vector cot 273378 x TI_normalize = double(TI_gray_vector-R_trungbinh); %% vector cot 273378 x toadoKT = E'*TI_normalize; % anh xa vector vao khong gian eigenfaces %%% 100x 273378 * 273378 x => 100 x toado = []; sovector = size(E,2);%100 for i = : sovector tam = E'*A(:,i); % (100 x 273378) * (273378 x 100) => 100x100 toado = [toado tam]; %%% 100x100 eigenfaces o khong gian so chieu nho end khoangcach = []; for i = : sovector q = toado(:,i);% i=1 => q lay cot cua eigenfaces tam = ( norm( toadoKT - q ) )^2;% tinh khoang cach giua vector, mean square error khoangcach = [khoangcach tam];% 100 ket qua end [minKC , vitri] = min(khoangcach) str=num2str(minKC); anhtim = strcat(int2str(vitri),'.jpg'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% %%%%%%%%%%%%% hien thi ket qua tim kiem va anh Test subplot(1,2,1) %figure('Name','Test Image','NumberTitle','off'); imshow(TestImage) text(120,10,'Test Image') subplot(1,2,2) %figure('Name','Recognized Image','NumberTitle','off'); imshow(anhtim) text(120,10,'Regconized Image') % subplot(1,2,1), imshow(TestImage) % subplot(1,2,2), imshow(anhtim)  Các chương trình con:  Chuyển ảnh xám: %% 299 * R + 587 * G + 114 * B Red =rgb_image(:,:,1); Green=rgb_image(:,:,2); Blue =rgb_image(:,:,3); gray_image = 299*Red + 587*Green + 114*Blue;  Tạo vector cột: function [Column_vector]=vector(gray_image) %%% Column_vector = gray_image(:); [hang,cot]=size(gray_image); k=1; for i=1:1:hang for j=1:1:cot Column_vector(k,1)=gray_image(i,j); k=k+1; end end ... cao cho việc áp dụng nhận diện khuôn mặt điều kiện số lượng đông - Cách giải tìm thuật tốn xử lý vấn đề nhanh cho việc tính toán thuật toán PCA đáp ứng thứ cho việc nhận diện mặt người, PCA làm... giao diện người dùng ứng dụng MATLAB Ứng dụng thuật toán PCA vào việc nhận diện mặt người dùng Matlab ĐỒ ÁN TỐT NGHIỆP Trang 4/36 1.2 Lý thuyết chung - Trước hết phải tìm khn mặt có tồn hình hay... khuôn mặt, tính tốn ma trận hiệp phương sai để tìm trị riêng vector riêng hình Các vector riêng sở giúp xác định liệu thơng tin khn mặt người Ứng dụng thuật toán PCA vào việc nhận diện mặt người dùng

Ngày đăng: 22/03/2019, 20:32

Từ khóa liên quan

Mục lục

  • ĐỒ ÁN TỐT NGHIỆP

  • CHƯƠNG 1: KHÁI QUÁT ĐỀ TÀI

    • 1.1. Giới thiệu về đề tài

      • 1.1.1. Đề tài yêu cầu

      • 1.1.2. Phương hướng

      • 1.2 Lý thuyết chung

      • CHƯƠNG 2: GIỚI THIỆU VỀ THUẬT TOÁN PCA

        • 2.1. Sơ đồ khối

          • Hình 1: Sơ đồ khối

          • 2.2. Khái quát về thuật toán PCA

            • 2.2.1. Phương pháp xác định khuôn mặt người

            • 2.2.2. Thuật toán PCA

            • Phân tích thuật toán PCA

              • Hình 2: Ảnh khuôn mặt người

              • Hình 3: Chiều của các vector trong không gian

              • Hình 4: Diễn giải hình học của PCA

              • Hình 5: Ví dụ về giảm chiều vector của PCA

              • 2.3 Ví dụ:

                • Hình 6: Biểu diễn vector ảnh xám

                • Hình 7: Vector trung bình

                • Hình 8: Kết quả sau khi trừ vector trung bình

                • Hình 9: Ma trận phương sai

                • Hình 10: Ma trận AT.A

                • Hình 11: Eigenfaces

                • CHƯƠNG 3: GIẢI THUẬT VÀ CHƯƠNG TRÌNH HỆ THỐNG

                  • 3.1 Lưu đồ giải thuật:

                    • Hình 12: Lưu đồ giải thuật

                    • 3.2 Các quy trình thực hiện Training

                      • Hình 13: Tạo thư viện ảnh

                      • Hình 14: Chuyển ảnh màu thành ảnh xám

Tài liệu cùng người dùng

Tài liệu liên quan