檀 俊劉從軍,2
(1.江蘇科技大學計算機學院 鎮江 212003)(2.江蘇科大匯峰科技有限公司 鎮江 212003)
隨著信息技術的發展,身份識別與認證被廣泛應用于人們的日常生活中,而人臉因為其唯一性和非接觸性得到了更多的關注[1~3]。針對人臉識別,經典的特征提取算法有主成分分析[4~5]、線性判別分析,但在非理想的現實環境中,因為關照變化、拍攝角度、隨機噪聲的影響識別效果不夠理想。為了提高真實環境中人臉識別的正確率,首先對采集到人臉圖像進行充分的圖像預處理,主要是利用改進的Sobel算子增強人臉中的結構和邊緣部分,突出人臉的特征結構、突出人臉邊緣與背景的區別,之后再分塊進行LDP特征提取[6~8],以達到縮短識別時間和提高識別率的效果。
實際生活中許多人臉圖像不是在實驗的理想環境中拍攝的,會受到現實環境的影響,為保證在不同光照、不同環境下同一個人的人臉圖像配置成功,在一開始要先進行人臉圖像的預處理,增強人臉信息。在預處理過程中主要有兩部分工作:第一是圖像灰度化,第二是銳化。
首先是圖像灰度化[9],現實生活中絕大部分采集到的圖像都是彩色,在RGB模型中,顏色是由三原色實現的,每個原色的取值范圍是零到二百五十五。但是在顏色本身,很容受到光照、對比圖的影響,即便是同一個人在不同的光照條件下,采集到的人臉圖像也有很大的區別,不能為人臉識別提供可靠的信息,而且人臉識別過程中的特征提取,其關鍵在于計算梯度值。采用加權平均值算法得到圖像的灰度圖,其公式如下:

其中f(i,j)表示坐標為(i,j)的灰度值,R(i,j)為原圖像中坐標為(i,j)的像素點的紅原色值,G(i,j)為綠原色值,B(i,j)為藍原色值。而且可以由此推論出圖像中的灰度值的取值范圍也是零到二百五十五。
再利用Sobel算子對人臉圖像進行銳化處理[10~12],從而增強人臉邊緣和輪廓跳變部分。銳化公式如下:

其中G表示圖像中任意一個像素點的梯度值,θ為梯度方向,Gx為橫向梯度值,Gy為縱向梯度值。索貝爾算子模板如下式所示。

其實現原理為取圖像中任意一個像素點先與SX做卷積運算得到該像素點的橫向梯度值,再與SY做卷積運算得到該像素點的縱向梯度值,最后由銳化公式計算出該像素點的最終梯度值。
傳統的Sobel算子不論是水平方向上還是豎直方向上都是一個三階的矩陣,因為算子的階數較小,不能參考到更廣范圍內的灰度值變化情況,對人臉邊緣部分不敏感,同時可能有雙邊緣響應問題。以傳統Sobel算子為基礎進行改進得到5×5的Sobel算子如下式所示。

改進后的Sobel算子相比傳統Sobel算子在矩陣的階數上多了兩階,可以提高平滑和差分的范圍,對人臉邊緣部分的變化更加敏感,而且還有抑制噪聲的作用。采集到的人臉圖像在經過灰度化、傳統Sobel算子處理和改進Sobel算子處理后的變化圖如圖1所示。

圖1 效果對比圖
在完成人臉圖像的預處理之后,使用LDP即局部方向模式進行人臉圖像中特征的提取。LDP是Jabid等在LBP(局部二進制模式)的基礎上提出[13~15]。LBP算法的公式如下:

其中,LBP(xc,yc)表示選定像素的特征值,gc為選定像素灰度值,gp為外圍像素點灰度值,除選定的中心像素點外其他像素點為8個。
其原理是選定圖像中任意一個像素為中心定義一個3×3的矩陣,之后除選定像素點外的其他像素點與選定像素點比較灰度值大小,若前者大于、等于后者,則將其標記為1,若前者小于后者,則將其標記為0,最后從任意點開始按照特定方向依次取出標記值,得到一串二進制數,轉成十進制,這個十進制數為該任意像素點的局部二進制模式特征值。提取過程如圖2所示。

