版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、模式識別大作業(yè)人臉識別方法- 基于PCA和歐幾里得距離判據(jù)的模板匹配分類器一、 理論知識1、主成分分析主成分分析是把多個特征映射為少數(shù)幾個綜合特征的一種統(tǒng)計分析方法。在多特征的研究中,往往由于特征個數(shù)太多,且彼此之間存在著一定的相關(guān)性,因而使得所觀測的數(shù)據(jù)在一定程度上有信息的重疊。當(dāng)特征較多時,在高維空間中研究樣本的分布規(guī)律就更麻煩。主成分分析采取一種降維的方法,找出幾個綜合因子來代表原來眾多的特征,使這些綜合因子盡可能地反映原來變量的信息,而且彼此之間互不相關(guān),從而達(dá)到簡化的目的。主成分的表示相當(dāng)于把原來的特征進(jìn)行坐標(biāo)變換(乘以一個變換矩陣),得到相關(guān)性較?。▏?yán)格來說是零)的綜合因子。1.1
2、 問題的提出一般來說,如果N個樣品中的每個樣品有n個特征,經(jīng)過主成分分析,將它們綜合成n綜合變量,即由下列原則決定:1、和(,i,j = 1,2,.n)相互獨(dú)立;2、y的排序原則是方差從大到小。這樣的綜合指標(biāo)因子分別是原變量的第1、第2、第n個主分量,它們的方差依次遞減。1.2主成分的導(dǎo)出我們觀察上述方程組,用我們熟知的矩陣表示,設(shè)是一個n維隨機(jī)向量,是滿足上式的新變量所構(gòu)成的向量。于是我們可以寫成Y=CX,C是一個正交矩陣,滿足CC=I。坐標(biāo)旋轉(zhuǎn)是指新坐標(biāo)軸相互正交,仍構(gòu)成一個直角坐標(biāo)系。變換后的N個點(diǎn)在軸上有最大方差,而在軸上有最小方差。同時,注意上面第一條原則,由此我們要求軸和軸的協(xié)方差
3、為零,那么要求令,則經(jīng)過上面式子的變換,我們得到以下n個方程1.3主成分分析的結(jié)果我們要求解出C,即解出上述齊次方程的非零解,要求的系數(shù)行列式為0。最后得出結(jié)論是的根,的方差為。然后選取前面p個貢獻(xiàn)率大的分量,這樣就實(shí)現(xiàn)了降維。也就是主成分分析的目標(biāo)。二、 實(shí)現(xiàn)方法1、 獲取數(shù)據(jù)。在編程時具體是把一幅二維的圖像轉(zhuǎn)換成一維的;2、 減去均值。要使PCA正常工作,必須減去數(shù)據(jù)的均值。減去的均值為每一維的平均,所有的x值都要減去,同樣所有的y值都要減去,這樣處理后的數(shù)據(jù)都具有0均值;3、 計算協(xié)方差矩陣;4、 計算協(xié)方差矩陣的特征矢量和特征值。因?yàn)閰f(xié)方差矩陣為方陣,我們可以計算它的特征矢量和特征值,
4、它可以告訴我們數(shù)據(jù)的有用信息;5、選擇成分組成模式矢量現(xiàn)在可以進(jìn)行數(shù)據(jù)壓縮降低維數(shù)了。如果你觀察上一節(jié)中的特征矢量和特征值,會注意到那些特征值是十分不同的。事實(shí)上,可以證明對應(yīng)最大特征值的特征矢量就是數(shù)據(jù)的主成分。對應(yīng)大特征值的特征矢量就是那條穿過數(shù)據(jù)中間的矢量,它是數(shù)據(jù)維數(shù)之間最大的關(guān)聯(lián)。一般地,從協(xié)方差矩陣找到特征矢量以后,下一步就是按照特征值由大到小進(jìn)行排列,這將給出成分的重要性級別。現(xiàn)在,如果你喜歡,可以忽略那些重要性很小的成分,當(dāng)然這會丟失一些信息,但是如果對應(yīng)的特征值很小,你不會丟失很多信息。如果你已經(jīng)忽略了一些成分,那么最后的數(shù)據(jù)集將有更少的維數(shù),精確地說,如果你的原始數(shù)據(jù)是n維
5、的,你選擇了前p個主要成分,那么你現(xiàn)在的數(shù)據(jù)將僅有p維。現(xiàn)在要做的是你需要組成一個模式矢量,這只是幾個矢量組成的矩陣的一個有意思的名字而已,它由你保持的所有特征矢量構(gòu)成,每一個特征矢量是這個矩陣的一列。6、獲得新數(shù)據(jù)這是PCA最后一步,也是最容易的一步。一旦你選擇了須要保留的成分(特征矢量)并組成了模式矢量,我們簡單地對其進(jìn)行轉(zhuǎn)置,并將其左乘原始數(shù)據(jù)的轉(zhuǎn)置:其中rowFeatureVector是由特征矢量作為列組成的矩陣的轉(zhuǎn)置,因此它的行就是原來的特征矢量,而且對應(yīng)最大特征值的特征矢量在該矩陣的最上一行。rowdataAdjust是減去均值后的數(shù)據(jù),即數(shù)據(jù)項(xiàng)目在每一列中,每一行就是一維。Fin
6、alData是最后得到的數(shù)據(jù),數(shù)據(jù)項(xiàng)目在它的列中,維數(shù)沿著行。FinalData = rowFeatureVector * rowdataAdjust這將僅僅給出我們選擇的數(shù)據(jù)。我們的原始數(shù)據(jù)有兩個軸(x和y),所以我們的原始數(shù)據(jù)按這兩個軸分布。我們可以按任何兩個我們喜歡的軸表示我們的數(shù)據(jù)。如果這些軸是正交的,這種表達(dá)將是最有效的,這就是特征矢量總是正交的重要性。我們已經(jīng)將我們的數(shù)據(jù)從原來的xy軸表達(dá)變換為現(xiàn)在的單個特征矢量表達(dá)。如果我們已經(jīng)忽略了一些特征矢量,則新數(shù)據(jù)將會用我們保留的矢量表達(dá)。三、 matlab編程matlab程序分為三部分。程序框圖如下圖所示。這個函數(shù)將源圖像提取成特征臉,
7、然后比較它們之間的歐幾里得距離這個函數(shù)首先得到二維數(shù)組,包括所有的訓(xùn)練樣本向量并且從訓(xùn)練樣本中返回3個輸出量這個函數(shù)將所有訓(xùn)練樣本的二維圖像轉(zhuǎn)換成一維列向量。接著,它把這些一維列向量組合到一行里面構(gòu)造出二維向量T,即每個單元的信息量是一幅圖片mainEigenfaceCoreRecognitionCreatDataBase四、 總結(jié)從書里看我覺得最讓人明白模板匹配分類器的一段話,就是“譬如A類有10個訓(xùn)練樣品,就有10個模板,B類有8個訓(xùn)練樣品,就有8個模板。任何一個待測樣品在分類時與這18個模板都算一算相似度,找出最相似的模板,如果該模板是B類中的一個,就確定待測樣品為B類,否則為A類?!币?/p>
8、思很簡單吧,算相似度就是算距離。就是說,模板匹配就要用你想識別的樣品與各類中每個樣品的各個模板用距離公式計算距離,距離最短的那個就是最相似的。這樣的匹配方法明顯的缺點(diǎn)就是在計算量大,存儲量大,每個測試樣品要對每個模板計算一次相似度,如果模板量大的時候,計算量就十分的大。五、 附錄(matlab 程序代碼)第一部分:CreatDatabase.mfunction T = CreatDatabase(TrainDatabasePath)%一系列人臉(訓(xùn)練樣本T1,T2,,TM)%函數(shù)描述:這個函數(shù)將所有訓(xùn)練樣本的二維圖像轉(zhuǎn)換成一維列向量。接著,它把這些一維列向量組合到一行里面構(gòu)造出二維向量T,即每
9、個單元的信息量是一幅圖片%參數(shù): TrainDatabasePath - 訓(xùn)練數(shù)據(jù)庫的路徑%返回值:T -%一個二維矩陣,包含了所有一維向量。假設(shè)所有在訓(xùn)練樣本的P幅圖像擁有相同的大?。∕*N)。因此,這些一維向量的長度是M*N而且T將是一個MN*P的二維%矩陣%文件處理%TrainFiles = dir(TrainDatabasePath);Train_Number = 0;for i = 1:size(TrainFiles,1) t = size(TrainFiles,1); if not(strcmp(TrainFiles(i).name,.)|strcmp(TrainFiles(i).
10、name,.)|strcmp(TrainFiles(i).name,Thumbs.db) Train_Number = Train_Number + 1; endend%從一維數(shù)組構(gòu)造成二維數(shù)組%T = ;for i = 1: Train_Number str = int2str(i); str = strcat(,str,.pgm); str = strcat(TrainDatabasePath,str); img = imread(str); irow icol = size(img); temp = reshape(img,irow*icol,1);%將二維數(shù)組變成一維數(shù)組 T = T
11、temp;end第二部分:EigenfaceCore.mfunction m,A,Eigenfaces = EigenfaceCore(T)%利用主成分分析(PCA)的方法在各張人臉中決定最明顯的特征%描述:這個方程首先得到二維數(shù)組,包括所有的訓(xùn)練樣本向量并且從訓(xùn)練樣本中返回3個輸出量%參數(shù):T - 一個二維矩陣,包含了所有一維向量。假設(shè)所有在訓(xùn)練樣本的P幅圖像擁有相同的大小(M*N)。因此,這些一維向量的長度是M*N而且T將是一個MN*P的二維%矩陣%返回值: m -(M*Nx1)訓(xùn)練樣本的均值% Eigenfaces - (M*Nx(P-1)訓(xùn)練樣本協(xié)方差矩陣的特征向量% A - (M*N
12、xP) 中心向量的矩陣%計算均值%m = mean(T,2); %計算樣本平均值 m = (1/P)*sum(Tjs)Train_Number = size(T,2);%計算每個圖像與均值的差%要使PCA正常工作,必須減去數(shù)據(jù)的均值。減去的均值為每一維的平均,所有的x值都要減去,同樣所有的y值都要減去%這樣處理后的數(shù)據(jù)都具有0均值%A = ;for i = 1 : Train_Number temp = double(T(:,i) - m; A = A temp; %再次合并矩陣end%計算協(xié)方差矩陣%計算協(xié)方差矩陣的特征矢量和特征值%L = A*A; %L代表協(xié)方差矩陣 C = A*A.V
13、D = eig(L);%計算矩陣A的特征值D(eigenvalues)和特征矩陣V(eigenvectors)%選擇成分組成模式矢量%L_eig_vec = ;for i = 1:size(V,2) if(D(i,i)1) L_eig_vec = L_eig_vec V(:,1); endend%計算協(xié)方差矩陣的特征向量%Eigenfaces = A * L_eig_vec;第三部分:Recognition.mfunction OutputName = Recognition(TestImage, m, A, Eigenfaces)%函數(shù)描述:這個函數(shù)將源圖像提取成特征臉,然后比較它們之間的歐
14、幾里得距離%輸入量: TestImage -測試樣本的路徑% m -(M*Nx1)訓(xùn)練樣本的均值% Eigenfaces - (M*Nx(P-1)訓(xùn)練樣本協(xié)方差矩陣的特征向量% A - (M*NxP) 中心向量的矩陣%返回值: OutputName -在訓(xùn)練樣本中的被識別的圖像的名字%從中心向量中提取特征臉%ProjectedImages = ;Train_Number = size(Eigenfaces,2);for i = 1:Train_Number temp = Eigenfaces * A(:,i) ProjectedImages = ProjectedImages temp;end
15、%從測試樣本中提取PCA特征%InputImage = imread(TestImage);temp = InputImage(:,:,1);irow icol = size(temp);InImage = reshape(temp,irow*icol,1);Difference = double(InImage) - m;ProjectedTestImage = Eigenfaces*Difference;%計算歐幾里得幾何距離%Euc_dist = ;for i = 1 : Train_Number, q = ProjectedImages(:,i); temp = (norm(Proje
16、ctedTestImage - q)2; Euc_dist = Euc_dist temp;end%找出A中最小元素及其索引,把最小值返回給C,最小值索引返回給I。 %如果有幾個相同的最小值,那么返回第一個被發(fā)現(xiàn)的索引。Euc_dist_min, Recognized_index = min(Euc_dist);OutputName = strcat(int2str(Recognized_index),.pgm);主程序clear allclcclose allTrainDatabasePath = uigetdir(C:MATLAB7workPCA, Select training data
17、base path );TestDatabasePath = uigetdir(C:MATLAB7workPCA, Select test database path);prompt = Enter test image name(a number between 1 to 10):;dlg_title = Input of PCA_Based Face Recognition System;num_lines = 1;def = 1;TestImage = inputdlg(prompt,dlg_title,num_lines,def);TestImage = strcat(TestDatabasePath,char(TestImage),.pgm);im = imread(TestImage);T = CreatDatabase(TrainDatabasePath);m, A, Eigenfaces = EigenfaceCore(T);OutputN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道口崗前安全培訓(xùn)會課件
- 2024+共識聲明:成人心臟手術(shù)患者快速拔管建議解讀
- 達(dá)州大灘消防安全培訓(xùn)課件
- 邊溝開挖安全教育培訓(xùn)課件
- 數(shù)據(jù)中心ups單機(jī)并機(jī)試題及答案
- 車隊(duì)防疫安全培訓(xùn)課件
- 車隊(duì)安全培訓(xùn)計劃方案課件
- 分公司副經(jīng)理內(nèi)部競聘經(jīng)營管理類筆試題
- 車間級崗前安全培訓(xùn)流程課件
- 酒店客房預(yù)訂與收益最大化策略制度
- 2026屆云南省昆明市西山區(qū)民中數(shù)學(xué)高一上期末考試模擬試題含解析
- 2025年大學(xué)第一學(xué)年(食品營養(yǎng)與健康)營養(yǎng)學(xué)基礎(chǔ)測試題及答案
- 2025-2030烏干達(dá)基于咖啡的種植行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2026年共青團(tuán)中央所屬單位招聘66人備考題庫及答案詳解一套
- 人民警察法培訓(xùn)課件
- 2026年哈爾濱職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫參考答案詳解
- 2025云南昆明巫家壩建設(shè)發(fā)展有限責(zé)任公司及下屬公司第四季度社會招聘31人歷年真題匯編帶答案解析
- 輸尿管切開取石課件
- 小貓絕育協(xié)議書
- 66kV及以下架空電力線路設(shè)計標(biāo)準(zhǔn)
- 2025年浙江乍浦經(jīng)濟(jì)開發(fā)區(qū)(嘉興港區(qū))區(qū)屬國有公司公開招聘28人筆試考試備考試題及答案解析
評論
0/150
提交評論