高于科,章 伟,胡 陟,江鹏伟
(上海工程技术大学 机器人智能控制实验室,上海 200093)
图像匹配是计算机视觉领域中的研究热点之一,匹配算法常被用于图像之间的目标匹配,在目标识别、三维重建、运动分析以及图像拼接等领域都具有广泛应用。基于局部不变特征的匹配方法在图像匹配领域发展最早[1],在实际运用中更具有灵活性,匹配结果鲁棒性好,因此基于局部不变特征的匹配方法是目前的主流研究方向之一。
基于局部不变特征的匹配算法主要克服了图像的偏移、旋转、尺度缩放以及噪声等困难。文献[2~3]采用点特征算法作为前端输入。文献[4]提出一种改进的线特征方法用于匹配。文献[5]根据点特征构造SURF(Speeded Up Robust Features)和颜色的局部特征进行匹配。文献[6]对点和线特征结合的方法进行匹配。相比于点特征匹配,线特征的描述符能够更有效地携带图像信息,匹配效果鲁棒性更好。
近年来有不少优秀的线段检测的方法被提出[7-9]。大多数情况下,RNFA[10]边缘链检测方法比其他检测器的检测效果好且误报率低[11],并且相对其他方法,其可以检测出梯度较弱但在视觉上有意义的边缘链。
但是,绝大多数线特征匹配[12-14]只考虑目标存在旋转、偏移以及缩放等变换,未考虑目标在镜像中存在对称性翻转。而物体和平面镜像之间的匹配是识别类镜面反射环境的有效途径,可用于在较为平静的内河水域水岸环境进行特征匹配[15],也用于可识别室内中镜面环境[16]。为了实现物体和平面镜像之间的匹配,本文采用携带信息更为丰富的线特征方法,从边缘链检测中引用RNFA方法,在图像中生成更丰富的线段输入。由于线段描述符LBD[17]方法过于依赖线段的方向,导致在物体和平面镜像之间的匹配结果较差。针对该问题,本文提出了一种改进算法,并通过实验结果验证了该算法的合理性。为了提升该算法的正确匹配率,本文提出了寻找全局投影角度和拟合投影中线的方法用于剔除误匹配对。实验结果表明,该方法具有良好的鲁棒性。
对于镜像空间的匹配算法分为3个过程:1)采用RNFA方法和构造高斯模糊金字塔进行线段的识别和提取;2)构造区分效果明显的线描述符;3)对线段进行匹配和优化。
第1步工作是对图像中的线条进行检测。本文采用RNFA方法检测出图像的边缘链,将该边缘链进行最小二乘法拟合得到直线段,并以此直线段作为线段匹配方法的输入。
将图像以多尺度的层次表达,并在不同的尺度下对图像分别处理是多尺度技术的关键[18]。多尺度技术有助于提升匹配效果,提高图像检测的鲁棒性和性能。本文采用多层高斯模糊金字塔模型方法构造多尺度图像,并且在每层图像中都执行一次RNFA边缘链检测,并构造对应图层线段,对应图层检测出的直线段都会与原图层对应位置检测出的直线段进行比较。本文使用线段上的像素梯度作为比较依据,如果两条线段在相同区域方向一致,则这些线段会被储存到同一组线段组中。在原始图层中检测出的直线段会被分配到一个具有唯一身份标识的线段组,用于储存原图层的线段和在其他图层中匹配的线段。
实验发现图像金字塔低于4层时,多数线段组中仅包含一至两条线段。为了提升线段组中线段数量,在算法中设置高斯模糊的图像金字塔为5层。在图层0中检测出的线段会对其在其余每个图层所对应的匹配位置执行像素梯度比较,若检测出的线段与原图层对应位置的线段匹配,则会储存到同一组线段组中。图1展示了两组线段组的构造。
图1 5层高斯模糊金字塔模型Figure 1. Gaussian blur pyramid model with five-layers
实现线段之间的匹配,需要对检测出的每条线段构造线描述符。在线描述符内需要包含该线段和周围环境信息,以便进行匹配工作。受线段带描述符LBD方法启发,本文采用类似LBD方法构造用于计算描述符的线段子区域,并阐述计算线段描述符。
在完成了线段的检测后,对每个检测出的线段,以该线段为中心,可以构建一个方形的线段支持域。平行于该线段的一组宽度为n像素线段{L1,L2,…,Lj,…,Ln-1,Ln}构成一条带,m条带 {B1,B2,…,Bj,…,Bm-1,Bm}叠加而成方形区域构成该线段的线段子区域。图2展示了一个带宽度为5像素,由3条带构成的子区域。
图2 线段子区域和局部方向示意图Figure 2. Line segment sub-region and local direction schematic
根据边缘链检测原理以及图像中平面投影角度等因素影响,在同一张图像中匹配的线段不一定具有对称的方向。为了改善该情况带来的影响,对线段子区域引入两个方向的局部二维坐标。如图2所示,直线方向Ld的顺时针正交方向被定义为L⊥,和L⊥相反的方向被定义为LT。在线描述符的计算过程中需要将线段子区域中的所有像素梯度投影到这两个方向的局部二维坐标系,投影过后的像素梯度分别被定义为Pg=(gL⊥,gLT)。其中,gL⊥=go×L⊥表示局部像素梯度gL⊥由原始图像的像素梯度go经过沿着L⊥方向的局部坐标变换获得。同理,gLT=go×LT表示局部像素梯度gL⊥由原始图像的像素梯度go经过沿着LT方向的局部坐标变换获得。
单独的局部坐标系构造的描述符和线段的方向具有较强的关联性。本文构建的子区域引用两个方向相反的局部二维坐标,能够有效减少被检测出的线段自身方向造成的干扰。
此外,对于每条带Bi,根据局部坐标像素的梯度值的正负,分两组分别对每行求其梯度和,如式(1)所示,表示对第k行其梯度求和。
(1)
对于每条拥有n行的带Bi,有
(2)
每条带Bi可由[ui,vi]表示,为了防止描述符的突然改变,相邻的带Bi-1、Bi+1也需要被计算进去。因此,最终Bi可表示为
(3)
对在线段子区域中的所有m条带{B1,B2,…,Bj,…,Bm-1,Bm}执行式(1)~式(3)的计算,可以获得一个2×m的矩阵MB,如式(4)所示。
(4)
将矩阵MB拉直,并在每个元素后加上该元素的平方,获得该线段的描述符的最终表示形式,为
(5)
其中,Sui、Svi分别是ui、vi的平方。为了方便后续计算和比较,VB以正则化向量形式储存。
线段描述符的构建方法已在章节1.2中解释。对于检测出的所有线段组,线段组中的每条线段都会生成一个描述符。对于不同线段组,例如线段组i和线段组j,算法中会计算其线段的线描述符的差和,并用描述符差和的最小值difij表示线段组i和线段组j之间的外观相似程度。以图1所示图层0的线段为例,在一张图片中识别出k条线段,则k组线段组之间的外观相似度,即描述符的差和,会用一个k阶邻接矩MA∈k×k阵储存。随后对外观相似程度设置一个阈值difmin,在邻接矩阵中,每根线段和其余线段中相似程度最高,即描述符差和最小的一对,会经过一次阈值检测,只有低于阈值difmin的匹配对会被纳入候选匹配对。
线段的匹配通常用于两张图之间的匹配,文献[19]假设两张图像间有全局旋转角,用于优化匹配工作。受此启发,对镜像投影的匹配可以通过寻找全局投影角度用于后续优化。
首先,对每个满足阈值条件候选匹配对,以这对线段在图像中相对方向作为这对线段的投影角度,构建一个投影角度的直方图,用于记录所有候选匹配对的投影角度密度分布,选取其中投影角度分布密度最高的区域作为全局投影角度。
图3展示了不同阈值匹配对投影角度分布情况。可以观察到投影角度最密集的区域集中在72°。受被观察物体远近、视角遮挡以及线段的生成等影响因素,正确匹配对的投影角度会有一定歪曲。因此,为了提高该方法的鲁棒性,在算法的实现中会放宽全局投影角度的范围以及最高密度的投影角度相邻的区域,只要在最高密度数量的80%以上,都会被认为是全局投影角度的范围。
图3 投影角度分布Figure 3. The distribution of projection angle
在完成全局投影角度选取后,在符合全局投影角度范围内的所有匹配对都会被复制到候选匹配对组P中,在候选匹配对组P中仍可能存在误匹配项。为了提高匹配的稳定性,本文提出投影中线用于提升算法的鲁棒性,寻找投影中线的这一步骤建立在全局投影角度选定后的基础上。首先,需要计算候选匹配对组P中所有匹配对在图像上的中点位置,并用来拟合直线。同时,为了保证匹配对中位于投影中线的两侧,需计算匹配对中的两根线段a和b到投影中线的距离,并表示为Disa和Disb。计算候选匹配对组P中匹配对的中点位置距离该直线距离,表示为Disab,候选匹配对组Pα中匹配对的清洗遵循以下两个原则:
1)如果2(Disab+1) 2)删除Disab过大的匹配对。 将剩下的匹配对覆盖原先的候选匹配对组P,继续之前的计算中点拟合直线,直到不再删除匹配对为止。清洗完成后,最后一次拟合的直线被定义为投影中线。完成上述步骤后,获得这次匹配工作的两个重要参数,全局投影角度和投影中线。 为了提升召回率(正确匹配的数量与正确的总匹配数的比值),在完成迭代循环用于剔除误匹配项后,本文所提算法会提高阈值difmin。对于一组经过迭代循环清理过的匹配对组P,算法会在原邻接矩阵MA∈k×k中寻找剩余的线段,并在剩余线段之间寻找满足阈值difmin的匹配对,验证其相对位置是否满足全局投影角度和投影中线。如果满足,加入匹配对组P中,直至完成。 在镜像空间的匹配工作中有两个重要属性,分别是全局投影角度和投影中线。以图4为例,带箭头的线段是算法检测出的线段。在图4中已用虚线的连线表示在真实物体到镜像空间投影上的线段,两条线段之间相对方向为全局投影角度。本文使用匹配的线段连线方向作为该图像的全局投影角度,并以连线的中点拟合而成的直线作为投影中线。 图4 全局投影角度和投影中线Figure 4. Global projection angle and projection midline 综上所述,本文的算法流程如图5所示。 图5 镜像线特征匹配流程Figure 5. Flow of line segment matching of mirror image 实验将改进后的LBD算法和原算法在寻找全局投影角度和在投影区间的匹配对准确度上使用未经过后期优化处理的匹配结果进行比较,实验结果如表1所示。为排除其他干扰因素影响,本文实验的线段生成方法和阈值difmin固定,匹配方法采用暴力匹配,即对每条检测出的线段,遍历剩余线段,寻找外观相似程度最相似并且评分低于阈值difmin的线段,并且寻找全局投影角度,将全局投影角度的结果用于统计准确度并比较。 表1 准确度对比Table 1. Comparison of accuracy 本文列举了4组不同的测试样本,如图6所示。在图集1中,图像被分割为真实物体和镜像投影两个部分,真实物体的可见部分均被投影到镜面环境中。在图集2中,图像被分割为真实物体和镜像投影两个部分,投影经过旋转,真实物体只有一部分在镜像投影中可观察到。在图集3中,真实物体只有一部分在镜像投影中可观察到,并且由于观测视角过偏,镜像投影中物体影像在图像上未显示的部分呈现了一部分真实物体,并存在一部分形变和拉伸。在图集4中,选用了平静水面作为镜面,图像被分割为真实物体和镜像投影,镜像投影中物体影像在图像上未显示的部分呈现了一部分真实物体,部分水体中存在干扰,导致投影存在扰动。 图6 测试图像集Figure 6. Test image set 表1展示了图6中的图像集测试结果,阈值difmin取0.3。MP表示匹配对结果数量,EP表示错误匹配对数量,MR表示准确度,如式(6)所示。 MR=(MP-EP)/MP (6) MRA表示当前行准确度的平均值。 实验结果如表1所示。本文提出的算法在4组图集中均取得优于原算法的效果,在图集4这种真实镜面环境中获得94.36%的结果,明显优于原LBD算法的89.03%。原LBD算法效果欠佳的一部分原因是该算法只考虑了旋转不变性,生成的描述符和线段的方向呈强关联性,而本文方法则降低了线段方向对描述符影响因素,取得较好的效果。此外,本文匹配算法不需要对过于复杂的矩阵求解,算法实时性更好。 章节1.3阐明了对匹配结果进行优化的方法,在实验中Disab的值设置为8,经过拟合投影中线后,剔除处于全局投影角度区间中的误匹配对。此外,在对候选匹配对完成清洗后,实验将difmin提升到0.6,在剩下的候选匹配对中寻找可能正确的匹配对,并加入匹配结果中。表2展示了召回结果。CMP表示最终匹配结果中正确匹配对数量,TMP是总正确匹配对数量,RCR是召回率。 表2 召回率对比Table 2. Comparison of recall 如表2所示,经过优化后,匹配结果中正确匹配对数量均有提升,最终,本文算法能够达到90%以上的召回率。 图7和图8分别展示了一个经过优化前后的结果,图7为未优化的匹配对在图像中的展示,图8为优化过后匹配对在图像中的展示。图7和图8使用同一灰度的线段表示实际物体和镜像间的匹配成功的线段对,并用细线连接匹配对。图7使用竖直实线标注出错误匹配的线段,图8已剔除错误匹配对,并用竖直虚线标注出相对于图7新召回的匹配对。相比优化前,优化后能够剔除绝大多数误匹配对,召回率达到90%,表明优化处理能够充分利用检测出的线特征信息。 图7 优化前的匹配效果Figure 7. The match pairs in picture before optimization 图8 优化后的匹配效果Figure 8. The match pairs in picture after optimization 本文采用了基于RNFA边缘链检测方法来生成线段,并用一种改进的LBD算法生成线描述符。相比原算法,本文算法在镜像翻转情况下的特征线匹配效果鲁棒性更好。为了提高匹配结果的准确度,本文提出了基于全局投影角度和投影中线的误匹配对剔除方法。经实验验证,本文算法在旋转拉伸、光照不匀以及扭曲扰动等情况下,都能够较好地实现物体和平面镜像之间线特征匹配。现有的图像匹配、运动估计在具有镜面反射环境的情况下存在识别困难的情况,本文算法可用于识别镜面反射区域及寻找物体和镜面的投影方向。将本文算法用于识别镜像空间将是今后的研究方向。2 实验结果及分析
3 结束语