【正文】
此次設(shè)計(jì)一共用了 7個(gè)文件夾,每個(gè)文件夾 5張訓(xùn)練圖象。 第三章 基于 PCA 算法的人臉識(shí)別 PCA 的基本思想 PCA:就是我們通常說的主成分分析法,它可以把確定一個(gè)事物的特征提取出來,舍去沒有特點(diǎn)的特征值,提取事物的本質(zhì)因素,從而使復(fù)雜的問題簡(jiǎn)化。 如果 A是一個(gè) n 行 k列的矩陣,計(jì)算矩陣 A的協(xié)方差矩陣 C, C的表達(dá)方式如下: 上式中 u=E(x),都是每列向量的期望值,這里指每列向量的平均值。 接著求出協(xié)方差矩陣 C 的特征值,我們選取前 q( qk)個(gè)最大的特征值,然后求出這 q個(gè)特征值對(duì)應(yīng)的特征向量。 我們使用這個(gè) n*q的投影矩陣“代表”樣本矩陣 A( n*k),從而實(shí)現(xiàn)了降維。 3.選取第 2 步所得的 15 個(gè)最大特征值對(duì)應(yīng)的特征向量組成投影矩陣 A,將每張樣本庫(kù)的圖象向矩陣 A投影,得到 15 個(gè)新的矩陣。 所以我們一般需要先對(duì)圖像進(jìn)行處理,處理圖像數(shù)據(jù)為 28 23,變?yōu)榱邢蛄烤褪?28 23=644 維,有助于計(jì)算。 對(duì)于圖像的識(shí)別,也被視為一個(gè)列向量,投影到子空間中獲得一個(gè)投影矩陣,然后求出這個(gè)投影矩陣與樣本圖象投影矩陣之間的歐式距離,找出歐式距離最小的那張圖象,這張圖像就是與待識(shí)別圖 像最相近的。 然而,由于主成分分析法要求待 辨認(rèn)的圖像與訓(xùn)練集圖像類似,對(duì)圖象訓(xùn)練集和待辨認(rèn)圖像的灰度相關(guān)性非常依。 因此,為了提高識(shí)別率,減少外部環(huán)境對(duì)辨別結(jié)果的影響,該系統(tǒng)的實(shí)際應(yīng)用中,往往需要結(jié)合其他方法,如小波變換, Gabor 算法,神經(jīng)網(wǎng)絡(luò)算法等等,使用 PCA 方法單獨(dú)開發(fā)的系統(tǒng)很難在實(shí)踐中應(yīng)用,但與其它方法結(jié)合可以達(dá)到很好的效果,現(xiàn)在的人臉識(shí)別系統(tǒng)的產(chǎn)品大多數(shù)都是采用幾種方法相結(jié)合的方式。點(diǎn)擊“載入照片”將會(huì)彈出加載圖象的對(duì)話框,點(diǎn)擊“開始識(shí)別”按鈕則彈出識(shí)別界面的對(duì)話框。在人臉樣本眾多的情況下,樣本訓(xùn)練過程會(huì)比較慢,人臉識(shí)別過程也會(huì)相對(duì)復(fù)雜,所以本設(shè)計(jì)只針對(duì)少量樣本 10 的人臉庫(kù)。 圖 識(shí)別圖象的載入 人臉識(shí)別的功能與說明 人臉識(shí)別過程與采集過程有同樣的步驟,首先也是對(duì) 人臉圖象進(jìn)行歸一化的處理,本設(shè)計(jì)圖象像素統(tǒng)一處理為 28*23, ,然后讀取圖象,判斷圖象是否為灰度圖象。 圖 人臉的識(shí)別 功能實(shí)現(xiàn)及主要函數(shù)說明 11 本設(shè)計(jì)主要有三個(gè)函數(shù): 、 、 。所以先使用 FACESAVE進(jìn)行人臉定位處理 ,得到 92*112的圖象。接著利用 PCA算法,提取圖象的特征值。待識(shí)別的圖像投影到特征臉空間中,然后得到一行特征向量,然后計(jì)算待識(shí)別人臉與圖像庫(kù)中的人臉的歐式距離,找出最小值,該過程對(duì)應(yīng)于函數(shù)function distance = dist(feature1,feature2),如果比閾值小,就表明是圖人臉樣本庫(kù)的人臉,在數(shù)據(jù)庫(kù)中的查詢圖像特征的基本信息,并將 結(jié)果輸出到對(duì)話框中,相反,如果最小距離大于閾值,就表明此圖不是人臉樣本庫(kù)里面的圖象,繼而主界面就會(huì)給出相應(yīng)的提示。 實(shí)驗(yàn)結(jié)果 設(shè)計(jì)中有 7個(gè)人的頭像,每個(gè)人有 5張樣本圖象,一共有 35張樣本圖象。但是在兩種圖象采光不相同的情況下,識(shí)別率很低。 光照變化 在 人臉識(shí)別中,如果樣本庫(kù)圖象光照與待識(shí)別圖象光照差距很大的時(shí)候,識(shí)別率一般都會(huì)很低。其中,X 平移, Y 軸的圖象對(duì)人臉位置顯示的變化,采用適當(dāng)?shù)姆椒ǐ@得通過坐標(biāo)變換變化的校正;圖像比例的變化 就是沿 Z 軸的變化,通過縮放二維圖像可以實(shí)現(xiàn)對(duì)它的校正。 系統(tǒng)存在的問題 首先,在運(yùn)行時(shí)間方面,一般是可以接受的,但反應(yīng)速度慢,對(duì)數(shù)據(jù)庫(kù)的讀寫和存儲(chǔ)的主要相關(guān),且計(jì)算量比較大。隨著社會(huì)的發(fā)展,人臉識(shí)別因其自身的優(yōu)點(diǎn),在越來越多的領(lǐng)域都有廣泛的應(yīng)用,在當(dāng)今身份識(shí)別使用日益頻繁的社會(huì)。 ( 2)分析了各種分類器在人臉識(shí)別中的使用。 經(jīng)過一段時(shí)間的奮斗,論 文也終于完成,回想此次畢業(yè)設(shè)計(jì)經(jīng)過的點(diǎn)點(diǎn)滴滴,對(duì)于幫助過我的同學(xué)和老師,我發(fā)自內(nèi)心的感謝你們,如果沒有你們的幫助,我肯定不能這么快就完成了這篇論文設(shè)計(jì),尤其特別要 感謝 趙 老師, 他是我的指導(dǎo)老師,由于個(gè)人原因,我需要在家鄉(xiāng)和學(xué)校兩地來回跑,每次時(shí)間都很近,但是趙老師卻犧牲自己的下班時(shí)間,專門為我做畢業(yè)設(shè)計(jì)方面的指導(dǎo),從論文的開題報(bào)告、任務(wù)書以及論文的寫作過程中都給我提供了不少的建議與幫助,使我的 16 論文一點(diǎn)點(diǎn)的完善。最后非常感謝每一位幫助過我的老師和同學(xué)。CALLBACK39。Value39。gui_Name39。gui_OpeningF39。gui_LayoutF39。 if nargin amp。 20 else gui_mainf(gui_State, varargin{:})。,39。 % Outputs from this function are returned to the mand line. function varargout = facerecg_OutputF(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT)。 39。,report)。)。 % Executes on button press in pushbuttonloadimg. function pushbuttonloadimg_Callback(hObject, eventdata, handles) % hObject handle to pushbuttonloadimg (see GCBO) % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %文件篩選框 選擇圖片 [filename,pathname] = uigetfile({39。*.png。},39。 end strfullname = strcat(pathname,filename)。測(cè)試圖像 39。 39。,report)。,39。,39。,39。I39。%提示信息 set(,39。 return。你還未訓(xùn)練樣本,請(qǐng)先訓(xùn)練 !39。 set(,39。 load trainresult %裝載訓(xùn)練結(jié)果 25 goalpixnum = goalsize(1)*goalsize(2)。%灰 度變換,圖像增強(qiáng) if (isequal([M,N],goalsize) == 0)%如果不是 64*64 的 I1 = imresize(I1,goalsize)。string39。*I1。%取出某個(gè)樣本的 PCA 特征 d = dist(testfeatures,tempfeature)。未識(shí)別出此人。string39。%測(cè)出的類別序號(hào) picindex = mod(minindex,trainnumpertype)。 39。,str)。,classlabel,picindex)。,classlabel,personnames{classlabel})。 strtitle = sprintf(39。 fn = sprintf(39。 set(,39。%圖片序列號(hào) end str = sprintf(39。 axes()。)。 end [minvalue,minindex] = min(dd)。%訓(xùn)練樣本的個(gè)數(shù) dd = []。測(cè)試數(shù)據(jù)降維 ......39。%調(diào)整圖片矩陣樣式,轉(zhuǎn)為 4096 行 1 列的矩陣 I1 = double(I1)。%獲取圖片的大小,以及色彩類型 if color == 3%如果是彩色圖片 I1 = rgb2gray(I)。,report)。提示 39。39。,report)。請(qǐng)先載入要測(cè)試的圖像 !39。}。,39。,39。 % Executes on button press in pushbuttonrecg. function pushbuttonrecg_Callback(hObject, eventdata, handles) % hObject handle to pushbuttonrecg (see GCBO) 24 % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) personnames = {39。 set(,39。%保存在 handles 內(nèi),以便被其他 函數(shù)調(diào)用 report = sprintf(39。%讀取圖片 axes() imshow(I)。)。,39。*.bmp。String39。%調(diào)用訓(xùn)練的 m 文件 report = sprintf(39。 set(,39。 % Executes on button press in pushbuttontrain. function pushbuttontrain_Callback(hObject, eventdata, handles) % hObject handle to pushbuttontrain (see GCBO) 22 % eventdata reserved to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) report = sprintf(39。) 21 % Update handles structure guidata(hObject, handles)。 set(gcf,39。 ischar(varargin{1}) = str2func(varargin{1})。gui_Callback39。gui_OutputF39。gui_Singleton39。s Tools menu. Choose GUI allows only one % instance to run (singleton). % % See also: GUIDE, GUIDATA, GUIHANDLES 19 % Edit the above text to modify the response to help facerecg % Last Modified by GUIDE 09May