圖2 LBP特征值
在圖1中,選定灰度值為96的像素為中心得到一個3×3的矩陣,根據LBP算法進行標記可以一個八位二進制數00111100,轉化為十進制為60,那么灰度為69的像素點的LBP特征值即為60。
從上面的公式可以看出LBP算法的基本思想容易理解、計算過程不復雜,而且對一致性光照的影響處理穩定,但是對于存在隨機噪聲和非一致性光照的人臉圖像非常敏感,處理效果上不是很理想,為此Jabid等才提出了魯棒性更好的LDP算法進行人臉圖像的特征值提取。LDP算法的公式如下:

其中,LDP(k)為中心像素點的LDP特征值,|mk|為|mi|中最大的k個值,s(x)為符號函數。
Kitch算子模板如下式所示。

實現原理如下,因為LDP算法是在LBP算法基礎上進行改進而得到的,所有開始的步驟是相同的,都是選定灰度化后的圖像中任意一個像素為中心定義一個3×3的矩陣,之后八個外圍像素點的灰度值分別與八個Kitch算子進行卷積運算得到八個邊緣梯值。最后每個邊緣梯度值都取絕對值并按照大小排序,取其中k個最大的邊緣梯度值將其標記為1,剩下(8-k)邊緣梯度值標記為0,再按照特定順序依次從矩陣中取出,可以得到一串二進制數,轉為十進制,這個數就是選定像素點的局部方向模式特征值。提取過程如圖3所示。

圖3 LDP特征值
通過實驗發現,當k=3時可以得到相對較好的局部特征值,提取特征值過程如圖4所示。以經過灰度化處理的人臉圖像中任意像素點為中心,得到一個3×3的矩陣,經過LDP算法處理提出特征值后可以得到一串二進制數10011000,轉化為十進制為152,那么選定像素點的特征值為152。

圖4 k=3時LDP特征值
上述提取LDP特征值的過程是針對整張人臉圖像中的每一個像素點的,而在具體的人臉圖像中又存在人臉區域和非人臉區域,即便是在人臉區域,由于人臉中各組織器官的結構特點不同,使得局部特征分布不均勻,所以針對每一個像素點進行相同的特征值提取操作,得到的結果不能充分反映人臉特征,不同的區域應該有不同的權值加以區分。
首先對預處理后的灰度圖進行分塊操作,將其分成3×3共9個子塊。第二步,以每個子塊中的任意一個像素點為中心定義3×3的矩陣,八個外圍像素點的灰度值分別與八個Kitch算子進行卷積運算得到八個邊緣梯值,最后選定像素的局部方向模式特征值即為八個邊緣梯度值的平均值,計算公式如下:

其中mθ為八個邊緣梯度值。
第三步,用在第二步中得到的LDP特征值計算出每個子塊中每個像素點的結構對比信息,從而獲得各個子塊的權值,計算公式如下:

其中xLDP(r,c)表示坐標為(r,c)的像素點的LDP特征值,ωr(x)為每個分塊中每個像素點的結構對比信息,ωi為每個子塊的權值。
最后得到每個子塊的特征直方圖,計算公式如下:

其中xLDP(r,c)表示坐標為(r,c)的像素點的局部方向模式特征值,f(x,y)為符號函數,Hn(τ)為每個子塊中灰度值為τ時在特征直方圖上的柱高。由此可以獲得每個子塊的特征直方圖如圖5所示。
選用耶魯大學的Yale作為實驗的測試數據庫。實驗流程如圖6所示。

圖6 實驗流程圖
首先從人臉數據庫中選定一張人臉圖像作為采集圖像,經過預處理、特征值提取等操作其特征直方圖,之后每次從人臉數據庫中取出一張人臉圖像做同樣的處理,得到特征直方圖,比較兩者之間特征值,若在閾值之內則認為匹配成功,否則繼續從人臉庫中取出圖像進行比較,直到人臉庫中的圖像全部匹配過。
實驗環境為Intel i3 3.10GHz,4GB內存,Windows7的臺式電腦。實驗結果如表1所示。

表1 人臉識別數據表
本文對人臉識別的流程進行了系統的研究,首先是預處理階段,依次利用加權平均值算法、直方圖均衡化、Soble算子進行灰度化和圖像增強。之后是特征提取階段,利用LBP、LDP、分塊LDP進行特征值提取并獲得特征直方圖。全部流程在Yale人臉數據庫進行了實驗驗證。對于今后的研究可以對比更多的處理算法,使用更廣泛的人臉數據庫進行實驗。