1. 程式人生 > >LBP特徵原理及C實現

LBP特徵原理及C實現

LBP(Local Binary Pattern, 區域性二值特徵)是一種用來描述影象區域性紋理特徵的運算元,它具有旋轉不變性和灰度不變性,同時該特徵對光照不敏感。該特徵對姿態和表情的魯棒性不強。 LBP特徵在人臉識別和目標檢測中常用。

1、原始LBP特徵描述及計算方法
原始的LBP運算元定義在畫素3x3的領域內,以領域中心畫素為閾值,相鄰的8個畫素的灰度值與領域中心的畫素值進行比較,若周圍畫素大於中心畫素值,則該畫素點(非中心點)的位置標記為1,否則為0。這樣,3x3領域內的8個點經過比較可產生8位二進位制數,將這8位二進位制數依次排列形成一個二進位制數字這個二進位制數字就是中心畫素的LBP值。LBP值共有2^8種可能,故LBP值有256種。中心畫素的LBP值反映了該畫素周圍區域的紋理資訊。
注意:LBP特徵的影象必須是灰度圖,如果是彩色圖,需要先轉化為灰度圖。


上訴過程用圖表示為:
在這裡插入圖片描述

demo輸出
在這裡插入圖片描述
2、圓形LBP特徵
基本的LBP特徵最大的缺陷在於它只覆蓋了一個固定範圍內的小區域,這顯然不能滿足不同尺寸和頻率紋理的需求。為此提出圓形LBP運算元,圓形LBP能適應不同尺度的紋理特徵並達到灰度和旋轉不變性的要求。
圓形LBP將3X3領域擴充套件到任意領域,並用圓形領域代替了正方形領域,改進後的LBP運算元允許在半徑為R的圓形領域內有任意多個畫素。從而得到半徑為R的圓形區域內含有P個取樣點(P領域)的LBP運算元。
在這裡插入圖片描述

demo輸出: ratio=1,取樣點8在這裡插入圖片描述

3、LBP旋轉不變模式
由於編碼的起始點是一點的,每一種二值編碼經旋轉(迴圈移位)會產生不同的編碼值。為了形成旋轉不變的編碼模式,對同一個編碼模式經旋轉後產生的編碼結果為同一值,既是這些旋轉結果中最小的。我看有不少部落格上的程式碼demo實現這種模式時是直接右移的,這樣做應該不對的。
在這裡插入圖片描述

demo輸出:
在這裡插入圖片描述

4、LBP等價模式
原始的LBP運算元,隨著領域內取樣點數的增加,二進位制模式的種類是急劇增加的。如半徑為R的圓形區域內含有P個取樣點石將會產生P^2種模式。過多的二值模式對特徵的提取以及資訊的存取都是不利的。
等價模式定義: 當某個LBP所對應的迴圈二進位制數從0到1或者從1到0最多有兩次跳變時,該LBP所對應的二進位制就稱為一個等價模式。在實際影象中,計算出來的大部分值都在等價模式之中,可達百分之90%以上。
例子說明:

如00000000(0次跳變),00000111(只含一次從0到1的跳變),10001111(先由1跳到0,再由0跳到1,共兩次跳變)都是等價模式類。
除等價模式類以外的模式都歸為另一類,稱為混合模式類,例如10010111(共四次跳變)

uniformLBP模式的個數為P(P-1)+2,P為領域畫素點個數。對於8個取樣點,uniform形式有58種輸出, 其他的所有值為第59類,這樣直方圖從原來的256維降到了59維,並且可以減少高頻噪聲帶來的影響。
對。
demo輸出:
在這裡插入圖片描述
5、MB-LBP特徵(Multiscale LBP)
原理圖解
在這裡插入圖片描述
將影象分成一個個小塊(Block),每個小塊在分為一個個小區域,小區域內的灰度平均值作為當前小區域的灰度值,然後與周圍小區域灰度進行比較形成LBP特徵,該特徵就是MB-LBP特徵。
Block大小為3(3x3)則小區域的大小為1,就是原始的LBP特徵,上圖的Block大小為9(9x9),小區域的大小為3(3x3)

MB-LBP特徵典型應用是Adaboost中,人臉識別等。

demo輸出:block為9x9
在這裡插入圖片描述

6、LBPH-影象的LBP特徵向量(Local Patterns Histograms)
LBPH-LBP特徵的統計直方圖。LBPH將LBP特徵與影象的空間資訊結合在一起。由Ahonen等人提出【論文: ] Ahonen, T., Hadid, A., and Pietikainen, M. Face Recognition with Local Binary Patterns. Computer Vision- ECCV 2004 (2004), 469–481】。
他們將LBP特徵影象分成m個區域性塊,並提取每個區域性快的直方圖。
LBPH的具體計算過程:

1、計算影象的LBP特徵;
2、將LBP特徵圖進行分塊,Opencv中預設將LBP特徵圖分成8*8,64塊區域;
3、計算每塊區域特徵圖的直方圖cell_LBPH, 將直方圖進行歸一化,直方圖大小為1*numPatterns;
4、將上面計算的每塊區域特徵影象的直方圖按照分塊的空間順序依次排列成一行,形成LBP特徵向量,大小為
   (numPatterns * 64);
5、用機器學習的方法(SVM等)對LBP特徵向量進行訓練,用來檢測和識別目標;

LBPH的維度:
取樣點為8個,如果用的是原始的LBP或者擴充套件LBP特徵,其LBP特徵值的模式為256種,則一幅影象的LBP特徵向量維度為:64256=16384維。
若使用uniform LBP特徵,其LBP值得模式為59種,其特徵向量維度為:64
59=3776維。既使用等價模式時,LBPH維度大大減少,這意味著在進行機器學習時時間能大大減少但效能確並不受很大影響。

7、demo地址

8、參考
https://blog.csdn.net/zouxy09/article/details/7929531
https://blog.csdn.net/lsq2902101015/article/details/48680779
https://blog.csdn.net/quincuntial/article/details/50541815 //MB-LBP,LBPH
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/histogram_calculation/histogram_calculation.html#histogram-calculation //直方圖