李 松 蔡 航 于 蒙
(武汉理工大学物流工程学院 湖北 武汉 430000)
图像纹理是指图像中灰度与颜色的变化,是一种重要的视觉底层特征,描述了区域的稀疏和规则等一些特性;它需要在包含多个像素点的区域中进行统计计算,是一种统计特征。由于自然界中纹理结构具有随机性与复杂多样性,目前不存在一种被国际学者公认的、能完美而正确地诠释纹理的方法。
早期常用来提取图像纹理结构特征的方法主要有马尔科夫随机场[1]、灰度共生矩阵[2]、小波变换[3]和分形理论[4]等。这些方法能很好地用于简单的纹理分类,但是不能解决多变的光照和观测条件下自然材料的表征与识别的问题。因此近些年提出了许多基于提取局部原语或基元并通过直方图测量其分布的方法,LBP就是这类方法中表现最好的[5]。它最大的优点是原理简单,计算复杂度低,效率高,并兼具旋转不变性以及对单调变化的光照的鲁棒性,目前已经在模式识别领域得到了广泛应用。它由T.Ojala和D.Harwood[6]提出,并引起各国学者的关注,提出了很多相应的改进算法,如:Guo等[7]提出完整局部二值模式(Complete Local Binary Patterns,CLBP)算法,通过提取像素灰度符号、幅值以及邻域中心像素灰度特征间的相关性信息,增强了算法对于纹理信息的描述能力。Liu等[8]提取扩展局部二值模式(Enhance Local Binary Patterns,ELBP)算法通过提取单个像素点的局部邻域灰度特征和径向的灰度差分特征间的共生信息,提高了算法对于光照和旋转的鲁棒性。黄辰等[9]提出高斯局部二值模式,在多尺度下提取具有主方向的二值模式,提高了算法的可区分性和有效性。樊养余等[10]提出用求取最大差分幅值的方法获得邻域主导方向的完备局部二值模式在不同尺度上提取二值模式,提高了算法的光照和旋转不变性,但是没有考虑最大差分幅值相同的情况。
LBP方法仅仅比较邻域像素和中心像素的值,不能很好反映图像的灰度变化,因此较容易收到噪声影响。如果噪声过大,其对纹理的表述能力会急剧下降。而目前,许多的LBP改进方法都没有考虑到噪声对于纹理特征描述子的影响,因此为了提高LBP算法对于噪声的鲁棒性,本文在完整局部二值模式的基础上提出了自适应阈值的CLBP方法,同时为了兼顾算法的旋转不变性,采取了在LBP编码前选取主方向的方法。最后,在通过纹理图像的识别实验验证了算法的有效性。
LBP是一种用来描述图像局部纹理特征的算法,具有旋转不变性和灰度不变性等显著优点。原始的LBP是在3×3的窗口中,以中心像素点的像素值为阈值,将邻域8个像素点的值和阈值进行比较,若邻域点的像素值大于中心像素点,则记为1,否则记为0,然后按照规定的编码方向,给不同的邻域点赋予不同的权重,将二进制序列转换一个无符号十进制数,并用该值作为像素点的LBP特征值,其过程如图1所示。Ojala最初提出的LBP算子存在无法提取大尺寸结构纹理的缺点,为了解决这一问题,Ojala做出改进,将3×3邻域扩展到任意邻域,并用圆形邻域代替正方形邻域,改进后的LBP算子允许在半径为R的圆形邻域内有任意多个像素点。综上,对于一幅图像S上的任意像素点S(i,j),将以S(i,j)为中心,半径为R的内含有P个采样点的区域称为其局部邻域(P,R),则像素点S(i,j)的LBP值可以定义为:
(1)
式中:gc代表中心像素S(i,j)的灰度值,gp代表采样点灰度值。这种方法获取的LBP值具有线性灰度不变性,但是在图像发生旋转时,相应的LBP值也会发生改变。为了解决旋转不变性的问题,Ojala等[11]提出了基于旋转不变性的LBP算法。对同一个中心点,以不同的邻域像素点作为起点进行二进制编码,从而得到一系列的二进制编码,选取其中最小的值作为该邻域的LBP值。
图1 局部二值模式提取过程
完整局部二值模式提出了三种纹理描述子,分别是灰度值差值符号描述子CLBP_S和灰度值差值幅值描述子CLBP_M和全局灰度特征描述子CLBP_C。其计算方式如下:
(2)
式中:mp表示采样点p的像素值与中心像素S(i,j)像素值的差分的幅值,m是mp的均值,cI表示全图灰度均值。三个算子中,CLBP_S和CLBP_M描述的是局部特征,分别表示了邻域像素与中心像素的灰度差异信息的符号与幅值,CLBP_C描述的是中心像素点与全图灰度均值的差异,属于一种全局特征。分别计算三个算子的特征向量然后联合得到的就是CLBP特征描述符。此方法能很好地利用图像中的局部特征同时也兼顾了全局特征,能很好地提高LBP算子的判别性能,但是没有解决算法对噪声和不均匀光照敏感的问题,同时也忽视了算法的旋转不变性。基于此,本文提出了一种带方向的自适应阈值完整局部二值模式(adaptation threshold complete local binary pattern with direction,DAT-CLBP)。
LBP编码时,取邻域灰度均值作为阈值,但单个像素点容易受到光照和噪声的影响而发生变化,采用均值作为阈值,仅能抵抗像素值得单调变化,对于类似于椒盐噪声这种非线性像素变化没有鲁棒性。要解决这一问题,可以用局部邻域像素灰度值的中值替代中心像素点作为二值化阈值,这种方法被称为中值局部二值模式(Medium Binary Pattern)[12],它的定义是:
(3)
式中:m是局部邻域(P,R)灰度中值。
数字图像的噪声主要来源于图像获取的数字化过程,如高斯噪声、瑞利噪声、伽马以及脉冲噪声等,其中,脉冲噪声是最常见的一种噪声,因此本文主要考虑脉冲噪声的影响[13]。在众多的滤波方法中,常用于脉冲噪声处理的就是中值滤波。在中值滤波中,去除噪声和保护图像细节是矛盾的:滤波窗口较小,则能很好地保护图像中的某些细节,但对噪声的过滤效果就不是很好;反之,窗口尺寸较大有较好的噪声过滤效果,但是会对图像造成一定的模糊。因此,出现了一种自适应中值滤波,它会根据设定的条件动态地改变滤波窗口的大小,同时会根据特定条件判断窗口内获取的中值是否是噪声,如果不是则用中值替换当前像素;不是,则不作改变。同理,在MBP中,采用一个小区域获取阈值可能会丢失重要的信息,而一个大的区域获取阈值则可能会由于涉及大量的像素而产生有偏的中值。而且一幅图像中由于上下文的变化,不同的位置其合适的区域大小是不同的,恒定大小的分析窗口无法处理图像中的所有变化,自适应窗口能提供一个很好的选择。而局部二值模式选取邻域计算局部特征的思想类似于均值滤波和中值滤波,因此可以将自适应的思想应用到LBP中,根据每个中心像素位置上的某些判断条件而改变其分析区域。采用自适应方式,考虑中心像素周围较大的分析窗口来计算局部中值,从而更灵活地选择阈值使灰度图像转换为二值模式。具体可以分为两步。第一步是判断在某个邻域内获得的局部中值是否为噪声,在这种情况下,窗口大小会逐步增加,直到达到最大窗口大小为止,或者直到中值不是噪声为止。第二步是判断中心像素是否是一种噪声信号,如果局部中值和中心像素都不是噪声,那么保持中心像素不变。但是,这一方法在用于检测无噪声数据中的局部二值时并不适用,因为在这些数据中,极值并不显著,因为此时极值并不显著,为了解决这个问题,引入了某个值作为极值的补正。假设F(i,j)是像素点(i,j)的局部邻域,点(i,j)的像素值是gc,设定一个自适应参数μ,它是局部邻域像素点和中心像素点灰度值的差分幅值均值:
(4)
则阈值判断条件可以记为:
Zmin+μ (5) 式中:Zmin是局部邻域F(i,j)中的最小像素值,Zmax是局部邻域F(i,j)的最大像素值,Zmed是局部邻域F(i,j)的像素中值。综合式(2)和式(3)得出对于任意一幅图像S,具体的自适应阈值τ的选取过程如图2所示。 图2 自适应阈值选取流程 值得注意的是在选取自适应阈值的过程中,虽然采用的是方框邻域,但是在计算局部二值模式的时候是可以采用圆形邻域的。为了验证选取自适应阈值的必要性,分别在CuRet和Outex_TC10数据库上进行验证。在CuRet数据库的61种纹理中,每种随机选取10幅图片,在Outex_TC10数据库的24种纹理中,每种随机选取20幅图片,分别按上文给出的流程计算自适应中值和中心像素值作为阈值的比例,结果如图3所示。在CuRet数据库的样本上,自适应中值作为阈值的比例是33.63%,中心像素值作为阈值的比例是66.37%;在Outex_TC10数据库的样本数,自适应中值作为阈值的比例是27.12%,中心像素值作为阈值的比例是72.88%。从上述结果可以看出,自适应中值作为阈值的比例并不低,说明了采用自适应阈值方法的必要性。 图3 自适应阈值的比例 DAT-CLBP是为了解决完整局部二值模式对噪声鲁棒性差和不具有旋转不变性的问题而提出的改进方法。针对噪声,采用了自适应阈值,而为了解决算法的旋转不变性的问题,虽然Ojala已经提出的旋转不变LBP,但是这种方法计算量大,相对于描述子更多,维度更高的CLBP算法而言,会增加计算的复杂度,因此采用了一种更简单解决旋转不变性的方法,那就是选取主导方向。具体如下:分别计算各个采样点和中心像素点S(i,j)的差分幅值,从差分幅值最小的像素点按差分幅值从小到大增加各像素点的LBP加权值。综上DAT-CLBP的具体方案是:对于图像S上的任意带计算像素点S(i,j),首先根据2.2节提出的自适应方法计算。 二值化阈值τ(i,j),然后计算局部邻域(P,R)的主导方向,根据主导方向来计算像素点S(i,j)的完整局部二值模式,计算方法如下: (6) 式中:mp=|gp-τ(i,j)|,m是mp的均值。图4是在Outex_TC10数据库上的纹理图像的原图、LBP提取的特征图和DAT-CLBP提取的特征图。 (d) DAT-CLBP_M纹理特征图图4 常用纹理库上的纹理图及提取的纹理特征图 为了验证本文提出的特征提取方法的有效性,在常用数据库Outex_TC10、Outex_TC12和CuRet数据库上用DAT-CLBP方法进行纹理分类测试,验证采用的是P=2,R=8圆形局部邻域和SVM分类器,同时最大窗口尺寸设置为9×9。 Outex_TC10包含有24种纹理图像,每种纹理有0、5、10、15、30、45、60、75、90等9个旋转角,每种角度20幅,拍摄条件为Inca光源。选取每类纹理的前20幅图片作为训练样本,剩下的样本作为测试样本。Outex_TC12同样有24种纹理图像,但是在3种光照条件下拍摄。选取Outex_TC12上拍摄光源为Inca,角度为0的图像作为训练样本,剩下两种光源下所有角度的图像为测试样本。CuRet数据库包含有61种纹理,每类纹理包含205个样本;样本是在不同的光照、角度下采集自现实事物的表面,包含了复杂的光照、旋转和尺度变化,将其中92幅拍摄幅度小于60度的图像[14],随机选取其中的46幅图像作为训练样本,另外46幅图像作为测试样本。分类结果如表1所示,其他方法的结果来自文献[15],其邻域尺寸设置和分类器种类与本文相同。 表1 不同LBP方法的结果比较 % 从表1中可以看出,在三种纹理库上CLBP算法和DAT-CLBP算法的识别效果远好于LBP和MBP,这是因为后两者没有考虑到图像的全局特征,而前两者算法不仅考虑了局部纹理的互补信息,还添加全局特征作为补充,因此能更全面地描述图像的纹理特征,所以识别率会提高。DAT-CLBP相比于CLBP,在三种纹理库上,识别效果都有了一定的提高,原因是采用了自适应阈值而不是单纯的中心像素值,这在2.2中已经通过实验证明是有必要的;同时在三种纹理库上,DAT-CLBP相比CLBP在Outex_TC12上提升是最大的,这是因为Outex_TC12中的图像同时包含了旋转和光照的变化,相比DAT-CLBP,CLBP没有考虑到旋转和光照不变性;而在CuRet纹理库上,两者的表现并无很大差别,根据推测,这是因为CuRet上的样本还具有尺度变化,而两种算法都没有将尺度变化考虑在内。综合来说,从表1可以看出,DAT-CLBP算法相对于其他三种算法有了一定的提升,且具有一定的光照和旋转不变性。 如上文所说,椒盐噪声是数字图像中出现最频繁的噪声,因此为了验证算法对于噪声的鲁棒性,给Outex_TC10的测试样本添加不同程度椒盐噪声,训练样本不添加噪声,用DAT-CLBP方法进行纹理特征提取,并用支持向量机进行分类实验,将结果与其他的方法的测试结果进行对比[14-15]。表2中ρ表示添加的椒盐噪声的分布密度。图5为Outex_TC10上添加分布密度为0.3的椒盐噪声后的纹理图像以及纹理特征图。 表2 Outex_TC10上添加不同程度椒盐噪声后算法结果 % (a) 加噪的图像 (b) LBP纹理 (c) DAT-CLBPS(d) DAT_CLBPM图5 添加椒盐噪声后的纹理图和纹理特征 从表2的结果可以看出在添加椒盐噪声后,LBP算法和CLBP算法的识别率随着椒盐噪声分布密度的增大而大幅度下降,到ρ=0.4时,LBP方法下降了68.93%,CLBP下降了37.59%,说明了它们很难处理椒盐噪声。MBP算法相比于LBP和CLBP算法,其下降幅度相对小得多,到ρ=0.4时,只下降了22.55%,说明中值作为编码阈值确实能对椒盐噪声有一定的鲁棒性。但是其识别率远低于本文的方法,这是由于中值会损失图像的原始信息,所以识别率并不高。而本文的算法由于采取自适应阈值,既能相对完整地保存图像信息,又能加强对于椒盐噪声的鲁棒性。抗噪的CELBPNT算法在椒盐噪声较小时,识别率下降较小,但是在ρ=0.3以后,识别率显著下降,这是由于此方法主要是通过均值降采样来增加其对噪声的处理能力,对于椒盐噪声的处理能力相对较差。而DAT-CLBP算法到ρ=0.4时,识别率只下降了1.15%,说明其对于椒盐噪声有着较强的鲁棒性。 3.1节的实验中,DAT-CLBP算法在CuRet纹理库上的识别效果相对于CLBP算法并没有太大进步,可能的原因是由于CuRet中纹理图像的尺度变化干扰了结果。其原因是随着图像尺度的变换,同一物体的成像内容也有所变化,尺度较大时,图像突出的是物体的轮廓,而尺度较小时,图像对于物体细节的描述能力增强[16]。某些特征在一种尺度下无法被检测到,但是在另一种尺度下则能被检测到。为了验证这个猜想,设计了一个实验:以CuRet纹理库为实验对象,采取P=2,R=8圆形局部邻域和SVM分类器进行实验。实验前,采用的特征提取方式是首先借鉴高斯金字塔[17]的思想,通过高斯卷积获得同一幅图像的一系列尺度变换,然后分别计算多个尺度下该图像的DAM-CLBP值,然后联合成一个特征向量。本实验分别建立了2层、3层和4层的尺度图像并进行实验,结果如表3所示。 表3 CuRet上在不同尺度下算法的实验结果 % 从结果可以看出,在采用了多尺度特征后,算法的识别结果确实有了一定的上升,说明之前的问题确实应该是尺度变换造成的。但是当尺度层数超过3以后,识别结果又出现了下降,这应该是由于多次高斯卷积后图像过于模糊,反而影响了后续的识别效果。 本文在完整局部二值模式的基础上,提出一种带方向的自适应阈值完整局部二值模式。该方法首先通过一定的判别条件,在邻域像素中值和中心像素值中选取一种作为LBP编码时的阈值,然后计算邻域像素和阈值的差分的幅值,并以幅值最小点为起点,从小到大进行编码,计算其完整局部二值模式。实验结果表明,在二值编码时有必要采取自适应阈值,采取自适应阈值进行编码后,本文算法能提升纹理图像分类的性能,并且对于椒盐噪声有很好的鲁棒性。针对在CuRet纹理库上出现的识别结果相对较差的问题,进行了多尺度下的验证实验,证实了算法在尺度变换上有待改进。2.3 DAT-CLBP算法
3 实验与分析
3.1 Outex和CuRet数据库上的对比实验
3.2 多尺度DAT-CLBP验证试验
4 结 语