【老生谈算法】基于主成分分析PCA的matlab人脸识别系统设计与算法原理(论文+程序源码)——人脸识别算法
基于主成分分析PCA的matlab人臉識別系統設計與算法原理(論文+程序源碼)
大家好,今天給大家介紹基于主成分分析PCA的matlab人臉識別系統設計與算法原理(論文+程序源碼)。
對于一幅圖像可以看作一個由像素值組成的矩陣,也可以擴展開,看成一個矢量,如一幅N*N 象素的圖像可以視為長度為N2 的矢量,這樣就認為這幅圖像是位于N2 維空間中的一個點,這種圖像的矢量表示就是原始的圖像空間,但是這個空間僅是可以表示或者檢測圖像的許多個空間中的一個。不管子空間的具體形式如何,這種方法用于圖像識別的基本思想都是一樣的,首先選擇一個合適的子空間,圖像將被投影到這個子空間上,然后利用對圖像的這種投影間的某種度量來確定圖像間的相似度,最常見的就是各種距離度量。因此,本項目采用PCA算法并利用GUI實現人臉識別。
文章目錄:
- 基于主成分分析PCA的matlab人臉識別系統設計與算法原理(論文+程序源碼)
- 1、項目簡介
- 2、難度指數
- 3、運行環境:
- 4、項目詳解:
- 5、源碼下載:
1、項目簡介
主成分分析也稱主分量分析,旨在利用降維的思想,把多指標轉化為少數幾個綜合指標。
在統計學中,主成分分析(principal components analysis,PCA)是一種簡化數據集的技術。它是一個線性變換。這個變換把數據變換到一個新的坐標系統中,使得任何數據投影的第一大方差在第一個坐標(稱為第一主成分)上,第二大方差在第二個坐標(第二主成分)上,依次類推。主成分分析經常用減少數據集的維數,同時保持數據集的對方差貢獻最大的特征.這是通過保留低階主成分,忽略高階主成分做到的。這樣低階成分往往能夠保留住數據的最重要方面.
2、難度指數
本項目難度:中等難度
適用場景:相關題目的畢業設計及相關領域的應用研究
3、運行環境:
環境配置:
本項目所使用的MATLAB版本為MATLAB 7.8.0(R2016a)
注:可適配絕大部分matlab版本
項目技術:
PCA+主成分分析法+圖像處理技術+人臉識別算法等等
4、項目詳解:
提示:以下為項目的詳細介紹,項目源碼及項目設計文檔下載地址見文末。
4.1主成分分析法算法原理
主成分分析法是一種降維的統計方法,它借助于一個正交變換,將其分量相關的原隨機向量轉化成其分量不相關的新隨機向量,這在代數上表現為將原隨機向量的協方差陣變換成對角形陣,在幾何上表現為將原坐標系變換成新的正交坐標系,使之指向樣本點散布最開的p 個正交方向,然后對多維變量系統進行降維處理,使之能以一個較高的精度轉換成低維變量系統,再通過構造適當的價值函數,進一步把低維系統轉化成一維系統。
4.1.1主成分分析的基本思想
在實證問題研究中,為了全面、系統地分析問題,我們必須考慮眾多影響因素。這些涉及的因素一般稱為指標,在多元統計分析中也稱為變量。因為每個變量都在不同程度上反映了所研究問題的某些信息,并且指標之間彼此有一定的相關性,因而所得的統計數據反映的信息在一定程度上有重疊。在用統計方法研究多變量問題時,變量太 多會增加計算量和增加分析問題的復雜性,人們希望在進行定量分析的過程中,涉及的變量較少,得到的信息量較多。主成分分析正是適應這一要求產生的,是解決這類題的理想工具。
同樣,在科普效果評估的過程中也存在著這樣的問題。科普效果是很難具體量化的。在實際評估工作中,我們常常會選用幾個有代表性的綜合指標,采用打分的方法來進行評估,故綜合指標的選取是個重點和難點。如上所述,主成分分析法正是解決這一問題的理想工具。因為評估所涉及的眾多變量之間既然有一定的相關性,就必然存在著起支配作用的因素。根據這一點,通過對原始變量相關矩陣內部結構 的關系研究,找出影響科普效果某一要素的幾個綜合指標,使綜合指標為原來變量的線 性擬合。這樣,綜合指標不僅保留了原始變量的主要信息,且彼此間不相關,又比原始 變量具有某些更優越的性質,就使我們在研究復雜的科普效果評估問題時,容易抓住主 要矛盾。
上述想法可進一步概述為:設某科普效果評估要素涉及個指標,這指標構 成的維隨機向量為。對作正交變換,令,其中為正交陣,的各分量是不相關的,使得的各分量在某個評估要素中的作用容易解釋,這就使得我們有可能從主分量中選擇主要成分,削除對這一要素影響微弱的部分,通過 對主分量的重點分析,達到對原始變量進行分析的目的。的各分量是原始變量線性組合,不同的分量表示原始變量之間不同的影響關系。由于這些基本關系很可能與特定的作用過程相聯系,主成分分析使我們能從錯綜復雜的科普評估要素的眾多指標中,找出一些主要成分,以便有效地利用大量統計數據,進行科普效果評估分析,使我們在研究科普效果評估問題中,可能得到深層次的一些啟發,把科普效果評估研究引向深入。
例如,在對科普產品開發和利用這一要素的評估中,涉及科普創作人數百萬人、科 普作品發行量百萬人、科普產業化(科普示范基地數百萬人)等多項指標。經過主成分分析計算,最后確定個或個主成分作為綜合評價科普產品利用和開發的綜合指標,變量數減少,并達到一定的可信度,就容易進行科普效果的評估。
4.1.2主成分分析的主要作用
概括起來說,主成分分析主要由以下幾個方面的作用。
(1)主成分分析能降低所研究的數據空間的維數。即用研究維的空間代替維的空間,而低維的空間代替高維的空間所損失的信息很少。即使只有一個主成分,這個成分仍是使用全部變量(個)得到的。例如要計算的均值也得使用全部的均值。在所選的前個主成分中,如果某個的系數都近似于零,就可以把這個刪除,這也是一種刪除多余變量的方法。 有時可通過因子負荷的結論,弄清變量間的某些關系。
(2)主成分分析法是多維數據的一種圖形表示方法。我們知道,當維數大于時便不能畫出幾何圖形,多元統計研究的問題大都多于個變量。要把研究的問題用圖形表示出來,就要使變量少于個,也就是維數小于。這樣,就要經過主成分分析,選取前兩個主成分或其中某兩個主成分,畫出樣本在二維平面上的分布情況,由圖形可直觀地看出各樣本在主分量中的地位,進而還可以對樣本進行分類處理,可以由圖形發現遠離大多數樣本點的離群點。由主成分分析法構造回歸模型,即把各主成分作為新的自變量代替原來自變量作回歸分析。
(3)用主成分分析篩選回歸變量。回歸變量的選擇有著重大的實際意義,為了使模型本身易于作結構分析、控制和預報,最好從原始變量所構成的子集合中選擇最佳變量,構成最佳變量子集合。用主成分分析篩選變量,可以用較少的計算量來選擇變量,獲得選擇最佳變量子集合的效果。
4.1.2主成分分析法的計算步驟
1、原始指標數據的標準化采集p 維隨機向量x = (x1,X2,…,Xp)T)n 個樣品xi = (xi1,xi2,…,xip)T ,i=1,2,…,n,
n>p,構造樣本陣,對樣本陣元進行如下標準化變換:
其中
得標準化陣Z。
2、對標準化陣Z 求相關系數矩陣
其中,
3、解樣本相關矩陣R 的特征方程得p 個特征根,確定主成分 ,按
確定m 值,使信息的利用率達85%以上,對每個λj, j=1,2,…,m, 解方程組Rb = λjb得單位特征向量 。
4、將標準化后的指標變量轉換為主成分
U1稱為第一主成分,U2 稱為第二主成分,…,Up 稱為第p 主成分。
5 、對m 個主成分進行綜合評價
對m 個主成分進行加權求和,即得最終評價值,權數為每個主成分的方差貢獻率。
4.2 PCA算法的功能實現
4.2.1人臉空間的建立
假設一幅人臉圖像包含N個像素點,它可以用一個N維向量Γ表示。這樣,訓練樣本庫就可以用Γi(i=1,…,M)表示。 協方差矩陣C的正交特征向量就是組成人臉空間的基向量,即特征臉。
將特征值由大到小排列:λ1≥λ2≥…≥λr,其對應的特征向量為μk。這樣每一幅人臉圖像都可以投影到由u1,u2,…,ur張成的子空間中。因此,每一幅人臉圖像對應于子空間中的一點。同樣,子空間的任意一點也對應于一幅圖像。
4.2.2特征向量的選取
雖然協方差矩陣Ω最多有對應于非零特征值的k(k遠小于M)個特征向量,但是通常情況下,k仍然很大,而事實上,根據應用的要求,并非所有的特征向量都有需要保留,而特征空間投影的計算速度是直接與創建子空間所用的特征向量的數目相關,若考慮到計算時間的因素,可以適當的減去一些信息量少的特征向量,而且,去掉這些特征向量之后不一定不利于分類結果,有的情況下反而能夠提高識別性能。
4.2.3人臉識別
有了這樣一個由"特征臉"張成的降維子空間,任何一幅人臉圖像都可以向其投影得到一組坐標系數,這組系數表明了該圖像在子空間中的位置,從而可以作為人臉識別的依據。換句話說,任何一幅人臉圖像都可以表示為這組"特征臉"的線性組合,其加權系數即是K-L變換的展開系數,也可以稱為該圖像的代數特征。因此,在獲得特征臉之后,就可以對每一類別的典型樣本進行投影,由此得到每個人臉的投影特征從而構成人臉特征向量,作為下一步識別匹配的搜索空間。
輸入圖像及其在人臉空間上的投影(重構圖像),人臉圖像在人臉空間中的投影變化不明顯而非人臉圖像的投影變化明顯。因此,檢測一幅圖像中是否存在人臉的基本思想是,計算該圖像中任意位置處的局部圖像與人臉空間之間的距離ε。其中,ε是局部圖像是否為人臉的度量。因此,計算給定圖像任意一點上的ε,就可以得到一映射圖ε(x,y)。
4.3 實驗及結果分析
實驗在兩個圖庫上測試,一個是自建人臉庫,該庫包含10個不同人物,每人有5張不同表情和姿態下的圖片,總共50幅。另一個是ORL人臉庫,該庫包含40個不同人物,每人有10張圖片,共400幅。用訓練樣本進行測試,識別率為100%。而隨著訓練樣本的增加,識別率會有所提升,由于標準人臉庫在采集時考慮了多種因素,人臉圖像比較標準,所以識別率較自建的人臉庫識別率高,另外因為自建人連庫的圖片太少,即訓練樣本太少,也會對結果產生影響,效果不是很好。進行直方圖均衡化比灰度歸一化的識別率高,預處理對識別的效果起著至關重要的作用。而此次實驗的預處理還比較粗糙,PCA也只是起到了簡單的特征臉降維的作用,要有更好的效果,還必須尋找更好的特征表達,使得可以盡量消除光照、表情、遮掩和姿勢的影響。
圖2 訓練樣本在坐標系下的投影矩陣
下圖為測試流程截圖:
圖3 用戶使用界面
圖4 選擇圖片
圖5 圖片選擇后
圖6 查找后
4.4 總結
本項目采用了Matlab中的GUI(圖形用戶界面)為主要表現形式,GUI比單純的M文件會有更強的應用、測試及表現效果,從使用的角度考慮,為庫中的每個人取了一個名字,最終查找到時會在標題處顯示其名字,下方顯示庫中與測試圖片最接近的庫圖片。因為是利用了標準人臉庫,并且識別的人數不是很多,所以最終的結果還是非常不錯的,識別率可達100%。
4.5部分程序源碼
%% PCA人臉識別 global im;%使用全局變量 imgdata=[];%訓練圖像矩陣 for i=1:10for j=1:5a=imread(strcat('C:\Users\dell\Desktop\ORL\s',num2str(i),'\',num2str(j),'.bmp'));b=a(1:112*92); % b是行矢量 1×N,其中N=10304b=double(b);imgdata=[imgdata; b]; % imgdata 是一個M * N 矩陣,imgdata中每一行數據一張圖片,M=50end; end; imgdata=imgdata'; %每一列為一張圖片 imgmean=mean(imgdata,2); % 平均圖片,N維列向量 for i=1:50 minus(:,i) = imgdata(:,i)-imgmean; % minus是一個N*M矩陣,是訓練圖和平均圖之間的差值 end;covx=minus'* minus; % M * M 階協方差矩陣 [COEFF, latent,explained] = pcacov(covx'); %PCA,用協方差矩陣的轉置來計算以減小計算量% 選擇構成95%的能量的特征值 i=1; proportion=0; while(proportion < 95)proportion=proportion+explained(i);i=i+1; end; p=i-1;% 訓練得到特征臉坐標系 i=1; while (i<=p && latent(i)>0)base(:,i) = latent(i)^(-1/2)*minus * COEFF(:,i); % base是N×p階矩陣,用來進行投影,除以latent(i)^(1/2)是對人臉圖像的標準化i = i + 1; end% 將訓練樣本對坐標系上進行投影,得到一個 p*M 階矩陣為參考 reference = base'*minus;%% 測試過程——在測試圖片文件夾中選擇圖片,進行查找測試a=im; b=a(1:10304); b=double(b); b=b';object = base'*(b-imgmean); distance=100000;%最小距離法,尋找和待識別圖片最為接近的訓練圖片 for k=1:50 temp= norm(object - reference(:,k));if (distance > temp)which = k;distance = temp;end; end;%找出距離最近的圖片所在的位置 num1 = ceil(which/5);%第num1個文件夾 num2 = mod(which,5);%第num2個圖片文件 if (num2 == 0)num2 = 5; end; I=imread(strcat('C:\Users\dell\Desktop\Face\s',num2str(num1),'\',num2str(num2),'.bmp'));%讀取該圖片 axes( handles.axes2);%使用第2個axes5、源碼下載:
本項目及一些精選的matlab人臉識別項目源碼如下,有需要的朋友可以點擊進行下載
| 1 (本項目源碼) | 基于Matlab主成分分析(PCA)算法的人臉識別系統源碼+項目設計文檔_人臉識別_主成分分析_PCA_matlab |
| 2 | ORL人臉數據庫_人臉識別_ORL_matlab |
| 2 | Matlab人臉識別_人臉識別_人臉檢測_matlab |
| 2 | LDA線性辨別分析的人臉識別算法_采用KNN分類_LDA_matlab |
| 2 | LBP特征提取用于人臉識別_含訓練樣本和測試樣本_LBP_人臉識別_matlab |
| 2 | LBP算法實現的人臉識別(有圖像窗口文件)(有人臉庫)_人臉識別_OPENCV_C++ |
| 2 | BP神經網絡人臉識別_帶論文_人臉識別_matlab |
| 2 | 人臉識別_pca_svm_matlab |
| 2 | 基于訓練卷積神經網絡的人臉識別設計_matlab |
| 2 | 基于膚色和模板匹配的人臉檢測VC程序_人臉識別_OPENCV_C++ |
| 2 | 光照歸一化算法人臉識別_歸一化算法_人臉識別_matlab |
| 2 | matlab實現從照片中提取人臉的程序源碼 |
| 2 | SVM人臉識別_含SVM工具箱_SVM_matlab |
| 2 | LDA+PCA人臉識別matlab程序_人臉識別_matlab |
| 2 | PCA經典人臉識別和PCA+SVM人臉識別方法_matlab |
| 2 | PCA+BP神經網絡的人臉識別程序_matlab |
| 2 | PCA+BP神經網絡的人臉識別程序_matlab |
| 2 | MATLAB的LVQ創建神經網絡模型人臉朝向識別_LVQ_matlab |
| 2 | LBP特征提取的人臉識別檢測算法_LBP_人臉識別_matlab |
| 2 | LBP算法實現人臉識別_LBP_人臉識別_matlab |
| 2 | LBP_算子特征提取_人臉識別_matlab |
| 2 | Gabor小波+LBP特征提取+PCA+LPP降維_人臉識別_matlab |
| 2 | DLDA算法人臉識別_DLDA_matlab |
| 2 | DBN算法進行人臉識別_DBN_matlab |
| 2 | BP神經網絡人臉朝向識別_BP神經網絡_包含數據集_matlab |
| 2 | BP神經網絡的預測與人臉識別_測試通過_人臉識別_matlab |
| 2 | Adaboost訓練器_人臉識別_matlab |
| 2 | Adaboost人臉識別改進版(有GUI,推薦)_matlab |
| 2 | 性別特征和年齡特征提取_人臉識別_matlab |
| 2 | 性別識別_人臉特征神經網絡判別_人臉識別_包含訓練數據集和測試數據集_matlab |
| 2 | 小波算法人臉識別的實現_小波算法_人臉識別_matlab |
| 2 | 稀疏表示人臉識別核心問題L1范數源代碼_稀疏表示_人臉識別_L1范數_matlab |
| 2 | 稀疏標識人臉實時識別(含英文論文)_稀疏標識_人臉識別_人臉實時識別_matlab |
| 2 | 基于膚色人臉識別代碼_膚色檢測_人臉識別_matlab |
| 2 | 基于膚色模型對一副圖片的多個人臉進行人臉識別_膚色模型_多人臉識別_matlab |
| 2 | 基于膚色檢測再用Adaboost人臉檢測_膚色檢測_Adaboost_人臉檢測_matlab |
| 2 | 費舍爾線性判別人臉識別系統(有GUI,推薦,需要先訓練,執行faceCore.m)_matlab |
| 2 | 虹膜識別程序_matlab_人臉識別 |
| 2 | LVQ神經網絡的預測_人臉識別_LVQ_matlab |
| 2 | 遺傳算法優化支持向量機參數的人臉識別程序_SVM_matlab_人臉識別 |
| 2 | 圖像處理_人臉的視頻幀系列圖像_灰度積分投影技術的眼睛定位方法_perclos計數_計算眨眼率_疲勞檢測_matlab源碼 |
| 2 | 通過MATLAB對一幅多個人物的圖像進行人臉輪廓的提取識別。效果不錯,譬如畢業照這樣的照片能有很好的結果 |
| 2 | 用于人臉識別的NMF分解程序_非負矩陣分解_matlab源碼 |
總結
以上是生活随笔為你收集整理的【老生谈算法】基于主成分分析PCA的matlab人脸识别系统设计与算法原理(论文+程序源码)——人脸识别算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机简谱音乐3-音阶与频率表问题以
- 下一篇: 增加产品