LBP局部二进模式(一)

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值。


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值。


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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容