刘群坡,席秀蕾,杨凌霄
(河南理工大学 电气工程与自动化学院,河南 焦作 454000)
立体匹配是双目视觉定位中的关键环节,在零件装配领域中应用十分广泛。快速准确地找到被测零件并解算出其位姿信息是目前亟需解决的一大难题。许多计算机视觉任务,例如动作识别、运动跟踪、机器人导航和视觉定位都依赖于从目标图像的不同视图提取局部特征实现匹配[1]。玻璃封装电连接器是一种连接精密零件模块和内部电路的器件,其体积较小(直径小于5 mm),目前依靠人工进行装配。为减少劳动力成本,需采用双目视觉引导机器人实现装配。双目视觉定位过程中,两幅玻璃封装电连接器图像进行立体匹配的准确性影响着定位的精度,因此研究玻璃封装连接器图像的匹配对准具有重要意义。
目前,对于匹配算法的研究主要分两类:一类是改进特征描述符提高性能;另一类是增加约束条件剔除误匹配点。文献[2]提出尺度不变特征变换匹配算法(Scale-Invariant Feature Transform,SIFT)。该算法通过原始图像与高斯核进行卷积运算来构建尺度空间,再在高斯差分金字塔上提取出具有尺度不变性的特征点,具有仿射、视角、旋转和光照不变性,在特征匹配方面获得了广泛的应用。文献[3]针对SIFT算法计算过程中的速度和计算量的缺点,提出了加速稳健特征算法(Speeded-Up Robust Features,SURF)。该方法通过运用近似Harr小波算法进行特征点提取,在不同的尺度空间上利用积分得到近似Harr小波值,减少二阶微分模板的构建,提高了特征匹配的效率。但是,这两种方法构建的高斯尺度空间都易忽略图像的边缘细节信息。文献[4]通过使用非线性扩散在非线性尺度空间中描述特征,保留了图像的边缘信息,并提出一种新的2D特征提取方法,即AKAZE(Accelerated KAZE Features)描述子。文献[5]利用多分辨率区域检测器MSER和光照鲁棒形状描述子从输入图像中提取局部区域进行匹配,提出了一种适用于光照变化图像的特征匹配算法。文献[6]通过减小抽样点总量,提出了(Oriented FAST and Rotated BRIEF,ORB)特征匹配的误匹配点提出算法。文献[7]针对物体重建效果差的问题,提出了一种极限引导的特征匹配器RepMatch。该方法适用于宽基线和重复结构,然而玻璃封装电连接器图像并不适用于宽基线情况。文献[8]通过利用独特的拓扑,约束增强局部特征的描述能力,解决了徽标识别问题,但是拓扑约束条件还未扩展到通用对象。文献[9]将运动平滑限制问题转化为统计测量,剔除了错误匹配,提出了一种有效的基于网格的分数估计器(Grid-based Motion Statistics,GMS)。但是GMS算法存在一个严重的缺陷,即没有旋转不变性。文献[10]提出一种基于统一能力的算法,解决了遥感图像的局部特征提取问题。该方法在提取过程中使用的是经验参数,故具有一定的局限性。文献[11]提出了一种基于关键点的复制-移动伪造检测技术。由于AKAZE算法利用非线性方程求出的迭代解不具有唯一性,故该方法仍存在特征点误匹配问题,从而导致图像匹配准确率不高。文献[12]运用FAST-SIFT算法提取肌骨图像特征,解决了肌骨图像拼接问题,但该算法的实时性和实用性有待提高。文献[13]结合不规则碎纸片的边缘与颜色信息实现了关键点检测,但是其并不适用于边缘比较复杂的玻璃封装电连接器图像。
通过以上分析,针对玻璃封装连接器图像匹配精度不高的问题,本文提出基于LK(Lucas Kanade)光流和网格运动统计的图像匹配改进算法。本文在AKAZE特征检测算法的基础上,融合LK光流和网格划分统计,实现了误匹配点的剔除。
传统特征检测方法利用构建高斯尺度空间对玻璃封装电连接器图像整体进行平滑操作,容易忽略玻璃封装电连接器的纹理细节信息。为了解决此问题,本文利用AKAZE算法非线性滤波来构建尺度空间并保留玻璃封装电连接器的边缘信息,对玻璃封装电连接器进行图像局部操作。非线性滤波原理可用非线性扩散方程式表示
∂L/∂t=div(c(x,y,t)×∇L)
(1)
式中,L表示玻璃封装连接器图像的亮度矩阵;div与∇L表示散度和梯度求解;t为尺度因子,该值越大,图像表现的越简单;c表示传导函数,将扩散应用于图像局部结构。
AKAZE算法的尺度空间为金字塔形,有O组、S层。通过扩散函数,根据时间ti实现尺度空间的构建。尺度参数与组数、层数之间的关系为
σi(O,S)=σ02(o+s/S)
(2)
式中,o∈[0,1,…,O-1],s∈[0,1,…,S-1],i∈[0,1,…,M-1];σ0表示初始尺度参数;M为尺度空间总图像数,即M=O×S。
由于非线性扩散滤波与时间序列相关,因此需将以像素为单位的尺度参数σi转换为时间ti。
(3)
利用快速显示扩散(Fast Explicit Diffusion,FED)算法得出式(1)非线性扩散方程的解,从而得出玻璃连接封装器图像的非线性尺度空间为
Li+1=(I+τA(Li))Li
(4)
式中,I是单位矩阵;A(Li)表示玻璃连接封装器图像在维度i的传导矩阵;τ为步长,其值为ti+1-t。
在不同尺度空间下比较某一点与其邻域内的其他点,当Hessian矩阵取得极大值时,定位玻璃封装电连接器图像关键点。其计算式为
(5)
式中,σ为尺度因子σi的整数值。然后根据泰勒展开式求亚像素点的准确位置
(6)
式中,x为特征点的位置坐标,求出特征点的亚像素坐标为式(7)。
(7)
在梯度图像上搜索以特征点为中心,以6为半径的圆为统计范围,并对其内部所有邻域的一阶微分Lx和Ly进行高斯加权运算。然后用60°扇形区域绕原点进行旋转,计算区域向量和,特征点的主方向为向量和中最长的方向。
二进制描述子由于可并行化计算,效率较高,被广泛应用于目标识别、追踪过程中[14-16]。AKAZE算法运用M-LDB(Modified-Local Difference Binary)描述子,通过对像素进行采样并求其平均值,在实现尺度自适应的同时保证了实时性。因此该描述子适用于匹配要求较高的玻璃封装电连接器图像匹配。
LK光流法广泛应用于目标跟踪领域,但其在特征点匹配方面的应用较为有限[17-18]。在检测到玻璃封装电连接器关键点后,需找到其匹配区域并找到特征点对,然后利用LK光流法跟踪玻璃封装电连接器图像特征点,从而找到匹配区域。
假设有两张玻璃封装电连接器灰度图像I和J,其在[x,y]处的灰度值分别为I(x,y)和J(x,y),图像I上存在一像素点u=[ux,uy]匹配到图像J上的像素点v=u+d=[ux+dx]T使得I(ux,uy)和J(ux+dx,uy+dy)之间的误差最小。位移d=[dx,dy]T表示像素点u和v的光流。在点u为中心的图像范围[2ωx+1,2ωy+1]内,通过求匹配误差最小值的平方和来求解d的取值。此损失函数可表示为式(8)。
(8)
算法的主要流程是将玻璃封装电连接器图像金字塔分层,下层为上层的1/2,最顶层为分辨率低的图像,最底层为原始图像,依次从顶层递归求解到底层为止。假设第L层的损失函数为
(9)
式中,gL和dL分别为像素点进行第L层迭代运算的光流初值和误差。
按照泰勒展开式可得
(10)
则光流极值dopt=G-1b。根据光流d,确定待匹配玻璃封装电连接器图像上所在位置,进而求解匹配区域。
经上述LK光流法求出匹配区域,下一步需实现特征匹配。目前较常用的算法是暴力算法(Brute Force,BF)算法和高维数据的快速最近邻(Fast Library Approximate Nearest Neighbor Search,FLANN)算法。BF算法的思想为计算某一特征描述子与另外全部描述子间的距离,并对该距离进行排序,利用最小距离得到匹配点。FLANN算法是进行最近邻搜索的开源库,可优化大数据集的快速最近邻搜索和高维特征。由于BF算法只根据描述子之间的距离判断匹配点出现误匹配问题,故采用FLANN算法完成特征匹配。
玻璃封装电连接器图像初始匹配后得到部分相应的匹配点集A,如式(11)所示。正确匹配点邻域内的特征点数较多,因此可根据此差异来剔除错误匹配。
Ai,L-R={a1,a2,…,an}
(11)
匹配点对分布情况可表示为
(12)
式中,ai表示匹配的区域和待匹配区域的匹配点对;K代表小邻域附近的数;n是匹配对数目;p1和p2分别为正确和错误匹配率。图1为玻璃封装电连接图像特征分布图。
本文根据概率评估标准函数取值大小来决定是否剔除匹配点。
(13)
图1 特征分布图Figure 1. Feature distribution diagram
玻璃封装电连接器图像利用AKAZE算法提取特征求解偏微分方程时会产生多组解,因此会产生误匹配问题。为解决此问题,本文提出基于LK光流和网格划分统计的图像匹配改进算法。算法流程如图2所示。
图2 算法流程图Figure 2. Algorithm flow chart
算法包括以下几个步骤:
步骤1在原始玻璃封装电连接器图像上进行特征提取并描述AKAZE特征点;
步骤2对两幅玻璃封装电连接器图像进行特征描述后构建图像金字塔,利用LK算法中的式(8)求解出光流得到匹配区域,追踪特征点;
步骤3对特征点进行检测和描述过后再进行特征匹配,运用FLANN算法库实现此功能;
步骤4玻璃封装电连接器图像经FLANN特征匹配出现部分错误匹配点,此时将玻璃封装电连接器图像划分成多个网格并计算其特征点邻域内的匹配点个数。根据式(11)求解概率值,该值越大,则正确匹配概率越高。
为了检验算法的匹配能力,利用公开数据集Mikolajczyk[19]和实际场景玻璃封装电连接器图像进行仿真实验,并将本文算法与SIFT算法、SURF算法、AKAZE算法进行比较,从匹配效果和算法耗时两个方面对算法进行评价。实验环境采用CPU为Intel Core i5,1.60~1.80 GHz,内存为8 GB,64位Windows10操作系统的PC机。本文算法实验基于OenCV3.4.2实现,编程语言为Python,编程环境为Pycharm 2017。实验包括3个部分:(1)模糊图像匹配实验;(2)亮度变化匹配实验;(3)旋转变化匹配实验。图3(a)~图3(c)为公共数据集中的Bike、Leuven、Boat图像对,图3(d)~图3(g)表示玻璃封装连接器图像的模糊状态、亮度及旋转变化下的状态。
(a)
为验证本文算法针对模糊图像的匹配性能,利用Bike图像和经高斯模糊处理的玻璃封装连接器图像得到了模糊匹配结果,如图4所示。通过对图4中的数据进行分析可知,其他算法对模糊图像匹配较为敏感。本文算法由于增加了匹配约束条件,因此对模糊图像匹配具有抗干扰能力。
(a) (b)
在实际应用场合匹配过程中,图像亮度变化是常见现象。为检验算法对不同亮度图像的匹配能力,本文利用Leuven图像和实际场景中的玻璃封装电连接器图像对,实现了不同的亮度匹配效果,具体如图5所示。根据表1可知,当玻璃封装电连接器图像变亮时,本文算法的准确率仍高于其他算法,说明本文算法抗光照能力较强。
(a) (b)
为验证本文算法对图像具有旋转不变性,本文利用Boat图像和存在旋转变化的玻璃封装电连接器图像对,将本文算法分别与SIFT算法、SURF算法、AKAZE算法作对比。根据实验结果可知,针对旋转变化玻璃封装电连接器图像,通过构建非线性尺度空间,本文算法准确率可达到93.39%,时间为0.4 s。
(a) (b)
匹配效果主要通过匹配正确率和时间来衡量。CMR表示匹配正确率,其含义为正确点对数与匹配点对数值的比值百分比,该值越大表示匹配准确度越高。本文算法、SIFT算法、SURF算法和AKAZE的匹配准确率结果如图7和表1所示。通过对下图中公开数据集和玻璃封装电连接器图像匹配点对数和正确率的分析可知,利用SIFT算法检测到的匹配点对数最多,但是其正确率较低。虽然利用本文算法得到的匹配对数量较少,但和其他算法相比,本文算法的准确率有所提高。本文算法不仅通过LK光流法跟踪匹配区域,还将玻璃封装电连接器图像进行网格划分来剔除错误匹配,较大程度提高了匹配准确率。
将本文算法与SIFT、SURF、AKAZE算法的耗时进行比较,如图8和表1所示为4种算法的耗时结果。由图8可看出,SIFT和SURF耗时较长,AKAZE耗时最短,本文算法比AKAZE耗时稍长,但仍比前两种高效。前两种算法运用欧氏距离实现相似度量,耗时较长。AKAZE算法使用二进制描述子M-LDB保证了算法的快速性。本文算法在特征匹配时增加了约束条件,并利用网格划分剔除误匹配点,从而导致时间增加,但本文算法在保证匹配正确率的同时有效减少了错误匹配点数。
图7 Boat数据、Leuven数据和Bike数据匹配正确率比较Figure 7. Comparison of matching accuracy among Boat data, Leuven data and Bike data
图8 Boat数据、Leuven数据和Bike数据耗时比较Figure 8. Comparison of time consumption among Boat data, Leuven data and Bike data
表1 玻璃封装电连接器图像匹配正确率及时间比较
为解决玻璃封装连接器图像匹配过程中存在的误匹配和耗时长问题,本文提出基于LK光流和网格划分统计的改进AKAZE匹配算法,利用增加约束条件解决了错误匹配较多的问题。在AKAZE特征检测方法的基础上,构建图像金字塔作为LK光流的控制点,对匹配区域进行计算,并利用FLANN匹配后的特征点进行网格划分统计来减少错误匹配。结果表明,玻璃封装连接器图像在旋转、光照和模糊情况下仍能有效提高匹配准确率,并降低运行时间。