OpenCV 学习系列-LBP
圆形LBP
基本的 LBP算子的最大缺陷在于它只覆盖了一个固定3x3范围内的小区域,为了满足不同尺寸的需要,并达到灰度和旋转不变性的要求,对 LBP 算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域。以某个像素点为中心,以一个任意大小半径R画一个圆,将落在圆内的P个像素与中心点像素比较得到LBP算子。
圆形LBP.jpg详解
1.右上角数字表示半径,右下角数字表示像素个数
2.与基本LBP一样 ,最左边的图像得到LBP值是一样的,取中心点周围的8个像素点
- 中间的,半径是2,像素个数是16;右边的,半径是2,像素点个数是8
旋转不变LBP
LBP 算子是灰度不变的,但却不是旋转不变的,图像的旋转就会得到不同的 LBP值。
旋转LBP.jpg为了解决这个问题,将 LBP算子进行了扩展具有旋转不变性。LBP的旋转不变模式,即不断旋转圆形邻域得到一系列初始定义的 LBP值,取其最小值作为该邻域的 LBP 值。
旋转不变详解
首先获得LBP值为: 11100001 (255),进过旋转分别得到8中不同的LBP值,最终得到的具有旋转不变性的 LBP值为 15。
等价LBP
对于半径为R的圆形区域内含有P个采样点的LBP算子将会产生2^P(0和1的排列组合)种模式。随着邻域集内采样点数的增加,二进制模式的种类是以指数形式增加的。这么多的二进制模式导致在人脸检测时候LBP模式统计直方图过于稀疏(见下面检测原理部分)。因此需要对原始的LBP模式进行降维,也就是减少数据量。
等价模式(均匀模式)就是解决这个问题的。在实际图像中,绝大多数LBP模式最多只包含两次从1到0或从0到1的跳变。因此,等价模式定义为:当某个LBP所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该LBP所对应的二进制就称为一个等价模式类,除等价模式类以外的模式都归为另一类,称为混合模式类。
00000000(0次跳变),00000111(1次从0到1的跳变),10001111(1到0,0到1,两次跳变)是等价模式类。
10010111(共四次跳变)是混合模式类。
通过这样的改进,二进制模式数量由原来的2^P种减少为 P* ( P-1)+2种。
比如:3x3的8采样本来有256种,现在变成58(等价模式)+1种(混合模式)。即本来lbp值为0-255,也就是256种结果,转化为了59种。混合模式编码为0,等价模式根据值大小编码为1—58。
00000000 : 1
00000001 : 2
00000010 : 3
00000101 : 0 (跳变3次)58种情况如下:
0次跳变:
11111111 00000000
1次跳变(14个):
01111111 00111111 00011111 00001111 00000111 00000011 000000012次跳变(42个)
1:
01000000 00100000 00010000 00001000 00000100 00000010
2:
01100000 00110000 00011000 00001100 00000110
3:
01110000 00111000 00011100 00001110
4:
01111000 00111100 00011110
5:
01111100 00111110
6:
01111110
还是记录一下,这个概念时间长了,就忘了