闵涛1,蒋宜勤2,滕奇志1,周基贤2,何小海1
(1.四川大学 电子信息学院 图像信息研究所,四川 成都 610065;2.新疆油田分公司实验检测研究院,新疆 克拉玛依 834000)
摘要:直线段特征作为图像中一种特殊的纹理信息,是图像分析、目标识别中的基本元素。矿物的双晶等光学性质在矿物显微图像中表现为具有定向性的直线段。针对矿物图像,提出了一种基于图像梯度信息的动态阈值区域生长的直线段检测算法。该算法能通过提取边缘梯度方向相似的边缘从而得到候选直线段区域,并根据直线段区域内特征点的密度大小判定区域有效性以达到降低矿物图像中噪声、其他纹理造成的误提取。实验结果表明所提算法能够提取矿物图像中的直线特征。
关键词:直线段特征;矿物显微图像;梯度信息;动态阈值;区域生长
0引言
在石油地质领域中,研究人员主要是通过在偏光显微镜下观察岩石的光学特性来对岩石进行鉴别。这种在镜下直接观察的方式受人为因素干扰较大,智能化不高。实现基于图像处理的岩石颗粒识别,能够有效减轻石油地质工作人员的工作量,而长石族作为分布最广泛、最重要的一类造岩矿物,实现对其的分类对于岩石分类命名有重要意义。
矿物在偏光镜下的双晶、解理、裂理等特征在图片上表现为目标表面出现一定规律分布的线特征。本文针对长石类矿物在正交偏光下易呈现出特殊的线特征,通过提取这些规律存在的线特征可以对长石族矿物进行初步细分。直线特征的检测与提取一直以来都是图像处理和分析的一个重要问题[12]。
参考文献[3]提出了一种基于区域生长,借助图像梯度的强度与方向信息的直线段检测方法,通过结合特征点的位置信息和梯度方向信息,能够很好地抑制目标内部中纹理边缘所造成的伪直线。参考文献[4]对参考文献[3]做了改进,减少了计算量,提高了检测率,但是其算法对于大小不同的目标直线提取效果不稳定。参考文献[56]与参考文献[3]同样利用了图像中的梯度信息和位置信息对图像中的直线进行提取。参考文献[7]提出通过PCA得到边缘点的主元方向和梯度方向信息,然后按照方向相似性连接边缘得到直选段。通过连接梯度方向相同的边缘点得到直线在复杂图像如矿物图像中会出现大量的直线断裂的情况,主要原因是在复杂条件下矿物图像中的直线段不标准,且受到了量化噪声的影响。
为了减少在具有复杂纹理的矿物图像中的直线段检测中发生的直线断裂现象,本文提出一种结合图像梯度信息、动态阈值区域生长与参考文献[1]中使用相同的直线区域有效性检测策略的直线段检测算法,能够实现精准、快速的直线段特征提取,并将其用于表面纹理复杂的长石矿物的识别中,能够实现对长石中具有线特征分布的斜长石和碱性长石的分类。
1矿物直线特征提取
矿物图像中的直线特征提取算法主要分为图像梯度计算、基于梯度的动态阈值区域生长策略、生长区域的矩形拟图1直线段检测算法流程图
合和最后的矩形区域有效性检测4部分。对图像整体的处理流程图如图1所示。
对图像的所有点计算其梯度,并将所有点的梯度按照降序排列,该顺序也作为种子点进行区域生长的顺序,生长结束后对区域进行矩形拟合并检测该矩形的有效性,如果矩形有效,便记录该矩形的参数如首尾点的坐标、长度等。这表示已经检测到一条直线段。随后将拟合成该矩形区域内的所有点标记为已使用;如果矩形无效,则继续取下一个未标记为使用的种子点开始区域生长,直到所有点都区域生长过,算法结束。
1.1图像的梯度
图像的梯度反映了图像中相邻像素间的灰度值的变化关系,计算图像的梯度对于检测图像的边缘结构有着十分重要的意义和作用。一般通过使用梯度算子模板得到图像的梯度信息,常见的梯度算子包括Roberts算子、Prewitt算子、Sobel算子和Laplace算子。
参考文献[6]比较了多种梯度算子,认为图2所示的梯度算子能够更好地计算梯度方向,该算子是Roberts模板图2X方向和Y方向的梯度算子模板的修改版,2×2大小的模板能够尽可能地降低计算出图像中各像素梯度值的相关性,也可以提高算法的抗噪声能力,本文采用的便是该梯度算子。
1.2采用动态阈值的区域生长策略
区域生长的基本思想是将具有一些相似性质的像素集合起来构成区域。其一般步骤是从某个像素点开始,这个像素点也被称为种子点,按照某种规则逐步加入相邻像素,直到满足一定的条件时,区域生长结束。影响区域生长的效果和效率的关键包括:初始点(种子点)的选取、生长准则和终止条件。
本文与参考文献[1]一样采用的是贪心算法的区域生长策略,这样能够减少算法的时间代价,提高线特征提取速度。每个边缘点只能属于一个区域,所以在区域生长过程中需要对边缘点记录状态,当所有边缘点都已使用或者是没有像素可进行生长时,生长停止。
对于图像而言,像素梯度值越大其属于图像的边缘的概率越大,即越有可能是所需要的直线段上的点。因此本算法中的区域生长策略采用的是将梯度值较大的点作为区域生长的种子点,所以在进行区域生长之前先对图像上的所有点按梯度值进行降序排列,然后按照排列好的顺序作为种子点开始区域生长。
生长方向是以5×5的领域方向向外生长。生长准则规定了领域内的点加入本区域的条件。基于梯度信息的区域生长准则就是邻域点加入到区域内的条件是区域点的梯度方向与区域主体的梯度方向的差值在一定的阈值范围之内。这里点的梯度方向是梯度算子计算出的梯度方向旋转90°后的方向,旋转是为了保持直线的方向与点梯度方向一致。
本文在生长准则上采用了动态阈值的策略。动态阈值是相对于固定阈值而言的,其阈值会在区域生长的过程中随着当前区域内像素点梯度方向的分布而作调整。区域状态即区域内特征点的梯度方向的分布情况,表征了当前区域的有效性大小。
区域的角度是区域内所有点的梯度值的综合,具体计算方式如式(1)所示。
其中,θR为区域R的角度,θj为该区域内点j的梯度角度值。
阈值的调整策略影响整个区域生长的效果,初始角度阈值设置为π8,阈值变化范围设置为π8,π4,如果阈值过大,则在区域生长过程中会出现许多误连接,因此必须设置一个阈值变化的最大值,以防在生长过程中由于多次满足阈值增长条件,使得阈值变得过大,该值设置为π4,这个阈值能保证在合并更多边缘点的情况下抑制噪声点。本算法为实现高效的阈值动态调整,设置了两个调整策略和每次调整的阈值步长ΔTH,这里将ΔTH设置为π16,两个调整策略包括阈值提升调整和阈值下降调整。为减少整个动态调整的计算量,设置一个动态阈值开关SWITCH,一开始SWITCH状态设置为OFF,当区域合并K个像素后自动将SWITCH状态设置为ON,每当经历过一个阈值提升调整或阈值下降调整后将SWITCH状态改为OFF,这里将K设置为15。
阈值调整算法主要分为两部分,一部分是阈值提升,另一部分是阈值下降。进行阈值调整的条件是根据最后合并到区域内的N点其梯度方向的方差,如果低于一个固定值VDTH表明当前区域线性状况良好,则将当前的阈值增加一个阈值步长ΔTH;如果该方差高于一个固定值VUTH,表明当前区域线性状况不佳,则将当前阈值降低一个阈值步长ΔTH,其中N的值一般设置为10。如果调整后的阈值不在之前设定的阈值范围π8,π4内,则此次阈值调整无效,恢复之前的阈值。
为了减少计算量,加快运行速度,计算最后合并到区域内的N点其梯度方向的方差采用了与梯度方向的均值之差的绝对值之和来替代,具体计算公式如式(2)所示。
1.3区域的外接矩形描述及区域有效性检测
通过区域生长算法得到直线段的候选区域后,在分析这个区域之前,要找到一个该区域所对应的直线段,一个相对直接、简单的方法是直接通过最小二乘法进行直线的拟合,但是通过最小二乘法拟合在纹理较多、边缘不清晰的情况下容易得到错误的直线段。本文采取了与参考文献[1]相同的方法,通过最小外接矩形来描述候选区域,每个像素的梯度值作为权值参与外界矩形中心位置的计算,具体公式如式(3)、式(4)所示。
其中,Rg代表某个区域,G(j)代表Rg内第j点的梯度大小,x(j)代表Rg内第j点的x坐标值,y(j)代表Rg内第j点的y坐标值。
在确定矩形中心后,将矩形的主方向设置为区域的第一惯性轴方向,真正的计算中是将矩阵M中最小特征值对应的特征向量的方向作为矩形的方向,矩阵M如式(5)所示。
最后,在矩形能够包含区域内所有点的基础上,选取其中最小宽度值与长度作为矩形的宽度与长度。
本文算法采用了以参考文献[3]定义的矩形NFA值作为对区域有效性的检测标准。
2具有丰富纹理的矿物图像中直线段检测结果
图3是本文算法应用于出现典型双晶现象的碱性长石和斜长石的直线段特征提取效果。
图3(a)中是一颗出现了复杂聚片双晶现象的斜长石,图像上表现为片状分层。图3(d)则是一颗出现简单接触双晶现象的碱性长石,图像上表现为分块。参考文献[3]提出的线段检测算子(Line Segment Detector, LSD)对于图3(a)有较好的提取效果,但提取结果中出现了较多的直线段断裂现象,并且伴随着一些直线段误检测现象。图3(d)是尺寸较小的图,从提取结果中可以看出LSD算法对于该图效果较差,而采用了自适应图像尺度的本文算法保证了稳定的提取效果。出现典型双晶现象的碱性长石和斜长石矿物图像上都会表现出很强的定方向性,表现为目标表面出现的直线段在某个方向上占很大比例,这个方向称为主方向。通过比较主方向上直线总长度与提取出的直线总长度在一定程度上能够体现对具有典型特征的长石矿物的直线段特征提取效果。图4是本文算法与LSD对50组具有典型特征的长石矿物目标的提取效果比较,横坐标为目标序号,纵坐标代表了该序号下本文算法与LSD算法提取的直线段中主方向直线段占所提取出直线段比例的差值,差值为正表示本文算法提取出的主方向直线段比例高于LSD算法所提取出的主方向直线段比例。从图中可以看出本文算法提取出的主方向直线比例基本都比LSD所提取的高,只有在其中几组目标的提取比例上LSD占优势,其主要原因是LSD未能提取出所有特征直线,而本算法提取的特征直线较多,然而在提取尽可能多的同时也误提取出了噪声直线,导致提取比例低于LSD。
图3(a)与图3(d)之间的差别在于主方向上直线段的分布状况不同,碱性长石的特征直线段只有一条,虽然因为断裂会分成多条,但这多条直线段都处于同一条直线上。而斜长石对应的是多条平行直线段。这个差异可以通过检测出的主方向上直线段与图像原点的距离变化来体现,即原点间距离。图5是碱性长石与斜长石中主方向上的直线段按照与原点的距离形成的分布直方图,横坐标表示直线段的序号,纵坐标表征按照目标大小归一化后的原点间距离。从图5(a)中可以看出碱性长石直线段较少,且直线段之间的原点间距离差异很小;图5(b)中斜长石主方向上直线段数量较多,且直线段之间的原点间距离差异大。为了定量地描述两种长石检测结果的差异,本文定义了一个主方向直线离散度(σpd)参数,该参数的计算方法如式(6)所示。
其中,pd(primary direction)为主方向上的直线段集,s为其中的直线段,sd为直线段s与坐标轴(正交直角坐标下)原点的距离,sl为直线段s的长度,d是主方向上所有直线段与原点距离的加权平均值。σpd反映了主方向上的直线段与原点间距离的离散程度的度量,碱性长石主方向上直线段几乎都处在同一条直线上,所以直线段的原点间距离较为集中,表现为σpd较小;而斜长石主方向上直线段呈平行线状,直线段的原点间距离较为分散,表现为σpd相对较大。
将一个碱性长石目标与一个斜长石目标作为一组,通过使用直线图6中是使用LSD算法和本文算法对12组碱性长石和15组斜长石样本进行计算其σpd的结果。图6(a)是LSD算法处理得到的目标主方向直线离散度的分布图,而图6(b)是使用本文算法处理得到的分布图,总体而言,碱性长石的σpd较斜长石的要稍小,两类长石有一定的区分度,LSD算法得到的碱性长石和斜长石的主方向直线离散度较本文算法得到的要高,因为LSD算法在提取直线特征的同时,提取出了许多噪声直线,这些噪声直线有部分被当作主方向直线,从而增加了主方向上直线段与原点间距离的离散程度,表现为σpd偏大。本算法计算出两类长石的σpd区分度较LSD算法得出的稍大,主要原因在于矿物目标大小各异,本文算法较LSD对于不同大小的目标具有较高的提取准确性。
3结论
针对矿物显微图片成分复杂,存在不同成分镶嵌的现象,各成分边界不明显,纹理复杂的特点,本文采用了基于动态梯度方向阈值的区域生长算法来提取矿物显微图片中可能存在的双晶、解理和裂理等在图像中表现为具有定方向性的特征。算法应用于长石矿物的结果表明,本文算法能够基本实现矿物显微图像中的直线特征提取,提取的特征值可用于后期两种矿物的分类。
参考文献
[1] 董银文, 苑秉成, 石钊铭,等. 基于直线特征的航拍图像机场跑道自动识别算法[J]. 系统工程与电子技术, 2013,35(4):876879.
[2] 丁伟利, 王文锋, 张旭光,等. 基于边缘方向图的建筑物直线特征提取[J]. 光学学报,2010,30(10):29042911.
[3] GIOI R G V, JAKUBOWICZ J, MOREL J M, et al. LSD: a line segment detector with a false detection control[J]. IEEE Transaction on Software Engineering (Impact Factor: 5.78),2010,32(4):722732.
[4] 覃勋辉, 马戎, 付维平,等. 一种基于梯度的直线段检测算法[J]. 光子学报, 2012, 41(2):205209.
[5] 牛照东, 刘洋, 陈曾平. 利用自适应相位分区和边缘位置约束的直线提取新方法[J]. 中国图象图形学报, 2011,15(12):17551761.
[6] 夏军营, 徐小泉, 熊九龙.利用梯度信息快速提取直线边缘特征[J]. 中国图象图形学报, 2012, 17(8):987994.
[7] 董晶, 杨夏, 于起峰. 基于边缘连接的快速直线段检测算法[J]. 光学学报, 2013, 33(3):213220.