一、LBP简介
LBP(Local Binary Pattern)算法是一种描述图像特征像素点与各个像素点之间的灰度关系的局部特征的非参数算法,同时也是一张高效的纹理描述算法,纹理是物体表面的自然特性,它描述图像像素点与图像领域之间的灰度空间的分布关系,不会因为光照强弱而改变图像的视觉变化。
LBP算法首次提出于1994年,主要是使用8邻域位置的局部关系,具有灰度不变性;随后在2002年提出了其改进版《Multiresolution gray-scale and rotation invariant texture classification with local binary patterns》 Timo Ojala, Matti PietikaÈ inen,2002,主要引入了圆形模式、旋转不变性、和等价模式,所以在下面我们将按照如下顺序介绍LBP特征:灰度不变性的基本LBP,灰度不变性的圆形LBP,旋转不变性的LBP,等价LBP。
二、LBP描述
原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。如下图所示:
图2-1 传统LBP算子
改进版本: 圆形LBP算子
基本的 LBP算子的最大缺陷在于它只覆盖了一个固定半径范围内的小区域,这显然不能满足不同尺寸和频率纹理的需要。为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求,Ojala等对 LBP 算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的 LBP 算子允许在半径为 R 的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子;
图2-1 改进LBP算子
三、LBP旋转不变模式
对于一个选定的P,LBP算法将产生2^P个不同的输出值,比如P=8时,值就有256个,这256个模式中每拿出一个都围绕中心点转动,那么在多次转动的过程中,会产生多种不同的结果,而这些结果中值最小的那个模式就是选择不变的二值模式了。比如:
图3-1 LBP旋转值图
在上面的图中说明的是,图中的这8种模式,都有相同的旋转不变模式,就是十进制为15的那个值,即00001111。那么对256种模式都做这种旋转,得到最小的数作为这种模式的旋转不变模式,旋转不变模式一共有36种(256/8=36),如下图所示:
图3-2 LBP旋转种类图
四、LBP等价模式
所谓等价模式是通过记录跳变方式来进一步降低LBP特征维数,“等价模式”定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该类型保留;跳变次数超过2次时,直接不要。等价模式就做了这件事,把P=8时的256种灰度不变性模式压缩为58种,把把P=8时的36种旋转不变性模式压缩为9种。下面我们看一下58和9是怎么来的: 首先256压缩为58: 当P=8时,P(P-1)+2=58。其中P(P-1)为跳变2次的情况,而2位跳变为0次的情况,并没有一种情况是发生了一次跳变。 其次36压缩为9: 通过观察上面图3-2可知,其中00000000与11111111是跳变为0的情况,除了这两个,图中第一列的其他7个都是跳变为2,最后剩下的27个跳变都超过了2,直接丢弃,所以2+7=9。