通俗讲LBP算子——特征描述算子

1.通俗说LBP算子

1.1 较理想的LBP算子

LBP是Local Binary Pattern的缩写,即局部二值模式。算子就是指掩模。例如,这里的LBP算子为3X3大小的,其是把中心位置的像素值作为阈值标准,当邻域的值大于中心值时,那个位置就被标记为1,小于则被标记0。当标记完后就可以做编码了。编码以左上角,也就是像素坐标轴的零点作为起始点,顺时针将标记值由右边低位向左边高位依次排列,如下图所示,得到一个8位长的编码。

通俗讲LBP算子——特征描述算子
再如这个图像为9X9大小,算子扫过就会出现9X9 / 3X3 = 9个编码值,然后用直方图统计编码值的出现的频率。如此就记录下了这张图像的特征信息。
当具有类似特征信息的图像需要识别时,就将两者的特征信息对匹配,根据经验设定一个匹配值,如两者匹配率达到90%,那就是可以两者是同一类或者同一个东西。或者做识别,将图像的特征信息扔进训练好的分类器,让它判断图像是什么。

2.较理想下LBP算子的不足

2.1 未考虑图像的旋转不变性

在1.1中所讲的小例子,如果具有相同特征信息的图像A1和A2,采集的A1的编码信息,做匹配之前,图像A2相较于A1作了旋转45°。对于我们人来说,很容易判断A1和A2就是同一类,然而对机器根据LBP算子来判断则不能判断。因为A2旋转了,也就意味着A2的LBP对应的编码作了循环移位,值就发生了变化,统计图的信息也就不一样了,机器作出不是一类的或者不是同一个东西的判断。这个问题就说明先前的LBP算子不具有旋转不变性。
针对这个问题,前人是这样改进。例如当前算子得到的编码是10000001,则对这个编码作循环移位的操作,因为每移动一位就会得到一个数值,然后取最小值,把最小值对应的编码作为当前局部图像的特征信息,这里的编码就取00000011。就像如此,算子在图像上滑动,每次记录最小值的编码。当需要做识别的时候,被识别的图像也做相同的操作,取编码最小值为特征信息。

通俗讲LBP算子——特征描述算子

2.2 LBP算子矩形模板的不足

之前例子中的算子只能覆盖固定半径范围内的小区域,不能满足不同尺寸和频率纹理的需求。为适应不同尺寸的纹理特征,前人将矩形的算子转变为了圆形,满足前面所提要求的同时,还达到了旋转不变性的要求。圆形的半径为中心到边的像素距离,采样范围为圆形这个线上,采样点是在圆上等距离分开的点,点数人为设定。

通俗讲LBP算子——特征描述算子