在上Computer Vision lecture的时候,讲师介绍了LBP算子,这里对他进行简单的介绍。
LBP(Local Binary Pattern) 局部二制模式,是描述图像局部纹理特征的算子,有原始LBP,圆形LBP算子,旋转不变的LBP模式和LBP均匀模式。
原始LBP很好理解,是通过以中心像素为阈值对比中心像素和周围8个像素的值,周围像素比中心像素大(或相等的)的记为1,小的记为0,通过对比会得到二值图,按顺时针方向可得二进制串,再通过二进制转换为十进制数,即得到中心像素LBP值,并通过此值表达区域纹理信息,如下图所示:
原始十进制LBP码一般会有256种,这里可以理解为:八位二进制共有256种组合(二的八次方) 。
通过对比5和周围8个像素的大小,5>1(左上角像素),5>2(上排中间像素),5>2(右上角像素),以此类推顺时针对比一遍得出 00010011的二进制串,转换为十进制则是19。
LBP顺序(此例子中使用顺时针遍历)并没有要求,只是量化公式,保持同一处理一致即可。
用公式表示LBP则是:
原始LBP的问题在于它只覆盖了目标像素周围的8个相邻像素点,换句话说,只覆盖了固定半径范围内的小区域,不能满足不同尺寸和频率纹理的需要。圆形LBP算子将8个相邻像素进行拓展,引入圆形邻域代替正方形邻域,改进后的LBP算子允许半径R内的圆形邻域有多个像素点,并对圆形区域P个采样点进行采样。如图所示:
上图中图1使用的是半径R为1内的8个采样点(P)的LBP算子
图2使用的是半径R为2内的16个采样点(P)的LBP算子,圆形算子讲邻域扩展为5*5
图3使用的是半径R为2内的8个采样点(P)的LBP算子,邻域依旧为5*5但是采样点减少为8
不同的圆形算子对不同的场景有不同的效果,这也是圆形算子的优势所在。
用公式表示圆形LBP则是:
p采样点的坐标采用如下的公式计算:
然而,通过计算得出的坐标不一定是整数,所以可以通过双线性插值算出该取样点的像素。
试想,当图像旋转时,对同一邻域,普通LBP在不同旋转角度会得到不同的LBP值,这时就要引进一种具有旋转不变性的LBP算子。如下图所示:
具体方法是将原始LBP(或者圆形LBP)旋转P个采样点位(此图中为8次),得到不同的二进制串,进而产生八种不同的LBP值(240,120,60,30,15,135,195)
取其中最小值作为最终LBP值,这样无论图像如何旋转,这个点的LBP值都会只是15,这也达成了旋转不变性。
随着P(邻域内采样点的增加),二进制模式种类也是大幅度增加的,比如,原始LBP会有2^8=256个LBP值可能性(8采样点),5*5邻域内20个采样点就会有2^20 = 1048576种二进制模式,这样的数据数量是巨大的,对纹理提取识别和分类信息存取都是不利的。数据量过大同时也会造成LBP直方图稀疏,无法很好地表现图片信息。所以需要对原始LBP模式进行降维,使得它的数据量在一定范围内,并能最好的表现图片信息。
等价模式(Uniform Pattern)是当某LBP模式最多只包含两次1到0或0到1的跳变,该LBP所对应的二进制就称为一个等价模式类。除等价模式外的模式都归为另一类,成为混合模式。
下面通过举例来理解等价模式:
00000000(二进制串从0到0无跳变)
00000111(二进制串从0到1一次跳变,跳变位于第五位到第六位)
10001111(二进制串由1到0再从0到1两次跳变,跳变位置位于第一位到第二位,第四位到第五位)
10010111(二进制串共四次跳变,1->0, 0->1,1->0,0->1)该模式属于混合模式。
通过等价模式的计算,二进制模式种类大大减小,从之前的2^p种到p(p-1)+2种,8个采样点位的LBP也会从256降到仅58种,这使得特征向量维数更少,并且可以减少高频噪声带来的影响。
1. 将图像分为N个大小相同的cell
2. 对cell中每个像素,计算LBP值
3. 对于每一个cell,计算cell中所有LBP直方图,并进行归一化
4.将所有cell直方图连接作为一个特征向量,作为全图特征向量。
对比直方图特征与待检测目标特征,可采用
(1)直方图交叉核方法
(2)卡方统计方法
优点:光照不敏感(只对比中心像素与周围像素大小关系),旋转不变形(圆形算子),特征维度低,计算速度快。
缺点:光照不均匀无法反映真实纹理特征,对方向敏感。
参考文献:
[1]Timo Ahonen, Abdenour Hadid:Face Recognition with Local Binary Patterns
[2]目标检测的图像特征提取之(二)LBP特征