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

1.通俗说LBP算子

1.1 较理想的LBP算子

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

通俗讲LBP算子——特征描述算子_第1张图片
再如这个图像为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.2 LBP算子矩形模板的不足

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

通俗讲LBP算子——特征描述算子_第3张图片
P表示采样点数,R表示半径。但是其中会遇到图中标红的点,这些点不在横纵轴的交点,即像素点上,就通过如下的方式计算出位置坐标。

通俗讲LBP算子——特征描述算子_第4张图片
R为采样半径,P为采样总数,p为第几个采样数

3.改进后的算子不足——计算代价

LBP算子由矩形改进为圆形,扩大采样范围的同时,带来了庞大的数据量,良好的检测效果的代价便是计算时长和计算空间的开销增大。为了解决这个问题,前人经过研究调查发现,LBP算子在一幅图像中得到的编码结果,大多编码最多会出现0—>1或者1—>0的跳变两次。由此为这样编码归纳为等价模式。
编码中出现最多出现0—>1或者1—>0的跳变两次,也就意味着,没有跳变、0—>1出现1次和1—>0没有出现,0—>1没有出现和1—>0出现一次、0—>1和1—>0各出现
一次、0—>1出现2次和1—>0出现一次(0101)、0—>1出现1次和1—>0出现两次(1010)等情况视为等价模式,相对应的,除等价模式以外的都视为混合模式。

等价模式中编码个数的公式为P*(P-1)+2,P为采样点数。混合模式中的编码会被特殊处理,如抛弃或者赋特殊值,所以该模式中的编码不管有多少种,最终都会变为一种。所以图像中的最终编码个数就变成了 P*(P-1)+2+1 种。

这种方法叫做降维处理。如果不做处理编码数量将达到2**P,如P=8,便达到了256个,通过降维,编码数量变为了 8*7+2+1=59 种。从直方统计图来看,256种特征信息,有的会集中在某区域,有的直接没有,有的零星散落,这样显得信息稀疏。降维之后,256—>59,范围缩小,信息紧凑。

你可能感兴趣的:(机器学习,计算机视觉)