LBP算法
在数字图像处理和模式识别领域,LBP指局部二值模式,英文全称:Local Binary Patterns。最初功能为辅助图像局部对比度,并不是一个完整的特征描述子。后来提升为一种有效的纹理描述算子,度量和提取图像局部的纹理信息,对光照具有不变性。LBP有很多变种,或说改进。单纯的LBP记录像素点与其周围像素点的对比信息,或说差异。从图1我们看到,最左边的是原图,标号为example。我们要检测
·
在数字图像处理和模式识别领域,LBP指局部二值模式,英文全称:Local Binary Patterns。最初功能为辅助图像局部对比度,并不是一个完整的特征描述子。
后来提升为一种有效的纹理描述
算子,度量和提取图像局部的纹理信息,对
光照具有不变性。LBP有很多变种,或说改进。单纯的LBP记录像素点与其周围像素点的对比信息,或说差异。从图1我们看到,最左边的是原图,标号为example。我们要检测某个像素点的某些信息,在图1中,对于9个方格中中间方格(方格中的数字是像素点灰度值大小),做一个阈值化处理。大于等于中心点像素的,则标记为1,小于的则标记为0。最后将中心像素点周围的11110001二进制数化为十进制数,得到LBP值。
二进制数11110001的顺序并无硬性要求,只要在同一处理中保持相同的顺序即可。
但是这样的LBP描述特征能力有限,且不具备旋转不变性。很容易想象,如果图片进行了旋转,则LBP值也会随之改变。因此有了下面的改进。
将LBP周围的二进制码(如11110001)按位旋转,取二进制码最小的值。对于11110001情况,我们按位旋转,得到11100011,11000111,10001111,0001111,00111110,01111100,11111000七个不同的二进制数,最小值为00011111,则取该种模式(pattern)为最终LBP。这又称为LBPROT,或写为LBPp,r ri。
对于采样半径为1,周围像素点数为8的情况,LBPROT算子(即具有旋转不变性的LBP模式)总共有36个。
但是对于LBPROT来说,其实验结果并不好。不能提供很好的分辨率。
在以上的基础上,又有了Uniform LBP的出现。
所谓Uniform LBP,指在LBP二进制数中,0到1和1到0的跳变总数不超过两次。如00000000和11111111,并没有0,1跳变,U=0。对于11110000和00001111,则有一次跳变,U=1。对于Uniform LBP来说,具备旋转不变性的pattern只有9个,如图3LBPROT中第一排标号为0-8的pattern。因此,最终结果为统计Uniform LBP pattern的直方图,把所谓的nonUniform放入直方图的另一个bin中,得到最终的特征向量。
Uniform LBP在局部纹理描述上取得了较好的描述效果,原因在于,Uniform LBP 的各种模式占据了图像中所有模式的绝大部分。不同采样半径和周围像素点个数会不同,但Uniform LBP占据了所有模式的50%~95%。
LBP已经成功应用于人脸检测,唇语识别,表情检测,动态纹理等等领域。其算法复杂度低,消耗内存小,原理简单,但并不一定适合所有的特征描述。
局部二值模式(LBP)首先是用来做图像局部特征比较的,传统的LBP方法,首先通过阈值来标记中心点像素与其邻域像素之间的差别。LBP是人脸识别中经常使用的一种方法。
最早的LBP算子是定义在3*3的邻域上的。它使用中心像素值来计算8的邻域像素。然后在乘以领域的权值得到结果。下面我们给出一个例子:
Example
6
|
4
|
3
|
7
|
5
|
2
|
8
|
9
|
5
|
Threshold
1
|
0
|
0
|
1
|
0
| |
1
|
1
|
1
|
(10001111)2 LBP=1+16+32+64+128 = 241
C = (6+7+8+9+5)/5 – (4+3+2)/3 =6
Weights
1
|
2
|
4
|
128
|
*
|
8
|
64
|
32
|
16
|
我们使用二维分布LBP和局部对比测量C作为该领域的特征。
但是为了使得到的特征更有代表性。矩形领域的大小是可以改变的,可以使用4*4或5*5的领域。相比矩形领域,圆形对称领域的效果更好。
更多推荐
已为社区贡献1条内容
所有评论(0)