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特征图像
时间: 2024-10-04 05:39:49