1. 程式人生 > >人臉識別經典演算法二 LBP方法

人臉識別經典演算法二 LBP方法

第一篇博文特徵臉方法不同,LBP(Local Binary Patterns,區域性二值模式)是提取區域性特徵作為判別依據的。LBP方法顯著的優點是對光照不敏感,但是依然沒有解決姿態和表情的問題。不過相比於特徵臉方法,LBP的識別率已經有了很大的提升。在[1]的文章裡,有些人臉庫的識別率已經達到了98%+。

1、LBP特徵提取

最初的LBP是定義在畫素3x3鄰域內的,以鄰域中心畫素為閾值,將相鄰的8個畫素的灰度值與其進行比較,若周圍畫素值大於中心畫素值,則該畫素點的位置被標記為1,否則為0。這樣,3x3鄰域內的8個點經比較可產生8位二進位制數(通常轉換為十進位制數即LBP碼,共256種),即得到該鄰域中心畫素點的

LBP值,並用這個值來反映該區域的紋理資訊。如下圖所示:

用比較正式的公式來定義的話:

其中代表3x3鄰域的中心元素,它的畫素值為ic,ip代表鄰域內其他畫素的值。s(x)是符號函式,定義如下:

LBP的改進版本

(1)圓形LBP運算元

基本的 LBP運算元的最大缺陷在於它只覆蓋了一個固定半徑範圍內的小區域,這顯然不能滿足不同尺寸和頻率紋理的需要。為了適應不同尺度的紋理特徵,並達到灰度和旋轉不變性的要求,Ojala等對 LBP 運算元進行了改進,將 3×3鄰域擴充套件到任意鄰域,並用圓形鄰域代替了正方形鄰域,改進後的 LBP 運算元允許在半徑為 R 的圓形鄰域內有任意多個畫素點。從而得到了諸如半徑為R的圓形區域內含有

P個取樣點的LBP運算元。比如下圖定了一個5x5的鄰域:

上圖內有八個黑色的取樣點,每個取樣點的值可以通過下式計算:

其中為鄰域中心點,為某個取樣點。通過上式可以計算任意個取樣點的座標,但是計算得到的座標未必完全是整數,所以可以通過雙線性插值來得到該取樣點的畫素值:

(2)LBP等價模式

一個LBP運算元可以產生不同的二進位制模式,對於半徑為R的圓形區域內含有P個取樣點的LBP運算元將會產生2^P種模式。很顯然,隨著鄰域集內取樣點數的增加,二進位制模式的種類是急劇增加的。例如:5×5鄰域內20個取樣點,有220=1,048,576種二進位制模式。如此多的二值模式無論對於紋理的提取還是對於紋理的識別、分類及資訊的存取都是不利的。同時,過多的模式種類對於紋理的表達是不利的。例如,將LBP運算元用於紋理分類或人臉識別時,常採用LBP模式的統計直方圖來表達影象的資訊,而較多的模式種類將使得資料量過大,且直方圖過於稀疏。因此,需要對原始的LBP模式進行降維,使得資料量減少的情況下能最好的代表影象的資訊。

        為了解決二進位制模式過多的問題,提高統計性,Ojala提出了採用一種“等價模式”(Uniform Pattern)來對LBP運算元的模式種類進行降維。Ojala等認為,在實際影象中,絕大多數LBP模式最多隻包含兩次從10或從01的跳變。因此,Ojala將“等價模式”定義為:當某個LBP所對應的迴圈二進位制數從01或從10最多有兩次跳變時,該LBP所對應的二進位制就稱為一個等價模式類。如00000000(0次跳變),00000111(只含一次從0到1的跳變),10001111(先由1跳到0,再由0跳到1,共兩次跳變)都是等價模式類。除等價模式類以外的模式都歸為另一類,稱為混合模式類,例如10010111(共四次跳變)。比如下圖給出了幾種等價模式的示意圖。

       通過這樣的改進,二進位制模式的種類大大減少,而不會丟失任何資訊。模式數量由原來的2P種減少為 P ( P-1)+2種,其中P表示鄰域集內的取樣點數。對於3×3鄰域內8個取樣點來說,二進位制模式由原始的256種減少為58種,這使得特徵向量的維數更少,並且可以減少高頻噪聲帶來的影響。這幾段摘自[2]。

通過上述方法,每個畫素都會根據鄰域資訊得到一個LBP值,如果以影象的形式顯示出來可以得到下圖,明顯LBP對光照有較強的魯棒性。

2、LBP特徵匹配

