1. 程式人生 > >學習LBP特征

學習LBP特征

開源 ref rotate pattern oca put zeros 開始 atl

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特征圖像

技術分享

學習LBP特征