首先,只是基於對算法的主要是想的介紹和理解,對於涉及到的PCA以及直方圖比較提到的方法等等可以自己再去深入研究。
其次,只是用作筆記記錄。
參考了CSDN博客:https://blog.csdn.net/smartempire/article/details/23377385
https://blog.csdn.net/wanghz999/article/details/78817265
Eigenfaces的原理:
Eigenfaces就是特征臉的意思,是一種從主成分分析(Principal Component Analysis,PCA)中導出的人臉識別和描述技術。特征臉方法的主要思路就是將輸入的人臉圖像看作一個個矩陣,通過在人臉空間中一組正交向量,並選擇最重要的正交向量,作為“主成分”來描述原來的人臉空間。
PCA:
在很多應用中,需要對大量數據進行分析計算並尋找其內在的規律,但是數據量巨大造成了問題分析的復雜性,因此我們需要一些合理的方法來減少分析的數據和變量同時盡量不破壞數據之間的關聯性。於是這就有了主成分分析方法,
PCA作用:
數據降維。減少變量個數;
確保變量獨立;提供一個合理的框架解釋。
去除噪聲,發現數據背后的固有模式。
PCA的主要過程:
特征中心化:將每一維的數據(矩陣A)都減去該維的均值,使得變換后(矩陣B)每一維均值為0;
計算變換后矩陣B的協方差矩陣C;
計算協方差矩陣C的特征值和特征向量;
選取大的特征值對應的特征向量作為”主成分”,並構成新的數據集;
特征臉方法
特征臉方法就是將PCA方法應用到人臉識別中,將人臉圖像看成是原始數據集,使用PCA方法對其進行處理和降維,得到“主成分”——即特征臉,然后每個人臉都可以用特征臉的組合進行表示。這種方法的核心思路是認為同一類事物必然存在相同特性(主成分),通過將同一目標(人臉圖像)的特性尋在出來,就可以用來區分不同的事物了。
特征臉方法的過程(先計算特征臉,然后識別人臉):
將訓練集中的N個人臉拉成一列(reshape(1,1)),然后組合在一起形成一個大矩陣A。若人臉圖像大小為m * m,則矩陣A的維度是m * m * N;
將N個人臉在對應的維度求平均,得到一個“平均臉”;
將矩陣A中N個圖像都減去“平均臉”,得到新矩陣B;
計算B的協方差矩陣;
計算協方差矩陣的特征值和特征向量(特征臉);
將訓練集圖像和測試集圖像都投影到特征向量空間中,再使用聚類方法(最近鄰或k近鄰等)得到里測試集中的每個圖像最近的圖像,進行分類即可。或者通過計算測試圖片和已知圖片的歐氏距離與自己設定的閾值進行比較,如果均大於閾值則不符合,否則符合某一張圖片。
特征臉識別的局限性
要讓系統准確識別需要保證人臉圖像滿足:
待識別圖像中人臉尺寸接近特征臉中人臉的尺寸;
待識別人臉圖像必須為正面人臉圖像。
若不滿足此條件,識別錯誤率很高。從PCA方法的過程可以看出,特征臉識別的方法是以每張人臉的一個維度(可以看出是矩陣的一列)為單位進行處理的,求得的特征向量(特征臉)中包含訓練集每個緯度的絕大部分信息。但是若測試集中人臉尺寸不同,那么與特征臉中維度的也就沒法對應起來。
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
FisherFace算法:
Fisher線性判別分析(linear discriminant analysis,LDA):
兩類的線性判別問題可以看做所有的樣本投影到一個方向(或者說是一個維度空間中),然后再這個空間中確定一個分類的閾值。過這個閾值點且與投影方向垂直的超平面就是分類面。判別思路是選擇投影方向,使得投影后兩類相隔盡可能遠,類內又盡可能聚集(類間方差最大,類內方差最小)。

它的過程分為:
確定最優的投影方向:
在這個方向上確定分類閾值;
Fisherfaces方法結合了PCA和LDA的優點,其具體過程如下:
PCA降維:對原始樣本進行PCA處理,獲取PCA處理之后的新樣本;
LDA特征提取:對降維后的樣本使用Fisher線性判別方法,確定一個最優的投影方向,構造一個一維的特征空間(這就被稱為Fisherfaces),將多維的人臉圖像投影到Fisherfaces特征空間,利用類內樣本數據形成一組特征向量,這組特征向量就代表了人臉的特征。
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
LBP算法:
最初的LBP是定義在像素3x3鄰域內的,以鄰域中心像素為閾值,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大於中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3x3鄰域內的8個點經比較可產生8位二進制數(通常轉換為十進制數即LBP碼,共256種),即得到該鄰域中心像素點的LBP值,並用這個值來反映該區域的紋理信息

改進的LBP:
圓形LBP算子:

Xp=Xc+Rcos(2πp/p)
Yp=Yc-Rsin(2πp/p)
Xc,Yc為領域中心點,Xp,Yp為某個采樣點,通過上式可以計算出任意個采樣點的坐標,計算得到的坐標未必是整數值,可以通過雙線性插值來得到該采樣點的像素值
LBP等價模式:
一個LBP算子可以產生不同的二進制模式,對於半徑為R的圓形區域內含有P個采樣點的LBP算子將會產生2^P種模式。很顯然,隨着鄰域集內采樣點數的增加,二進制模式的種類是急劇增加的。例如:5×5鄰域內20個采樣點,有220=1,048,576種二進制模式。如此多的二值模式無論對於紋理的提取還是對於紋理的識別、分類及信息的存取都是不利的。同時,過多的模式種類對於紋理的表達是不利的。例如,將LBP算子用於紋理分類或人臉識別時,常采用LBP模式的統計直方圖來表達圖像的信息,而較多的模式種類將使得數據量過大,且直方圖過於稀疏。因此,需要對原始的LBP模式進行降維,使得數據量減少的情況下能最好的代表圖像的信息。
為了解決二進制模式過多的問題,提高統計性,Ojala提出了采用一種“等價模式”(Uniform Pattern)來對LBP算子的模式種類進行降維。Ojala等認為,在實際圖像中,絕大多數LBP模式最多只包含兩次從1到0或從0到1的跳變。因此,Ojala將“等價模式”定義為:當某個LBP所對應的循環二進制數從0到1或從1到0最多有兩次跳變時,該LBP所對應的二進制就稱為一個等價模式類。如00000000(0次跳變),00000111(只含一次從0到1的跳變),10001111(先由1跳到0,再由0跳到1,共兩次跳變)都是等價模式類。除等價模式類以外的模式都歸為另一類,稱為混合模式類,例如10010111(共四次跳變)。將許多類減少成為P(P-1)+2種
LBP對光照有明顯的魯棒性
不是直接用計算得到的LBP值之后進行人臉識別,而是將一張人臉照片分為若干子區域,並在子區域內根據LBP值統計其直方圖,以直方圖作為其判別特征,可以避免一定范圍內圖像沒有完全對准的情況,同時也對LBP做了降維處理
對於得到的直方圖特征,有多種方法可以判別其相似性,假設已知人臉的直方圖為Mi,待匹配人臉的直方圖為Si,那么通過:
(1)直方圖交叉核方法
(2)卡方統計方法
