1、LBP特征背景介紹
LBP指局部二值模式,英文全稱:Local Binary Pattern,是一種用來描述圖像局部特征的算子,LBP特征具有灰度不變性和旋轉不變性等顯著優點。它是由T. Ojala, M.Pietikäinen, 和 D. Harwood [1][2]在1994年提出,由於LBP特征計算簡單、效果較好,因此LBP特征在計算機視覺的許多領域都得到了廣泛的應用,LBP特征比較出名的應用是用在人臉識別和目標檢測中,在計算機視覺開源庫OpenCV中有使用LBP特征進行人臉識別的接口,也有用LBP特征訓練目標檢測分類器的方法,Opencv實現了LBP特征的計算,但沒有提供一個單獨的計算LBP特征的接口。
2、MATLAB代碼
1 %2017-05-12 學習LBP特征 2
3 clc; 4 clear; 5
6 %讀圖操作 7 img=imread('船 (403).bmp'); 8 [m,n]=size(img); 9 figure(1); 10 imshow(img,[]); 11 title('原圖'); 12 %%
13 %求原始的LBP特征 14 img_LBP=zeros(m,n); 15 for i=2:m-1
16 for j=2:n-1
17
18 code=zeros(1,8); %行向量 19 code(1)=img(i-1,j-1)>img(i,j); 20 code(2)=img(i-1,j)>img(i,j); 21 code(3)=img(i-1,j+1)>img(i,j); 22 code(4)=img(i,j+1)>img(i,j); 23 code(5)=img(i+1,j+1)>img(i,j); 24 code(6)=img(i+1,j)>img(i,j); 25 code(7)=img(i+1,j-1)>img(i,j); 26 code(8)=img(i,j-1)>img(i,j); 27 for p=1:8
28 img_LBP(i,j)=img_LBP(i,j)+code(p)*2^(8-p); %從左上角開始,順時針編碼 29 end 30
31 end 32 end 33
34 figure(2); 35 imshow(img_LBP,[]); 36 title('original LBP'); 37 %%
38 %求旋轉不變LBP 39 img_LBP_ri=zeros(m,n); 40 for i=2:m-1
41 for j=2:n-1
42
43 code=zeros(1,8); %行向量,原始LBP特征編碼 44 code(1)=img(i-1,j-1)>img(i,j); 45 code(2)=img(i-1,j)>img(i,j); 46 code(3)=img(i-1,j+1)>img(i,j); 47 code(4)=img(i,j+1)>img(i,j); 48 code(5)=img(i+1,j+1)>img(i,j); 49 code(6)=img(i+1,j)>img(i,j); 50 code(7)=img(i+1,j-1)>img(i,j); 51 code(8)=img(i,j-1)>img(i,j); 52 for p=1:8
53 img_LBP_ri(i,j)=img_LBP_ri(i,j)+code(p)*2^(8-p); %從左上角開始,順時針編碼 54 end 55
56 %循環左移,移動k位相當於把開頭的k個數放到最右邊 57 for k=1:7
58 code=[code(k+1:end) code(1:k)]; %移位之后的二進制編碼,右移表達式 code=[code(end-k+1:end) code(1:end-k)] 59 temp=0; 60 for p=1:8
61 temp=temp+code(p)*2^(8-p); 62 end 63 if temp<img_LBP_ri(i,j) %取旋轉之后的最小值 64 img_LBP_ri(i,j)=temp; 65 end 66 end 67
68 end 69 end 70
71 figure(3); 72 imshow(img_LBP_ri,[]); 73 title('rotate invariant LBP');
3、LBP特征圖像
4、LBPH的求法
LBPH(Local Binary PatternsHistograms),局部二進制編碼直方圖,建立在LBPH基礎之上的人臉識別法基本思想如下:
(1)首先以每個像素為中心,判斷與周圍像素灰度值大小關系,對其進行二進制編碼,從而獲得整幅圖像的LBP編碼圖像;
(2)再將LBP圖像分為個區域,獲取每個區域的LBP編碼直方圖,繼而得到整幅圖像的LBP編碼直方圖;
(3)通過比較不同圖像LBP編碼直方圖達到圖像分類的目的,其優點是不會受到光照、縮放、旋轉和平移的影響。
比如說,對應、於一張200*200的圖片,照上述方法求出LBP特征圖像(在最外圈補0)也為200*200,再將LBP圖像分為10行10列,按行求出每一小塊20*20的直方圖。
問題在於如何歸一化,特意查了一下數據歸一化的方法,如下:
數據歸一化和兩種常用的歸一化方法
數據標准化(歸一化)處理是數據挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標准化處理,以解決數據指標之間的可比性。原始數據經過數據標准化處理后,各指標處於同一數量級,適合進行綜合對比評價。
以下是兩種常用的歸一化方法:
一、min-max標准化(Min-Max Normalization)
也稱為離差標准化,是對原始數據的線性變換,使結果值映射到[0 , 1]之間。轉換函數如下:
其中max為樣本數據的最大值,min為樣本數據的最小值。這種方法有個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。
二、Z-score標准化方法
這種方法給予原始數據的均值(mean)和標准差(standard deviation)進行數據的標准化。經過處理的數據符合標准正態分布,即均值為0,標准差為1,轉化函數為:
其中μ為所有樣本數據的均值,σ為所有樣本數據的標准差。
但是網上看到有人解析Opencv里面用LBP 作人臉識別時說到直方圖歸一化,直接對直方圖除以上文舉例中的20*20
參考博客:http://blog.csdn.net/sinat_25885063/article/details/43704005