最近看了两篇关于CLBP和ELBP的文章。现在对文中提到的LBP相关知识做一个小小的总结
一、LBP简介
1.传统LBP
其中是中心像素的灰度值,是其邻域像素的灰度值。通过比较中心像素周围邻域像素与中心像素的大小,大于中心像素为1,小于中心 像素为了,最后按一定顺序进行二进制编码。对于没有完全落在像素中心的邻域点,可以通过线性插值的方法来估算其灰度值。最后通过遍历所有LBP像素值,建立直方图来表示该图的纹理特征。假设图片尺寸是i*j,则直方图表达为:
2.uniform LBP
由上文可知,传统LBP会生成一个非常冗长的直方图,由于巨大维数,H值的估计也十分棘手,并且LBP对噪声十分敏感,围绕中心像素轻微的上下波动,可能导致编码结果大相径庭。因此,Ojala等人提出了统一编码模式:
U表示二进制编码0/1跳变的次数。一般情况下,U<=2,称之为统一模式,以p=8为例,共有8*7+3=59个编码值,其中58个为统一模式如下图所示。考虑旋转不变性,行将其分成p+2个值。
3.
由于LBP过分简化了局部结构丢失了纹理信息,Ojala等人通过对每个局部模式进行对比,提出了一个局部互补的描述子,称为,并使用2维直方图并联和,这里记为LBP/VAR
二、CLBP
与传统LBP不同,CLBP具有3个描述子。分别是CLBP-C、CLBP-S、CLBP-M。
如图,规定
,其中
上述公式中并不能直接作为描述子,因为其对于光照,旋转,噪声等都很敏感。作者把邻域像素和中心像素的差值分成符号分量和梯度分量,且由二者相乘得到,分别记做CLBP_S和CLBP_M。如图,(a)为3x3的采样块,其差值可由(b)表示,并且可以分解成(c)*(d),(c)为符号分量,(d)为梯度分量。传统LBP实际上就是本文中的符号分量CLBP_S。作者分析并验证了,符号分量所包含的纹理特征远高于梯度分量。
由上图可发现CLBP_M是连续的值,为了与CLBP_S统一编码,需要将其也转换成二进制编码。受CLBP_S启发,作者提出以下编码方式对其进行编码,其中c是自适应阈值,这里c的值取整幅图相中的均值。
中心像素代表局部灰度级,也包含了局部灰度判别信息,为了让其有效和LBP_M和LBP_S结合,我们进行如下编码:
这里表示中心像素灰度值,表示整幅图像灰度的平均值。即通过比较中心像素与全图平均像素值的大小来进行二进制编码。
CLBP算法流程如图所示。至此三个描述子CLBP_SCLBP_M,CLBP_C全部产生,可通过串联、并联或串并联其直方图的形式将其进行融合。
最后,运用到纹理识别分类中,用卡方距离来测量两个直方图的不相似度:
X是直方图bin的总数,和别分表示样本和模板在第x个bin上的值。
三、ELBP
本文中作者针对局部区域块提出了两种互补的特征类型,像素强度和像素差异。像素强度又分为径向强度和角度强度,像素差异分为径向差异和角度差异。下面将逐一介绍:
,其中
(应该是1/p,原文中作者写错了)可以发现NI-LBP其实就是邻域像素与其均值的比较并进行二进制编码,说白了和传统LBP的差异就在于阈值u的选择不同。
和LBP_C一样,是整幅图的均值。
其中,表示的是径向距离相差的和两点的像素灰度值的差。
与RD-LBP类似,其中,表示的是半径为r且角度相差的两个像素灰度值的差。作者通过实验发现,在统一LBP模式下,AD-LBP所提供的纹理信息较少,为了降低维度提高运算速率,后面的实验中,AD-LBP不作为重点。最后,使用串并联的方式将直方图融合。下图是ELBP算法的示意图
通过改变(p,r)的值实现多分辨率,下图清晰的表达了实现过程。