Đồ án tốt nghiệp: Dò tìm và cắt ảnh mặt người dùng PCA

115 23 0
Đồ án tốt nghiệp: Dò tìm và cắt ảnh mặt người dùng PCA

Đ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

Bài toán nhận dạng khuôn mặt người là một bài toán hấp dẫn, không giới hạn giải pháp sử dụng, vận dụng linh hoạt kiến thức trong nhiều lĩnh vực, đã thách thức nhiều người nghiên cứu vì tính ứng dụng to lớn trong thực tế. Đây là một chủ đề có thể nói còn tương đối mới với những ứng dụng mang tính công nghệ cao như: robot, các thiết bị camera,các hệ thống bảo mật, nhận dạng,…đã và đang được các hãng, công ty áp dụng vào nhằm nâng cao các tính năng sản phẩm của mình trong quá trình cạnh tranh trên thị trường hiện nay…

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNG NGHỆ ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP Đề tài: DỊ TÌM VÀ CẮT ẢNH MẶT NGƯỜI DÙNG PCA GVHD: Ths Đào Thị Thu Thủy SVTH : Nguyễn Trung Hiếu -06052461 Bùi Ngọc Liêm -06054491 Lớp : DHDT2B1 TP Hồ Chí Minh, tháng năm 2010 LỜI MỞ ĐẦU Hiện nay, với phát triển xã hội, vấn đề an ninh bảo mật yêu cầu khắt khe quốc gia giới Các hệ thống nhận dạng người đời với độ tin cậy ngày cao Một toán nhận dạng người quan tâm nhận dạng khn mặt Vì nhận dạng khn mặt cách mà người sử dụng để phân biệt Bên cạnh đó, ngày việc thu thập, xử lý thông tin qua ảnh để nhận biết đối tượng quan tâm ứng dụng rộng rãi Với phương pháp này, thu nhận nhiều thông tin từ đối tượng mà không cần tác động nhiều đến đối tượng nghiên cứu Sự phát triển khoa học máy tính tạo mơi trường thuận lợi cho tốn nhận dạng khn mặt người từ ảnh số Các hệ thống nhận dạng offline đời có độ tin cậy cao, nhiên hệ thống nhận dạng online lại chưa đáp ứng nhiều Bài tốn nhận dạng khn mặt người tốn hấp dẫn, khơng giới hạn giải pháp sử dụng, vận dụng linh hoạt kiến thức nhiều lĩnh vực, thách thức nhiều người nghiên cứu tính ứng dụng to lớn thực tế Đây chủ đề nói cịn tương đối với ứng dụng mang tính cơng nghệ cao như: robot, thiết bị camera,các hệ thống bảo mật, nhận dạng,…đã hãng, công ty áp dụng vào nhằm nâng cao tính sản phẩm trình cạnh tranh thị trường nay… Với mong muốn tiếp cận công nghệ mới, đồng thời bổ sung kiến thức khoa học kỹ thuật đại, tổng kết lại kỹ năng, kiến thức suốt trình học tập trường, chúng em xin chọn đề tài “ Dị tìm cắt ảnh mặt người dùng PCA” Đây tốn nhỏ, giúp chúng em có nhìn khái qt tốn, tạo sở tiền đề cho tìm tịi phát triển hướng cao nghiên cứu cơng nghệ Bài luận trình bày bao gồm có chương: • Chương 1: Giới thiệu Matlab khái quát ảnh • Chương 2: Các phương pháp xác định khn mặt • Chương 3: Phân tích thành phần PCA • Chương 4: Chương trình mơ • Chương 5: Kết luận Nội dung đề tài: - Tìm hiểu phương pháp nhận diện ảnh - Nghiên cứu PCA - Dị tìm ảnh mặt người có khơng gian (1=>4) - Cắt ảnh mặt lưu vào file - Xử lý ảnh động qua webcam Trong luận chúng em xin đề cập tới vấn đề dị tìm nhận dạng mặt người qua ảnh tĩnh cho trước, đồng thời mở rộng xử lý ảnh thu qua thiết bị thu ảnh, ví dụ như: camera, webcam,… LỜI CẢM ƠN Sau thời gian học tập nghiên cứu, cuối chúng em hoàn thành luận nghiên cứu Đây thời điểm tốt để chúng em có dịp bày tỏ lịng biết ơn đến người thân giúp đỡ động viên suốt trình chúng em thực luận Trước tiên, chúng em xin cảm ơn BGH trường Đại Học Cơng Nghiệp Thành Phố Hồ Chí Minh, Quý Thầy Cô khoa Công nghệ Điện Tử tạo điều kiện cho chúng em thực luận Đặc biệt Cô Đào Thị Thu Thủy, Cô không người hướng dẫn khoa học cách tài tình, mà cịn người dìu dắt chúng em, động viên định hướng cho chúng em có bước đầu đời cách nhìn khoa học trí thức, sống, cố gắng phấn đấu tương lai, điều có ý nghĩa sâu sắc chúng em, giúp chúng em tự tin nổ lực hoàn thành luận thời hạn Một lần nữa, chúng em xin bày tỏ lịng biết ơn sâu sắc đến với Cơ Đồng thời chúng xin cám ơn cha mẹ, anh chị thông cảm, chia động viên chúng khó khăn q trình làm đồ án tốt nghiệp Xin cám ơn người bạn thân yêu, người yêu mến, chia sẽ, giúp đỡ lúc thực luận Kết luận quà mà chúng em dành tặng cho tất người thân u, với tất lịng mình! Sinh viên thực Nguyễn Trung Hiếu Bùi Ngọc Liêm NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Chữ ký giáo viên NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Chữ ký giáo viên MỤC LỤC Trang Chương 1: GIỚI THIỆU MATLAB VÀ KHÁI QUÁT VỀ ẢNH .1 1.1 Giới thiệu chung phần mềm Matlab .2 1.1.1 Khái niệm Matlab 1.1.2 Tổng quan cấu trúc liệu Matlab, ứng dụng 1.1.2.1 Dữ liệu 1.1.2.2 Ứng dụng 1.1.2.3 Toolbox công cụ quan trọng Matlab .3 1.1.3 Hệ thống Matlab 1.1.4 Làm quen với Matlab 1.1.5 Các cửa sổ làm việc Matlab 1.2 Giới thiệu khái quát ảnh số 1.2.1 Các khái niệm ảnh 1.2.2 Các cách phân loại ảnh 1.3 Xử lý ảnh với Matlab 1.3.1 Xử lý ảnh .9 1.3.2 Các giai đoạn xử lý ảnh 10 1.3.3 Xử lý ảnh với Matlab 11 1.3.3.1 Các kiểu ảnh Matlab 11 1.3.3.2 Các hàm xử lý ảnh Matlab 13 1.3.3.3 Biến đổi không gian ảnh 20 Chương 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH KHUÔN MẶT 36 2.1 Định nghĩa toán xác định khuôn mặt người 37 2.2 Ứng dụng phương pháp xác định khuôn mặt 37 2.3 Phương pháp xác định khuôn mặt 39 2.3.1 Hướng tiếp cận dựa tri thức 40 2.3.2 Hướng tiếp cận dựa đặc trưng không thay đổi 41 2.3.2.1 Các đặc trưng khuôn mặt 42 2.3.2.2 Kết cấu 45 2.3.2.3 Sắc màu da 45 2.3.2.4 Đa đặc trưng 45 2.3.3 Hướng tiếp cận dựa so khớp mẫu 45 2.3.4 Hướng tiếp cận dựa diện mạo 46 2.4 Khó khăn thử thách tốn xác định khn mặt người 47 Chương 3: PHÂN TÍCH THÀNH PHẦN CHÍNH PCA (PRINCIPAL COMPONENT ANALYSIS) 48 3.1 Sơ lược phân tích thành phần PCA 49 3.2 Thuật toán PCA ứng dụng nhận dạng khuôn mặt người 50 3.2.1 Thuật toán 50 3.2.2 Phân tích thành phần PCA 50 3.2.3 Hình ảnh minh họa 53 3.3 Ứng dụng Eigenfaces việc nhận dạng mặt người 56 3.3.1 Tính tốn Eigenfaces 59 3.3.2 Dùng Eigenfaces để phân loại ảnh mặt người 61 3.3.3 Ứng dụng Eigenfaces để phát gương mặt 62 3.3.3.1 Xem xét lại không gian mặt 63 3.3.3.2 Nhận dạng theo thời gian thực 64 3.4 Nhận xét 65 3.4.1 Ưu điểm phương pháp PCA 65 3.4.2 Nhược điểm PCA 65 Chương 4: CHƯƠNG TRÌNH MƠ PHỎNG 67 4.1 Chương trình mơ 68 4.1.1 Cơ sở liệu ảnh 68 41.1.1 Tập ảnh huấn luyện 68 4.1.1.2 Tập ảnh mẫu 69 4.1.2 Các bước thực chương trình 70 4.1.3 Lưu đồ giải thuật 72 4.1.3.1 Lưu đồ giải thuật 72 4.1.3.2 Lưu đồ giải thuật chi tiết 72 4.1.4 Kết mô 77 4.1.5 Tốc độ thực 80 4.2 Nhận xét kết đạt 81 Chương 5: KẾT LUẬN 85 5.1 Kết luận 85 5.2 Hướng phát triển đề tài 85 PHỤ LỤC TÀI LIỆU THAM KHẢO MỤC LỤC HÌNH Trang Hình 1.1 Cửa sổ khởi động Matlab .4 Hình 1.2 Cửa sổ Command History Hình 1.3 Cửa sổ Workspace Hình 1.4 Cửa sổ Array Editor Hình 1.5 Các bước xử lý ảnh .9 Hình 1.6 Ảnh trước sau imresize 23 Hình 1.7 Ảnh trước sau imrotate 26 Hình 1.8 Ảnh quay theo chiều ngang .27 Hình 1.9 Ảnh trước sau imcrop 28 Hình 1.10 Ảnh trước sau imcrop theo tọa độ cho trước 30 Hình 1.11 Ảnh trước sau imtransforms 32 Hình 1.12 Ảnh trước sau imtransformsvới cường độ ảnh 35 Hình 2.1 Độ phân giải ảnh 41 Hình 2.2 Một loại trí thức người nghiên cứu phân tích khn mặt 41 Hình 2.3 Một mẫu khn mặt, có 16 vùng 23 quan hệ (các mũi tên) 46 Hình 3.1 Eigenfaces 53 Hình 3.2 Bức ảnh kiểm tra hình chiếu 54 Hình 3.3 Ảnh ban đầu .55 Hình 3.4 Face map ảnh ban đầu 55 Hình 3.5 Face map ảnh ban đầu với khơng gian khơng phải khn mặt .56 Hình 3.6 Những gương mặt dùng để huấn luyện 57 Hình 3.7 Bảy Eigenfaces tính tốn từ dãy huấn luyện hình 4.6, phơng loại bỏ 58 Hình 3.8 Ảnh hình chiếu vào khơng gian mặt người xác định Eigenfaces từ hình 3.7 61 Hình 3.9 Ảnh gốc đồ mặt người, vùng tối hình dạng khuôn mặt 63 Hình 3.10 Ví dụ đơn giản thể hình chiếu ảnh lên không gian mặt người Trong trường hợp sử dụng eigenfaces µ1, µ2 lớp mặt người (cá thể) biết trước (Ω1, Ω2, Ω3) .63 Phụ lục imwrite(photo,a); set(handles.ten,'string',' '); set(handles.ns,'string',' '); set(handles.mssv,'string',' '); set(handles.lop,'string',' '); set(handles.quequan,'string',' '); end % - Executes on button press in chon4 function chon4_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) photo=imread('anhluu\anh4.jpg'); a = strcat('anhluu/anhtest.jpg'); imwrite(photo,a); set(handles.ten,'string',' '); set(handles.ns,'string',' '); set(handles.mssv,'string',' '); set(handles.lop,'string',' '); set(handles.quequan,'string',' '); end % - Executes on button press in back function back_Callback(hObject, eventdata, handles) xoaanh; luanvantotnghiep; delete(handles.figure1); % - Executes on button press in close function close_Callback(hObject, eventdata, handles) xoaanh; luanvantotnghiep; delete(handles.figure1); % - Executes on button press in next function next_Callback(hObject, eventdata, handles) xoaanh; chuongtrinh2; delete(handles.figure1); **************************************************** **********Chương trình cắt ảnh động**************** function varargout = chuongtrinh2(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @chuongtrinh2_OpeningFcn, 'gui_OutputFcn', @chuongtrinh2_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục end % End initialization code - DO NOT EDIT % - Executes just before chuongtrinh2 is made visible function chuongtrinh2_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; % Update handles structure guidata(hObject, handles); % - Outputs from this function are returned to the command line function varargout = chuongtrinh2_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % - Executes on button press in chupanh function chupanh_Callback(hObject, eventdata, handles) xoaanh; global vid photo a photo = getsnapshot(vid); selection = questdlg(['Ban muon chup anh gan hay xa?'], ['Chuong trinh chup anh!'], 'Gan','Xa','Yes'); if strcmp(selection,'Gan') axes(handles.axes1); photo=imresize(photo,0.5); imshow(photo); a = strcat('anhluu/anh_goc.jpg'); imwrite(photo,a); elseif strcmp(selection,'Xa') axes(handles.axes1); imshow(photo); a = strcat('anhluu/anh_goc.jpg'); imwrite(photo,a); end % - Executes on button press in CAMERA function CAMERA_Callback(hObject, eventdata, handles) global vid info = imaqhwinfo; info = imaqhwinfo('winvideo'); info.DeviceInfo; info.DeviceInfo.SupportedFormats; vid = videoinput('winvideo',1,'YUY2_640x480'); set(vid,'ReturnedColorSpace','RGB'); preview(vid); % - Executes on button press in TACHMAT function TACHMAT_Callback(hObject, eventdata, handles) axes(handles.axes4); imshow('anhluu/anh1.jpg'); axes(handles.axes5); imshow('anhluu/anh2.jpg'); axes(handles.axes6); imshow('anhluu/anh3.jpg'); axes(handles.axes7); imshow('anhluu/anh4.jpg'); % - Executes on button press in Timmat GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục function Timmat_Callback(hObject, eventdata, handles) tic thuchien; axes(handles.axes2); imshow('anhluu/anh_kq.jpg'); set(handles.times,'string',toc); % - Executes on button press in NHANDANG function NHANDANG_Callback(hObject, eventdata, handles) tic nhandang; set(handles.times,'string',toc); % - Executes on button press in save1 function save1_Callback(hObject, eventdata, handles) s=imread('anhluu/anh1.jpg'); save1; %thực chương trình để lưu ảnh chọn % - Executes on button press in save2 function save2_Callback(hObject, eventdata, handles) s=imread('anhluu/anh2.jpg'); save1; %thực chương trình để lưu ảnh chọn % - Executes on button press in save3 function save3_Callback(hObject, eventdata, handles) s=imread('anhluu/anh3.jpg'); save1; %thực chương trình để lưu ảnh chọn % - Executes on button press in save4 function save4_Callback(hObject, eventdata, handles) s=imread('anhluu/anh4.jpg'); save1; %thực chương trình để lưu ảnh chọn % - Executes on button press in chon1 function chon1_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) % đánh dấu mang “Max” photo=imread('anhluu\anh1.jpg'); % chọn ảnh thực cho chương trình nhận dạng a = strcat('anhluu/anhtest.jpg'); % khơng thơi khơng hết imwrite(photo,a); set(handles.ten,'string',' '); set(handles.ns,'string',' '); set(handles.mssv,'string',' '); set(handles.lop,'string',' '); set(handles.quequan,'string',' '); end % - Executes on button press in chon2 function chon2_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) % đánh dấu mang “Max” photo=imread('anhluu\anh2.jpg'); % chọn ảnh thực cho chương trình nhận dạng a = strcat('anhluu/anhtest.jpg'); % cịn khơng thơi khơng hết imwrite(photo,a); set(handles.ten,'string',' '); set(handles.ns,'string',' '); set(handles.mssv,'string',' '); set(handles.lop,'string',' '); set(handles.quequan,'string',' '); end % - Executes on button press in chon3 function chon3_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) % đánh dấu mang “Max” GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục photo=imread('anhluu\anh3.jpg'); a = strcat('anhluu/anhtest.jpg'); imwrite(photo,a); set(handles.ten,'string',' '); set(handles.mssv,'string',' '); set(handles.quequan,'string',' '); end % chọn ảnh thực cho chương trình nhận dạng % khơng thơi khơng hết set(handles.ns,'string',' '); set(handles.lop,'string',' '); % - Executes on button press in chon4 function chon4_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) % đánh dấu mang “Max” photo=imread('anhluu\anh4.jpg'); % chọn ảnh thực cho chương trình nhận dạng a = strcat('anhluu/anhtest.jpg'); % cịn khơng thơi khơng hết imwrite(photo,a); set(handles.ten,'string',' '); set(handles.ns,'string',' '); set(handles.mssv,'string',' '); set(handles.lop,'string',' '); set(handles.quequan,'string',' '); end % - Executes on button press in back function back_Callback(hObject, eventdata, handles) xoaanh; % thực xóa ảnh cũ trước thực chuongtrinh1; %hiện chương trình xử lý ảnh delete(handles.figure1); % - Executes on button press in close function close_Callback(hObject, eventdata, handles) xoaanh; % thực xóa ảnh cũ trước thực luanvantotnghiep; %hiện chương trình xử lý ảnh delete(handles.figure1); ********* Đoạn code thực chương trình dị tìm cắt ảnh************* face='face'; nface='nface'; %********************** TAO MATRAN CSDL************ [T1,T2] = taoCSDL(face,nface); %******************* TAO EF ************ [m1,m2,E1,E2] = taoEF(T1,T2); %******************LOAD ANH DE XU LY********** im1=imread('anhluu/anh_goc.jpg'); im= imresize(im1,0.2); % nén ảnh lại 20% im =rgb2gray(im); % chuyển ảnh xám mang giá trị %***************** XAC DINH ************** [dong cot] = size(im); anh1=im*255; % nhận tồn ảnh với gí trị 255 anh2=im*255; for i=1:1:dong for j=1:1:cot tam=subim(im,i,j); tam1=tam-m1; % m1 giá trị trung bình ảnh face tam2=tam-m2; % m2 giá trị trung bình ảnh nace sochieu1=size(E1,2); sochieu2=size(E2,2); GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục hinhchieu1=tam*0; hinhchieu2=hinhchieu1; for k=1:sochieu1 toado=(E1(:,k))'*tam1; hinhchieu1=hinhchieu1+toado*E1(:,k); end for k=1:sochieu2 toado=(E2(:,k))'*tam2; hinhchieu2=hinhchieu2+toado*E2(:,k); end kc1=norm(tam1-hinhchieu1)/20; kc2=norm(tam2-hinhchieu2)/20; anh1(i,j)=kc1; anh2(i,j)=kc2; end end b=strcat('anhluu/anh_face.jpg'); imwrite(anh1,b); %******************* DANH DAU ANH *********** %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ xacdinh(im1,im1,anh1,anh2); anh1=im1; anh=im1; face=anh1; nface=anh2; ******* Đoạn code tạo sở liệu cho chương trình dị tìm ảnh mặt********** function [T1,T2] = taoCSDL(face,nface) csdl1 = dir(face); csdl2=dir(nface); soanh1 = 0; soanh2=0; % đếm tất file ảnh có thư mục face nface for i = 1:size(csdl1,1) if not(strcmp(csdl1(i).name,'.')|strcmp(csdl1(i).name,' ')|strcmp(csdl1(i).name,'Thumbs.db')) soanh1 = soanh1 + 1; end end for i = 1:size(csdl2,1) if not(strcmp(csdl2(i).name,'.')|strcmp(csdl2(i).name,' ')|strcmp(csdl2(i).name,'Thumbs.db')) soanh2 = soanh2 + ; end end T1 = []; % Tạo ma trận ảnh T1 chứa tập ảnh face for i = : soanh1 str = int2str(i); % hàm strcat nhằm liên kết giá trị thành chuỗi str = strcat('\',str,'.png'); % tiện cho trình truy xuất hay lưu lại giá trị str = strcat(face,str); img = imread(str); try img = rgb2gray(img); % chuyển tất ảnh xám catch GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục end [dong cot] = size(img); % ảnh huấn luyện có kích thước 18*27 tam = reshape(img',dong*cot,1); % biến ảnh thành vecto có 1cột 18*27 hàng T1 = [T1 tam]; % tăng dần kích thước ma trận T1 End % kết thúc ma trận T1 có kích thước 18*27x P với P số cột ma trận củng số ảnh thư mục ảnh %huấn luyện face 18*27=486 số dịng ma trận ảnh T1 tương tự ma trận T2 T2 = []; % Bước làm tương tự tạo ma trận T1 for i = : soanh2 % ma trận ảnh nface str = int2str(i); str = strcat('\',str,'.png'); str = strcat(nface,str); img = imread(str); try img = rgb2gray(img); catch end [dong cot] = size(img); %dong 27 cot 18 tam = reshape(img',dong*cot,1); T2 = [T2 tam]; end *********Đoạn code tạo enginface ************** function [m1,m2,E1,E2] = taoEF(T1,T2) m1 = mean(T1,2); % Tính tốn giá trị ảnh trung bình soanh1 = size(T1,2); m2 = mean(T2,2); soanh2=size(T2,2); %Tính độ lệch giửa bước ảnh huấn luyện với giá trị ảnh trung bình sau trừ giá trị trung bình ảnh trung bình lưu sai khác lại làm ma trận ảnh ma trận ma trận vecto riêng ảnh huấn luyện, nhân ma trận vector riêng với ma trận nghịch đảo dùng hàm “eig” để tìm vector riêng cho tập ảnh huấn luyện A1 = []; for i = : soanh1 temp = double(T1(:,i)) - m1; % T(:,i): vector cột thứ i ảnh A1 = [A1 temp]; end A2 = []; for i = : soanh2 temp = double(T2(:,i)) - m2; A2 = [A2 temp]; end L1 = A1'*A1; [V1 D1] = eig(L1); %tìm vector riêng trị riêng L2 = A2'*A2; [V2 D2] = eig(L2); %V chứa ma trận vecto riêng, D chứa trị riêng vector riêng đó, vector riêng V(:,i) ứng với trị riêng D(i,i) D=diag(D1); D=sort(D); % sếp theo chiều tăng dần s=size(D); s=s(1); D=D(s-20); % giữ lại 20 trị riêng lớn LeigV1 = []; % 20 vector riêng lớn tập ảnh huấn luyện for i = : size(V1,2) if( D1(i,i)>D ) LeigV1 = [LeigV1 V1(:,i)]; % tạo ma trận gồm 20 vecto riêng End %tại vị trí cịn vị trí khác GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục End D=diag(D2); D=sort(D); s=size(D);s=s(1); D=D(s-30); LeigV2 = []; for i = : size(V2,2) if( D2(i,i)>D ) LeigV2 = [LeigV2 V2(:,i)]; end end E1 = A1 * LeigV1; E2 = A2 * LeigV2; sovector=size(E1,2); for i=1:sovector dodai=norm(E1(:,i)); E1(:,i)=E1(:,i)/dodai; end sovector=size(E2,2); for i=1:sovector dodai=norm(E2(:,i)); E2(:,i)=E2(:,i)/dodai; End %đều cho giá trị % sovector số cột ma trận % “norm” la tính giá trị bình phương trung bình ****** doan code xac dinh va cat anh khuon mat******** function xacdinh(anh1,anh,face,nface) [dong,cot]=size(face); % phương pháp PCA phương pháp xử lý ảnh theo khối for i=15:1:dong-13; % xử lý ảnh ta thường cắt ảnh lớn thành for j=8:1:cot-8; % ảnh để xử lý mà ảnh xử lý phải có kích thước s1=0.001; % kích thước ảnh tập ảnh huấn luyện s2=0.001; % xử lý ta phải tính giá trị từ tâm ảnh for i1=i-13:i+13 % để quét truy xuất hình Eigenface thường for j1=j-7:j+7 % đường viền xung quanh if abs(i1-i)89 && face(i,j)10 i2=i; j2=j; end end end end if i2-30>0 for i=1:i2-30 for j=1:d/2 if I(j,i)==255 && i>10 i3=i; j3=j; end end end end if i3-30>0 for i=1:i3-20 for j=1:d/2 if I(j,i)==255 && i>10 i4=i; j4=j; end end end end [d,c]=size(anhkq); if j1>1 &&i1>1 [j12,i12]=do(I,j1,i1); i1=i12-16; j1=j12-20; if i1d j11=d; end anh1=imcrop(anhkq1,[i1 j1 i11-i1 j11-j1]); a1=strcat('anhluu/anh1.jpg'); imwrite(anh1,a1); for c1=i1:i11 anhkq(j1,c1)=255; anhkq(j11,c1)=255; anhkq(j1-2,c1)=255; anhkq(j11-2,c1)=255; end for d1=j1:j11 anhkq(d1,i1)=255; anhkq(d1,i11)=255; anhkq(d1,i1-2)=255; anhkq(d1,i11-2)=255; end end anhkq(j1-1,c1)=255; anhkq(j11-1,c1)=255; anhkq(j1-3,c1)=255; anhkq(j11-3,c1)=255; anhkq(d1,i1-1)=255; anhkq(d1,i11-1)=255; anhkq(d1,i1-3)=255; anhkq(d1,i11-3)=255; if j2>1 &&i2>1 [j22,i22]=do(I,j2,i2); i2=i22-16; j2=j22-20; if i2d j21=d; end anh1=imcrop(anhkq1,[i2 j2 i21-i2 j21-j2]); a1=strcat('anhluu/anh2.jpg'); imwrite(anh1,a1); for c1=i2:i21 anhkq(j2,c1)=255; anhkq(j21,c1)=255; anhkq(j2-1,c1)=255; anhkq(j21-1,c1)=255; anhkq(j2-2,c1)=255; anhkq(j21-2,c1)=255; anhkq(j2-3,c1)=255; anhkq(j21-3,c1)=255; end for d1=j2:j21 anhkq(d1,i2)=255; anhkq(d1,i21)=255; anhkq(d1,i2-1)=255; anhkq(d1,i21-1)=255; anhkq(d1,i2-2)=255; anhkq(d1,i21-2)=255; anhkq(d1,i2-3)=255; anhkq(d1,i21-3)=255; end end if j3>1 &&i3>1 [j32,i32]=do(I,j3,i3); if i3d j31=d; end i3=i32-16; i31=i3+149; GVHD: Ths Đào Thị Thu Thủy j3=j32-20; j31=j3+199; SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục anh1=imcrop(anhkq1,[i3 j3 i31-i3 j31-j3]); a1=strcat('anhluu/anh3.jpg'); imwrite(anh1,a1); for c1=i3:i31 anhkq(j3,c1)=255; anhkq(j31,c1)=255; anhkq(j3-1,c1)=255; anhkq(j31-1,c1)=255; anhkq(j3-2,c1)=255; anhkq(j31-2,c1)=255; anhkq(j3-3,c1)=255; anhkq(j31-3,c1)=255; end for d1=j3:j31 anhkq(d1,i3)=255; anhkq(d1,i31)=255; anhkq(d1,i3-1)=255; anhkq(d1,i31-1)=255; anhkq(d1,i3-2)=255; anhkq(d1,i31-2)=255; anhkq(d1,i3-3)=255; anhkq(d1,i31-3)=255; end end if j4>1 &&i4>1 [j42,i42]=do(I,j4,i4); i4=i42-16; j4=j42-20; if i4d j41=d; end anh1=imcrop(anhkq1,[i4 j4 i41-i4 j41-j4]); a1=strcat('anhluu/anh4.jpg'); imwrite(anh1,a1); for c1=i4:i41 anhkq(j4,c1)=255; anhkq(j41,c1)=255; anhkq(j4-1,c1)=255; anhkq(j41-1,c1)=255; anhkq(j4-2,c1)=255; anhkq(j41-2,c1)=255; anhkq(j4-3,c1)=255; anhkq(j41-3,c1)=255; end for d1=j4:j41 anhkq(d1,i4)=255; anhkq(d1,i41)=255; anhkq(d1,i4-1)=255; anhkq(d1,i41-1)=255; anhkq(d1,i4-2)=255; anhkq(d1,i41-2)=255; anhkq(d1,i4-3)=255; anhkq(d1,i41-3)=255; end end e=strcat('anhluu/anh_kq.jpg'); imwrite(anhkq,e); ****Đoạn code xác định vị trí trung tâm khn mặt******* function [a1,b1]= do(anh,a,b) % b la gia tri cot a la gia tri dong mini=b; minj=a; maxj=a; [d,c]=size(anh); b1=b-20; a1=a-15; a2=a+15; if b1200 GVHD: Ths Đào Thị Thu Thủy SVTH: Nguyễn Trung Hiếu Bùi Ngọc Liêm Phụ lục if i14) - Cắt ảnh mặt lưu vào file - Xử lý ảnh động qua webcam Trong luận chúng em xin đề cập tới vấn đề dị tìm nhận dạng mặt người qua ảnh tĩnh... + im2bw: Tạo ảnh nhị phân từ ảnh cường độ, ảnh số hay ảnh RGB sở ngưỡng ánh sáng + ind2gray: Tạo ảnh cường độ đen trắng từ ảnh số + ind2rgb: Tạo ảnh RGB từ ảnh số + mat2gray: Tạo ảnh cường độ... phụ thuộc vào lớp ảnh vào: + Nếu lớp ảnh vào double, ảnh ảnh đen trắng thuộc lớp double Ảnh không ảnh nhị phân bao gồm giá trị khác + Nếu ảnh vào uint8, ảnh ảnh nhị phân thuộc lớp uint8 Giá trị

Ngày đăng: 04/08/2020, 20:05

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

  • Đang cập nhật ...

Tài liệu liên quan