LBP,Local Binary Patterns,中文名称为局部二值模式,是一种用来描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性的特点。
LBP方法最早是1994年,Timo Ojala在 Multiresolution Gray-scale and Rotation Invariant Texture Classification with Local Binary Patterns文章中提出。
【原始的LBP算法】
LBP的核心思想是将图像的某块像素和它周边一定范围内的像素进行对比,求得LBP值。
首先,取一定的范围。最原始的LBP算法是以该像素为中心,在附近取一个3*3的九宫格图形,然后以中心像素为阈值,周围大于等于改值的则记为1,小于该值的则记为0。
然后从第一格开始,顺时针得到一个二进制序列,再将这个二进制序列转化成十进制数则得到该像素点的LBP值。
附上MATLAB 实现的初级代码:
function image_lbp = originLBP( image )
%这个函数是最初的LBP九宫格形式
[row,column]=size(image);
image_lbp=zeros(row,column);
%image_lbp(1,:)=image(1,:);
%image_lbp(row,:)=image(row,:);
%image_lbp(:,1)=image(:,1);
%image_lbp(: ,column)=image(:,column);
for i=2:row-1
for j=2:column-1
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i-1,j-1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i-1,j));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i-1,j+1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i,j+1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i+1,j+1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i+1,j));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i+1,j-1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i,j-1));
end
end
function result=calculate(center,neighbour)
if(center<=neighbour)
result=1;
else
result=0;
end
end
end