选择输入图和纹理特征模式后,点击图像或使用方向键移动当前窗口,观察公式、编码和滤波响应实时刷新。
当前输出像素是窗口中心 (10, 10)。
当需要区分木材、布料、砖墙这类表面,或者要找出条纹、斑点、粗糙度等局部模式时,只用颜色或边缘不够:纹理关注的是灰度在局部怎么排列、怎么重复变化。
常用办法是用两种思路刻画纹理:LBP 把中心像素和周围邻域逐个比较亮暗,生成一个局部二进制模式,再统计这些模式出现的频率,适合描述微小结构;Gabor 用一组方向和频率的滤波器扫描图像,看局部区域对不同方向条纹的响应强弱,适合描述条纹、尺度和方向。
拖动观察窗口到不同纹理区域,比较 LBP 编码图和 Gabor 响应图:LBP 图里变化剧烈的地方通常对应细节丰富的纹理,Gabor 图里亮度高的方向则对应该区域的主导条纹方向。
红色格是中心像素 I(c)=230,周围 8 格逐个与它比较。
用中心像素作为阈值,把 3x3 邻域中的 8 个相邻像素编码为二进制模式。所有矩阵、位权重和结果值均来自主图红框中的真实像素。
中心像素 I(c)=230。每个邻域值大于等于中心值时记为 1,否则记为 0。
| 邻域 | 位置 | I(p) | I(c) | 比较 | bit | 贡献 |
|---|---|---|---|---|---|---|
| p1 | 左上 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^0 = 1 |
| p2 | 上 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^1 = 2 |
| p3 | 右上 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^2 = 4 |
| p4 | 右 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^3 = 8 |
| p5 | 右下 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^4 = 16 |
| p6 | 下 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^5 = 32 |
| p7 | 左下 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^6 = 64 |
| p8 | 左 | 230 | 230 | 230 - 230 = 0 | 1 | 1 x 2^7 = 128 |