首页 > 代码库 > 学习LBP特征

学习LBP特征

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