關鍵詞: LDP , 局部鄰域 , 人臉識別 , Kirsch算子 , 魯棒性
LDP 算法是將與Kirsch 算子運算后得到的一些負值的鄰域灰度值作為中心灰度值的編碼因子,這將會導致中心灰度值不能很好的反映鄰域局部特征信息,從而降低識別率。針對于此,本文提出了一種改進的局部定向模式(CLDP)算法。該算法在LDP 的基礎上,去掉鄰域灰度值為負值的因子,對中心灰度值進行重新編碼,由于該編碼值是將與Kirsch 算子運算后的正值最大值作為圖像邊緣輸出,使中心灰度值能很好反映鄰域的局部特征信息,從而提高人臉的識別率。本文還將提出的CLDP 算法用在YALE,ORL,JAFFE 等人臉數據庫中進行人臉識別。從實驗的結果表明,該方法識別性能較LDP算法,LDN 算法以及ELDP 算法等更好的。
人臉識別系統主要包括四個模塊:圖像預處理模塊,圖像特征提取模塊,圖像訓練模塊和人臉圖像的識別模塊,其中最主要的核心部分就是圖像特征的提取。好的特征提取算法應該滿足不同類別的圖像具有很大差異,同一類別的圖像具有很小差別。到目前為止,特征提取主要包括兩類方法:基于全局特征的提取方法和基于局部特征的提取方法。全局特征是指其特征向量的每一維都包含了人臉圖像上所有部分(甚至所有像素)的信息,它反映的是人臉的整體屬性。基于全局的特征方法主要包括:PCA,LDA,2DPCA,LPP 等 。與全局特征不同的是,局部特征信息的每一維都只對應人臉圖像上的一個局部區域,它側重于提取人臉的細節特征,基于局部特征的提取方法主要包括:LBP,LGBP,LDP 等 。局部特征對人臉的光照、表情和遮擋等變化不敏感,因此基于局部特征的提取方法相對于基于全局特征的提取方法具有更好的魯棒性,在近些年來得到了更多的研究 。
近年來,LBP 算法因為其在紋理分析方面的簡單性和優越性而得到了越來越多的重視。基本的LBP算子是一種有效的紋理描述符,其通過對中心像素的3×3 鄰域進行編碼操作。每個像素點以其鄰域的中心像素灰度值作為判斷的閾值,將中心像素灰度值與周圍8 鄰域的像素灰度值進行比較,如果鄰域像素灰度值大于中心像素灰度值,則將其標記為1,否則標記為0(對于圖像邊緣的部分,存在一些鄰域點不存在的,編碼時設定該鄰域點為0),從而每個像素點都可以得到一個8 位的二進制數,然后將該8 位二進制數轉化為十進制數,該十進制數即為該中心像素點的LBP 值。因為LBP 編碼的靈活性,LBP 算法可以很容易修改以適應其他不同類型問題的需要。為此,文獻[9]提出了幾種改進的LBP 算法。LBP 算法對單調線性的光照有很好的魯棒性,但是其對于隨機的噪聲和非單調線性的光照變化非常的敏感。針對此因素,Jabid 等人 提出了魯棒性更好的特征提取方法-LDP。LDP 算法和LBP 算法很相似,但它是通過與Kirsch 算子卷積求和后得到了中心像素點的鄰域灰度值 。由于邊緣梯度值比像素灰度值更穩定,所以LDP 算法對噪聲的魯棒性更好。基本的LDP 編碼是將最主要的k 個鄰域灰度值設為1(即和Kirsch 算子 卷積求和后絕對值的k 個最大數),然后將8 個方向的鄰域值進行編碼。這種方法會將最大的負數對應的鄰域灰度值設為1,由于這些負數會干擾局部特征信息的提取,使得編碼后的中心灰度值不能很好反應出該位置的局部特征信息,從而會降低人臉識別率。
針對與LDP 的這個缺點,Zhong Fujin 等人提出一種基于LDP 算法的ELDP(Enhanced Local DirectionalPatterns)算法 ,Adin Ramirez Rivera 等人提出了一種LDN(Local Directional Number Pattern)算法 。ELDP算法是在LDP 算法的基礎之上得到的,首先它將與Kirsch 算子計算后的八個方向值進行排序,將最大的兩個正值對應的位置設為1,其他位置設為0,然后將得到的兩個位置為1 的序號作為八進制的兩位數,再將其轉化為十進制數作為該中心點的像素灰度值,即ELDP 值。LDN 算法首先同樣是將與Kirsch 算子運算后的8 個方向值進行排序,選取最大的正值和最小的負值,然后將最大正值對應的序號作為八進制數的第1 位,將最小值的序號作為八進制數的第0 位,再將這個兩位的八進制數轉化為十進制數作為該中心點的像素灰度值,即LDN 值。
以上對LDP 進行改進的算法是對8 個鄰域灰度值的序號進行編碼,會丟失一些特征信息,針對這個問題,本文提出了一種基于LDP 算法改進后的局部定向模式(CLDP)。該算法通過與Kirsch 算子計算后得到的八個鄰域灰度值重新進行編碼,不對其求絕對值,考慮負數的存在,然后將8 個計算后的鄰域值進行大小判別,將最大的k 個正值設為1,其他8-k 個鄰域值設為0,再將這8 位二進制數轉換為十進制數,用該十進制數值作為中心像素點的灰度值,即CLDP 值。CLDP 算法的編碼避免了LDP 算法將運算后的鄰域為負值作為編碼因子,同時也避免了LDN 算法和ELDP 算法將運算后的最大鄰域值所對應的序號作為編碼因子,這樣CLDP 值能更好的反應出該位置的局部特征信息。
本文提出的CLDP 算法用在三個人臉數據庫中分別進行識別實驗,并和LDP 算法,LDN算法以及ELDP算法進行比較。實驗的結果表明,本文提出的方法具有較其他方法有著更好的識別性能。
1 CLDP 算法
1.1 LDP 算法
基于LBP 算法提出的局部定向模式(LDP),是將一個3×3 矩陣塊(如下)分別與8 個Kirsch 算子M0~M7進行運算后得到的絕對值作為矩形塊周圍的像素灰度值,記為|mi|(i=0,1,…,7),然后選取k 個最大絕對值數作為主要特征,并且將這k 位賦值為1,其余(8-k)位賦值為0,如圖1 所示。最后將這8 個數按照一定的順序編碼組成一個八位的二進制數,再將其轉換為十進制數,用這十進制數作為該3×3 矩形塊的中心點的LDP特征值。
中最大的k 個值。圖2 給出中心點鄰域灰度值具體數值,用Kirsch 算子對其進行LDP 編碼運算,當k=3 時,如圖所示該中心點x 的LDP 特征值xLDP(k)=(10001001)2=137。
圖2 k=3 時的LDP 算法編碼
1.2 CLDP 算法
CLDP 算法是基于LDP 算法的一種改進,其處理的開始部分與LDP 算法相同,也是將3×3 的矩陣塊與Kirsch 算子進行運算后,將得到的8 個值作為周圍鄰域的灰度值,然后將這8 個值中最大k 個值賦值為1,其余(8-k)個值賦值為0,從而也可以得到一個八位的二進制數,再將其轉換為十進制數用來表示中心像素點的灰度值,即為CLDP 特征值。
,其中mk為mi中最大的k個值。圖3給出中心點的鄰域灰度值,并對它進行CLDP 編碼,則中心點x 的CLDP 值CLDP=(10010001)2=145。
圖3 當k=3 時的CLDP 算法編碼
圖4 的原圖像是來自于YALE 人臉庫中的一幅圖片,我們對它分別進行LDP 算法和CLDP 算法特征提取,從圖中可以看出CLDP 算法提取特征后的圖像較LDP 算法特征提取后的圖像能更清晰真實的反映出原圖像的特征信息。
圖4 YALE 人臉庫中的圖像進行LDP 和CLDP 算法特征提取后的圖像
2 基于CLDP 的人臉識別描述
不同的人臉庫對應的圖片大小規格和顏色都不一樣,在進行人臉識別時,首先需將人臉庫中的圖片轉換成相同大小規格的灰度圖像。然后再將每一幅灰度圖像轉換為一維數列,這樣一個人臉庫就可以用一個二維矩陣數列來表示,其中每一列代表著一幅圖片。其中CLDP 算法的人臉識別過程如下圖5 所示。
圖5 CLDP 算法的人臉識別流程圖
對于同一個人,我們隨機選取幾張圖片作為訓練圖片,其他的作為測試圖片,這樣可以將原來的人臉數據庫的二維矩陣分為一個訓練的二維數據庫和測試的二維數據庫,然后將這兩個數據庫分別進行CLDP算法處理。最后將CLDP 算法處理后訓練圖片進行PCA 降維處理,將訓練圖像和測試圖像的CLDP 特征圖像投影到低維空間中,采用最近鄰方法進行分類識別。
3 實驗結果與分析
3.1 k 值的選取
為了測試不同k 值對識別性能的影響,我們分別在YALE,JAFFE,ORL 人臉數據庫中分別進行識別實驗。YALE 人臉數據庫包含15 個人,每個人有11 幅人臉圖像,具有豐富的表情變化。實驗時我們隨機選取每個人的5 幅圖像進行訓練,另外6 幅進行測試;JAFFE 人臉數據庫包含有10 個人,每個人有7 種表情,每種表情3~4 張圖片,在測試時我們隨機選取每個人20 張圖片進行試驗,試驗時選取每個人的15張圖片作為測試圖片,另外5 張作為訓練圖片;ORL 人臉數據庫包含40 個人,每個人有10 張不同光照和姿態下的圖片,在試驗時我們選取每個人的任意5 張圖像進行訓練,其余5 張進行測試,降維的維數均選擇為30。由于C81=C87,所以當k=1時和k=7時識別率是一樣的 ,因此只需要比較k={1,2,3,4}時分別對應的識別率。每一組實驗都是進行10 次測試后,選取平均值作為最終的測試數據。實驗結果如表1 所示。由表1 中可以得出三種人臉庫下,當k=3 時,CLDP 算法對應的人臉識別率最高。
3.2 CLDP 算法和其他算法識別率比較
我們將本文提出的CLDP 算法以及PCA,LDP,LDN,ELDP 算法分別在YALE,JAFFE,ORL 人臉數據庫中分別進行測試。同實驗3.1 一樣,在YALE 人臉庫中選取測試人數為6,在JAFFE 中選取測試人數為15,在ORL 人臉庫中選取測試人數為5。實驗過程中,設k 值為3,降維的維數為30,每一組實驗進行10 次,選取平均值作為最終識別結果。表2 列舉了各種算法在不同的人臉庫下的識別率。
由表2 可以看出不同的人臉庫下,CLDP 算法對人臉的識別率高于其他算法的識別率。
3.3 CLDP 算法魯棒性測試
為了驗證CLDP 算法的魯棒性,本文還進行了以下兩個測試,這兩組試驗分別都是在YALE,JAFFE和ORL 三個人臉庫中進行的,其k 值都選取為3。第一組測試實驗是在固定降維的維數為30 的情況下,改變實驗的測試人數來觀察LDP,ELDP,LDN 和CLDP 四種算法對人臉識別率的影響。在YALE 數據庫中將每個人的測試圖片數分別選取為5,6,7,8,9;在JAFFE 數據庫選擇測試圖片數為12,13,14,15,16;在ORL 數據庫中選取測試圖片數為4,5,6,7,8。另一組測試實驗是在測試人數固定的情況下,改變降維的維數來觀察LDP,ELDP,LDN 和CLDP 算法對人臉識別率的影響。在YALE 人臉庫中,固定測試人數為7,JAFFE 數據庫中固定測試人數為15,ORL 數據庫中測試人數為5。實驗結果如圖6,7 所示。
圖6 降維維數為30 時不同測試圖像數對應的識別率
圖7 測試圖像數固定時不同特征維數對應的識別率
從圖6 中可以看出在降維維數固定在30 情況下,四種算法的人臉識別率隨著測試人數的增加而減小,但CLDP 算法的人臉識別雖然在減小,但依然保持著較高的識別率,且減小的幅度也較小。
從圖7 中可以看出在測試人數固定的情況下,四種算法的人臉識別率隨著維數的增加而增加,而CLDP算法始終保持著較高的識別率。
由上面的兩圖可以發現,在相同的降維維數前提下,基于CLDP 算法的人臉識別魯棒性要好于其他算法,同樣,在測試圖像數相同的前提下,基于CLDP 算法的人臉識別魯棒性也要高于其他算法。
通過以上實驗表明,CLDP 算法對人臉的識別在不同的人臉數據庫中都有著很高的識別率,且CLDP算法對人臉的識別率較LDP 算法和改進后的LDN 與ELDP 算法都要高,同樣CLDP 算法在測試圖像相同的情況下和在提取特征維數相同的情況下,魯棒性都高于其他幾種算法。
4 結論
本文提出了一種基于局部定向模式的CLDP 算法,該算法將與Kirsch 算子運算后的正值作為編碼對象,從而提高識別率。實驗表明,該算法在YALE,ORL,JAFFE 等人臉數據中都有著很好的識別性能,并且較LDP,LDN 和ELDP 算法有著更高的識別率,同樣CLDP 算法也有著較其他幾種算法更好的魯棒性。
評論
查看更多