MATLAB人脸识别系统[GUI界面,完美运行,详细解析]
MATLAB 人臉識別
算法流程
本系統(tǒng)運用PCA算法來實現(xiàn)人臉特征提取,然后通過計算歐式距離來判別待識別測試人臉,本個系統(tǒng)框架圖如下:
整個系統(tǒng)的流程是這樣的,首先通過圖像采集建立人臉庫,這個人臉庫里的人臉圖像必須是格式及像素統(tǒng)一的,然后針對庫里的人臉進行人臉訓練,利用PCA進行人臉特征提取,獲取特征矩陣向量組,將測試人臉投緣到特征子空間中,運用歐氏距離,在人臉庫里查找相應的人臉圖像,并輸出。
GUI框架源碼下載:https://download.csdn.net/download/Matlab97513/39510442
二、算法介紹
基于PCA算法的人臉特征提取
2.1PCA的基本原理
PCA中文全稱主成分分析 法(Principal Component Analysis)[6]。掌握事物間主要區(qū)別的,運用統(tǒng)計學的分析方法,它可以是復雜的問題得到簡化,找到物質之間的本質區(qū)別,用事物的主要影響因素來解決問題。計算主成分的主要目的是用來降維,也就把將高維空間數(shù)據(jù)降到低維空間中去。這種線性變化經常被用到數(shù)據(jù)的壓縮和分析中。它就是以K-L變換為基礎,運用它的正交變換可以降低數(shù)據(jù)的運算量。
在這個系統(tǒng)中,庫內人臉讀入后被變成為灰度數(shù)值圖像,把這些數(shù)值矩陣按行或者按列排練構成一個原始圖像空間,運用K-L變換有效的提取人臉圖像的特征,這是為下面的小空間模式匹配奠定基礎,這個原始圖像空間是維數(shù)較高的矩陣,通過K-L變換后獲得一組新的正交基。分析比較人臉訓練樣本中的一些統(tǒng)計特征,保留主要的特征向量,減少向量矩陣的維數(shù),獲得了維數(shù)較小的人臉空間。在參與訓練的人臉樣本中,一種是不一樣人臉組成的總體散分布矩陣,另一種是同個人臉的不同表情的平均圖片或者說是類間散布矩陣。第一種的運用對人臉圖像的背景光線的要求很高,后者可以很好的避免光線帶來的的干擾,且有減少計算量的作用。選擇的正交基的原則是取大去小,所謂的大、小就是特征值的的大小,特征值的數(shù)值反應一個人臉的基本特征輪廓,在主要成分分析中就是以它主要能量特征值對應的向量來做基底,用這個方法可以很好的進行人臉重構,重構的人臉必須是參與算法的人臉圖像,否則實現(xiàn)重建的效果較差。
通過降維后,就可以獲得特征空間,將待識別人臉圖像進行旋轉變換,可以有效的降低維數(shù)[9]。也就是用特征空間的向量的線性代數(shù)運算來表示。這樣就可以把人臉識別這個過程轉換成m維空間坐標系數(shù)分類問題,至于如何分類可以采用簡單的距離進行判斷。
2.2 基于PCA的特征提取
PCA人臉識別特征提取有幾個過程:人臉圖像獲取和處理;構造人臉庫并且訓練形成特征子空間;提取特征值和特征向量。下面對整個PCA提取特征過程中的步驟做一個詳細的描述。
通過拍照的方式,在背景設定的環(huán)境下,拍取人臉圖像,然后對人臉樣本采取前期的處理,其中包括人臉圖像格式的變換,是否需要灰度處理等等。這些都要根據(jù)算法需求來對圖像進行前期的預處理。PCA算法運用的統(tǒng)計學原理中的K-L變換的原理,對圖像背景要求一致,而對光線的要求也一般,前期只要保證圖像像素和格式一致就可以。最后保存圖像,建立人臉庫。
2.訓練人臉庫
人臉圖像獲取后,要放進人臉庫,把人臉庫統(tǒng)一配置后,選取每個人若干圖片參與訓練,變成訓練矩陣。假定格式統(tǒng)一的人臉圖像的像素為nm,采取變換轉化為一維矩陣,然后按行相連構成N=mn維數(shù)的的矢量,每個人臉圖像都可以視為N維空間中的一點,運用K-L變換可以將這個圖像轉換到底維的空間當中去,這樣描述更加具體。
3.計算人臉圖像的生成矩陣
采用訓練后的人臉圖像構成樣本集,產生協(xié)方差矩陣可以用以下幾種方法求出來(三種等價):
協(xié)方差矩陣 是一個大小為NN的合成矩陣(其中N表示 的維數(shù)),A 表示每個人臉灰度圖像減去平均人臉圖像后按列構成的的矩陣, 是平均人臉圖像,M表示人臉庫內參與訓練的人臉數(shù)。
鑒于公式的復雜性,一般選擇第二個公式來計算人臉特征值和特征向量。
4.提取特征值和特征向量
在我們獲得協(xié)方差矩陣后,需要求出其特征值和特征向量,由于PCA的理論基礎是K-L變換,而我們所求的K-L變換的新坐標系是由NN維的矩陣 的特征值和特征量組成,直接求 的這兩個參數(shù)難度高計算量非常大,下面介紹兩種方法:
(1)奇異值分解原理
(2)小矩陣計算大矩陣特征向量原理
在求高維矩陣特征向量時,可以用統(tǒng)計學的方法,將它變換為求轉化為求低維矩陣的特征向量:
設:A是一個秩為r的mn(m>>n)維矩陣, ,是一個矩陣,現(xiàn)在要求 的特征值以及特征向量,可通過先求小矩陣 的特征向量 和特征值 ,兩者之間有以下關系:
注意:以上兩種求解協(xié)方差矩陣的特征值和特征向量的方法,結果是一致的[12]。2.3 相似性測度
人臉樣本在用PCA算法獲取人臉特征后,轉換為特征空間內的一點。所以樣本之間的區(qū)分性可以運用角度或者距離的計算來比較實現(xiàn)。常見的匹配的算法有夾角余弦、街區(qū)距離、和歐式距離等等,下面具體的描述下歐式距離這個測度。
歐式距離的定義:歐式距離(Eudidean distance)是一個普遍使用的距離定義,它說明某種物質在多維空間的真實距離。歐式距離看作是衡量物質的相似程度的依據(jù),兩個點的距離差越小就越一樣。
假如x,y是兩幅維數(shù)一樣的圖像,它們的維數(shù)都是是MN,則它在一個設定空間的表示如下:
三、 程序仿真及調試結果
3.1人臉庫的生成
人臉庫的建立可以運用目前現(xiàn)有的ORL人臉數(shù)據(jù)庫、JAZZ人臉數(shù)據(jù)庫等,這些人臉庫內的人臉都是按某個標準建立,所以在設計人臉之前,必須針對需要,來選擇。或者你也可以自己構造人臉數(shù)據(jù)庫,庫內人臉可以采用拍照等方式來獲取。不過要進行一些前期處理,以滿足系統(tǒng)要求。本系統(tǒng)是收集互聯(lián)網上的圖像獲取圖像,然后實現(xiàn)格式以及大小一致。
圖: 部分人臉圖像截圖
上圖就是部分人臉庫內人臉圖像截圖。這個人臉庫分為測試人臉庫和訓練人類庫,在訓練人臉庫內的所有人臉數(shù)目有二十張,十個人的,一個人有兩張圖像,不同的表情。在測試人臉庫內有10張人臉,這10張人臉是在訓練庫內挑選的10個人臉表情。每張人臉圖像的大小為180*200,格式為JPG。因為本系統(tǒng)針對的圖像格式要求必須為JPG格式的圖像。我把這20張圖片的命名,用數(shù)字1-20來代替,以便后面在識別階段,可以讀出對應的數(shù)字,類似人的名字
3.2特征提取和人臉重建的仿真分析
(1) 根據(jù)PCA算法的獲取人臉庫特征值分布圖
特征提取首先把庫內待訓練的人臉圖像,讀入matlab轉換成灰度圖像,進而將人臉圖像按行排列,構成協(xié)方差矩陣,這個協(xié)方差矩陣里面,每一行都代表一個人臉,所以求這個協(xié)方差矩陣的特征值和特征向量,也就是求每個人臉的特征,每個特征值對應的特征向量,構成了特征向量子空間,下圖中曲線的就是庫內所有人臉圖像進行特征提取獲得特征值后,按特征值大小排列,由圖可以看出,每張人臉圖像對應特征值大小的區(qū)別性很大,只要提取數(shù)值較高的特征值對應的特征向量來組成特征子空間即可,大大的減少了特征矩陣的向量的數(shù)量,這樣可以降低計算量,提高特征提取的運算速率。也為后面的人臉識別系統(tǒng)運行提高速度。
圖: 特征值分布圖
3.3 模板匹配及識別的仿真分析
對比圖4-6和圖4-7這兩幅圖像,可以看出本系統(tǒng)可以很好的匹配庫內人臉,這匹配過程是先測試人臉投影到特征子空間中,這 樣便可以 讓這張圖像成為多維空間中的一點,通過計算其與每個人臉圖像的歐式距離,然后對比找出最小歐式距離的人臉,這樣就可以匹配到相應的人臉圖像。
4、GUI界面仿真
庫外人臉判別
總結
以上是生活随笔為你收集整理的MATLAB人脸识别系统[GUI界面,完美运行,详细解析]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么提高Origin烂橘子的下载速度
- 下一篇: 药房管理系统 药店管理系统 GITHUB