返回

LBP 与 Gabor 纹理特征

Local Binary Pattern & Gabor Filter - 纹理的局部编码与频率选择性滤波
第三章 / 特征明显方法
参数面板

选择输入图和纹理特征模式后,点击图像或使用方向键移动当前窗口,观察公式、编码和滤波响应实时刷新。

当前窗口
(9, 9) / 3x3

当前输出像素是窗口中心 (10, 10)。

窗口定位辅助操作
用方向键或下方 4 个按钮移动当前窗口;也可以直接点击原图或结果图跳转。
当前像素 (10, 10)568 / 3844
方向
概念说明

纹理特征描述什么

纹理特征把局部灰度排列、方向和频率转化为可比较的数值响应。图源:scikit-image Gabor 示例
任务

当需要区分木材、布料、砖墙这类表面,或者要找出条纹、斑点、粗糙度等局部模式时,只用颜色或边缘不够:纹理关注的是灰度在局部怎么排列、怎么重复变化。

思路

常用办法是用两种思路刻画纹理:LBP 把中心像素和周围邻域逐个比较亮暗,生成一个局部二进制模式,再统计这些模式出现的频率,适合描述微小结构;Gabor 用一组方向和频率的滤波器扫描图像,看局部区域对不同方向条纹的响应强弱,适合描述条纹、尺度和方向。

观察

拖动观察窗口到不同纹理区域,比较 LBP 编码图和 Gabor 响应图:LBP 图里变化剧烈的地方通常对应细节丰富的纹理,Gabor 图里亮度高的方向则对应该区域的主导条纹方向。

方向键移动 / 点击原图或结果图定位纹理窗口当前 LBP 中心 (10, 10)
568 / 3844
纹理测试图64×64
红框为当前 3x3 输入窗口,点击可重新定位
LBP 编码
568 / 3844
LBP 码图像64×64
绿框为当前输出像素,点击结果图可反向定位窗口中心
当前 3x3 输入窗口中心 (10, 10)
230
230
230
230
230
230
230
230
230

红色格是中心像素 I(c)=230,周围 8 格逐个与它比较。

阈值比较与位权重
p1 左上230 >= 230b=1, 2^0
p2 230 >= 230b=1, 2^1
p3 右上230 >= 230b=1, 2^2
p4 230 >= 230b=1, 2^3
p5 右下230 >= 230b=1, 2^4
p6 230 >= 230b=1, 2^5
p7 左下230 >= 230b=1, 2^6
p8 230 >= 230b=1, 2^7
写回 LBP 码图
结果图当前像素
(10, 10) = 255

LBP 当前窗口计算

用中心像素作为阈值,把 3x3 邻域中的 8 个相邻像素编码为二进制模式。所有矩阵、位权重和结果值均来自主图红框中的真实像素。

当前 3x3 灰度矩阵

230
230
230
230
230
230
230
230
230

中心像素 I(c)=230。每个邻域值大于等于中心值时记为 1,否则记为 0。

当前 LBP 编码代入
LBP(10,10) = p=18 bp 2p-1 =1+2+4+8+16+32+64+128 =255
权重从 p1 到 p8 依次为 2^0 到 2^7,得到 0~255 的单像素纹理编码。

逐邻域比较

邻域位置I(p)I(c)比较bit贡献
p1左上230230230 - 230 = 011 x 2^0 = 1
p2230230230 - 230 = 011 x 2^1 = 2
p3右上230230230 - 230 = 011 x 2^2 = 4
p4230230230 - 230 = 011 x 2^3 = 8
p5右下230230230 - 230 = 011 x 2^4 = 16
p6230230230 - 230 = 011 x 2^5 = 32
p7左下230230230 - 230 = 011 x 2^6 = 64
p8230230230 - 230 = 011 x 2^7 = 128

LBP 与 Gabor 的教学对比

LBP 关注局部灰度相对大小。整体光照同增同减时,比较关系通常不变,因此编码相对稳定。
Gabor 关注特定的纹理响应。改变时,会直接改变核对条纹、棋盘和渐变区域的响应强度。