如果將以上得到的LBP值直接用於人臉識別,其實和不提取LBP特徵沒什麼區別,會造成計算量準確率等一系列問題。文獻[1]中,將一副人臉影象分為7x7的子區域(如下圖),並在子區域內根據LBP值統計其直方圖,以直方圖作為其判別特徵。這樣做的好處是在一定範圍內避免影象沒完全對準的情況,同時也對LBP特徵做了降維處理。

對於得到的直方圖特徵,有多種方法可以判別其相似性,假設已知人臉直方圖為Mi,待匹配人臉直方圖為Si,那麼可以通過:

(1)直方圖交叉核方法

(2)卡方統計方法

參考文獻:

[1]Timo Ahonen, Abdenour Hadid:Face Recognition with Local Binary Patterns

[2]目標檢測的影象特徵提取之(二)LBP特徵

 542人閱讀 評論(0) 收藏 舉報LBP

LBP(Local Binary Patterns),即區域性二值模式,是一種描述影象區域性空間結構的非引數運算元。芬蘭Oulu大學的T.Ojala等人於1996年提出這個運算元用來分析影象紋理特徵,並且描述了它在紋理分類中的強區分能力。LBP運算元定義為一種灰度尺度不變的紋理運算元,是從區域性鄰域紋理的普通定義得來的。

基本思想是:用中心畫素的灰度值作為閾值,與它的鄰域相比較得到的二進位制碼來表述區域性紋理特徵。

在紋理分析方面,LBP運算元是最好的紋理描述符之一,它的主要優點有以下幾點:

Ø 通過它的定義可知,LBP運算元的灰度尺度不隨任何單一變換而變化,因此灰度尺度的魯棒性好,也就是光照條件下的魯棒性好;

Ø 計算速度快。由於它可以通過在小鄰域內進行比較操作得到,使得在複雜的實時條件下分析影象成為可能;

Ø 由於LBP運算元是一種無引數(Non-Parametric)的方法,在應用過程中不需要對它的分佈進行預先假設。

_____________________________________________________________________________________

  1. %LBP returns the local binary pattern image or LBP histogram of an image.  
  2. %  J = LBP(I,R,N,MAPPING,MODE) returns either a local binary pattern  
  3. %  coded image or the local binary pattern histogram of an intensity  
  4. %  image I. The LBP codes are computed using N sampling points on a   
  5. %  circle of radius R and using mapping table defined by MAPPING.   
  6. %  See the getmapping function for different mappings and use 0 for  
  7. %  no mapping. Possible values for MODE are  
  8. %       'h' or 'hist'  to get a histogram of LBP codes  
  9. %       'nh'           to get a normalized histogram  
  10. %  Otherwise an LBP code image is returned.  
  11. %  
  12. %  J = LBP(I) returns the original (basic) LBP histogram of image I  
  13. %  
  14. %  J = LBP(I,SP,MAPPING,MODE) computes the LBP codes using n sampling  
  15. %  points defined in (n * 2) matrix SP. The sampling points should be  
  16. %  defined around the origin (coordinates (0,0)).  
  17. %  
  18. %  Examples  
  19. %  --------  
  20. %       I=imread('rice.png');  
  21. %       mapping=getmapping(8,'u2');   
  22. %       H1=LBP(I,1,8,mapping,'h'); %LBP histogram in (8,1) neighborhood  
  23. %                                  %using uniform patterns  
  24. %       subplot(2,1,1),stem(H1);  
  25. %  
  26. %       H2=LBP(I);  
  27. %       subplot(2,1,2),stem(H2);  
  28. %  
  29. %       SP=[-1 -1; -1 0; -1 1; 0 -1; -0 1; 1 -1; 1 0; 1 1];  
  30. %       I2=LBP(I,SP,0,'i'); %LBP code image using sampling points in SP  
  31. %                           %and no mapping. Now H2 is equal to histogram  
  32. %                           %of I2.  
  33. function result = lbp(varargin) % image,radius,neighbors,mapping,mode)  
  34. % Version 0.3.2  
  35. % Authors: Marko Heikkil�and Timo Ahonen  
  36. % Changelog  
  37. % Version 0.3.2: A bug fix to enable using mappings together with a  
  38. % predefined spoints array  
  39. % Version 0.3.1: Changed MAPPING input to be a struct containing the mapping  
  40. % table and the number of bins to make the function run faster with high number  
  41. % of sampling points. Lauge Sorensen is acknowledged for spotting this problem.  
  42. % Check number of input arguments.  
  43. error(nargchk(1,5,nargin));  
  44. image=varargin{1};