CLBP学习(下)
阐述一下CLBP实现纹理分类,与传统LBP不同,CLBP具有3个描述子。分别是CLBP-C、CLBP-S、CLBP-M
。
1.确定中心像素的邻域坐标
上图内有P个采样点,每个采样点的值可以通过下式计算:
p的范围:0~P-1
;其中(xc,yc)为邻域中心点,(xp,yp)为某个采样点。通过上式可以计算任意个采样点的坐标,但是计算得到的坐标未必完全是整数,所以可以通过双线性插值来得到该采样点的像素值,双线性插值算法是通过临近四个坐标点的像素值进行线性加权求和,在x,y方向上都进行线性加权求和。公式如下:
f(i+u,j+v)=(1-u)*(1-v)*f(i,j)+(1-u)*v*f(i,j+1)+u*(1-v)*f(i+1,j)+u*v*f(i+1,j+1)
其中i,j 为浮点坐标的整数部分; u,v为浮点坐标的小数部分。
此插值算法有利弊,即:
- 优点:缩放后图像质量高
- 缺点: 计算量大,双线性插值具有低通滤波器的性质,使高频分量受损,图像轮廓在一定程度上变模糊。
2.CLBP的整体计算流程
上图为CLBP的整体框架图,可以看到首先将原始图像表示为其中心灰度(C)和局部差异dp。其中还加入了旋转不变等价模式的LBP算子的描述,见CLBP学习(上)
局部差异dp的求解公式及其分解如下:
本文中的符号分量CLBP_S实际上就是传统LBP,两者编码方式也是相同的(这里的-1相当于传统LBP中的0),如下图。作者分析并验证了,符号分量所包含的纹理特征远高于幅度分量。
由于局部差异dp并不能直接作为描述子,因为其对于光照,旋转,噪声等都很敏感。作者把邻域像素和中心像素的差值分成符号分量和幅度分量,且由二者相乘得到,分别记做CLBP_S和CLBP_M。如下图中的(a)为3x3的采样块,其差值可由(b)表示,并且可以分解成(c)*(d),(c)为符号分量,(d)为幅度分量。
由上图可发现CLBP_M是连续的值,为了与CLBP_S统一编码,需要将其也转换成二进制编码。受CLBP_S启发,作者提出以下编码方式对其进行编码,其中c是自适应阈值,这里c的值取整幅图像中mp的均值。
中心像素代表局部灰度级,也包含了局部灰度判别信息,为了让其有效和LBP_M和LBP_S结合,我们进行如下编码:
这里的gc表示中心像素灰度值,ci表示整幅图像灰度的平均值。即通过比较中心像素与全图平均像素值的大小来进行二进制编码。
至此三个描述子CLBP_SCLBP_M,CLBP_C全部产生,可通过串联、并联或串并联其直方图的形式将其进行融合。
3.不相似度的计算及拓展
最后,运用到纹理识别分类中,用卡方距离来测量两个直方图的不相似度:
其中
X是直方图bin的总数,Tx和Lx别分表示样本和模板在第x个bin上的值。
拓展:图像相似度计算
每个图像都可以使用一个LBP特征向量来表示,图像的相似度就可以使用向量的相似度来计算。
向量的相似度计算方法有很多,比如余弦、距离等。这种基于直方图向量的相似度计算方法有多种形式,如下图所示给出三种:
上图中公式只是针对一个直方图的,使用中还会将图像分为多个区域分别计算直方图。所以在实际使用中,还可对不同区域进行加权。
原文作者: 贺同学
原文链接: http://clarkhedi.github.io/2020/10/04/clbp-xue-xi-xia/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)