基于改进的SIFT算法的工件轮廓配准方法
2022-11-17林少鑫方千山
林少鑫,方千山
(华侨大学 机电及自动化学院,福建 厦门 361021)
0 引言
图像配准是指将不同时间、不同传感器或不同条件下获取的两幅或多幅图像进行匹配、叠加的过程[1]。对工件轮廓图像进行配准是指对于同一类工件在不同拍摄条件下进行轮廓匹配的过程,通过工件轮廓图像配准可以获取工件二维位姿信息,是机器人视觉引导系统中对工件位姿感知的重要组成部分。在轮廓配准中,对于特征点的提取算法一直是国内外的研究热点,2004年Low[2]在国际计算机视觉杂志发表了提取图像特征的尺度不变关键点的论文,该算法能够有效提取图像中最具有代表性的特征点,并且具有尺度不变性和旋转不变性,但是,该算法计算复杂,特征提取耗时长,很难实现实时性。FAST算法是2006年被提出的快速特征提取算法[3],该算法通过画圆法,设置一个阈值t,如果圆中像素点存在n个连续像素点的灰度值都高于Ip+t,或者低于Ip-t,那么像素点p就被认为是一个角点,该算法计算简单,但是特征提取不稳定,尤其是在视觉引导系统中很难准确获取工件位姿。2011年ORB算法被提出[4],该算法结合了FAST和BRIEF算法,具有尺度不变性和旋转不变性,可以实现实时检测,但是,和FAST算法一样存在特征提取不稳定的缺点。
综合了上述算法的优缺点,在视觉引导系统中,本文拟采用工件轮廓与模板轮廓进行配准的方法来获取工件的位姿信息,本文采用了改进的SIFT算法对工件轮廓进行特征点提取,直接在原图上计算高斯尺度空间,不构建图像金字塔,计算出高斯差分图像,然后在高斯差分图像上求解极值点作为图像的特征点,对于提取的特征点不会再使用SIFT算法的特征描述算子,而是采用直接与模板图像中特征点进行尝试匹配,计算图像重合度的方法来选出最匹配点。最后通过实验仿真证明,该算法能够在保证较高实时性的同时准确完成了工件轮廓与模板轮廓的配准。
1 SIFT特征提取原理
1.1 定义图像的尺度空间
为了实现在不同的尺度空间使用不同尺度的窗口,对于小的特征点使用小的窗口,对于大的特征点使用大的窗口,SIFT算法使用了尺度空间滤波器。定义图像的尺度空间为原始图像与一个可变尺度的二维高斯函数G(x,y,σ)卷积运算:
σ是尺度空间因子,它决定了图像的模糊程度。
1.2 构建高斯差分金字塔
将原图像的长宽放大为原理的两倍,然后在放大的图像上对该尺寸下图像采用不同尺度空间因子的高斯核进行卷积得到金字塔一层的一个小组Octave[5],然后选择该Octave中的一幅图像进行下采样作为金字塔下一层的初始图像,以此类推完成整个图像金字塔的构建,得到如图1所示模型。
图1 高斯差分金字塔模型
利用高斯拉普拉斯算法(LoG)可以在不同的尺度下检测图像的关键点信息,从而确定图像的特征点,然而LoG计算复杂,关键点提取效率低,为了简化计算,David G.Low采用了DoG(高斯差分)来近似LoG,这里对金字塔的每个Octave中相邻的两层相减构成了高斯差分金字塔[6],如图2所示。
图2 高斯差分金字塔模型
1.3 极值点提取
在构建完高斯差分金字塔后,就可以在不同的尺度空间中搜索局部最大值。在图像中的一个像素点,在本图像中需要是8领域内的局部最大值,也要与尺度空间中上下两层中的相邻18个点作比较,如果都是局部最大值,那么它就可能是一个关键点[7],如图3所示。
图3 极值点提取立方体
极值点搜索过程中,从每组的第二层开始,以第二层为当前层,对第二层的DoG图像中的每个点取一个3×3的立方体,立方体上下层为第一层与第三层[8],如果该点是该立方体中的最大值,就是可能的极值点。
1.4 特征点的定位
采用高斯差分金字塔进行的极值点检测对噪声和边缘比较敏感,因此SIFT算法在尺度空间的泰勒级数展开获得极值的准确位置,如果极值点的灰度值小于阈值就会被忽略掉。同时,DoG算法对边缘非常敏感,所以必须要把边界去掉。SIFT算法中是采用了Harris角点检测算法,当一个特征值远远大于另外一个特征值时,检测到的是边界,因此可以用该算法排查边界点。
2 改进的SIFT算法
通过对SIFT算法原理的分析,可以发现SIFT算法计算步骤多,这是导致该算法在进行特征提取时耗时长的主要原因。SIFT算法提取了不同尺度下所有的特征点,但是,在机器人视觉引导系统中,为了获取工件的位姿信息,本文采用了工件轮廓与模板轮廓配准的方法,由于选取的模板与工件只考虑选择和平移两种仿射变换,因此为了求解工件的位姿信息,只需准确找到工件的两个特征点并与模板图像进行准确匹配即可计算出工件的二维位姿信息。本文以机器人视觉引导系统拍摄的一种不规则工件图像轮廓为例,如图4所示,图4(a)是选取工件模板原图,使用大津二值化(OTSU)算法对工件进行二值化操作,得到图4(b),最后提取图像的轮廓图像,得到图4(c),最后通过改进SIFT算法对模板轮廓进行特征点提取,并绘制了特征点图,如图4(d)所示。
图4 工件模板图像
本文针对视觉引导系统算法的设计方案,对SIFT进行了改进,为了提高算法的运行效率,算法的流程如下:
1)计算高斯尺度空间。
由于模板轮廓图像与工件轮廓图像大小一致,只是对图像进行平移和旋转,因此本文使用SIFT中特征提取算法,只需要提取图像轮廓的两个特征点即可,并不需要提取工件轮廓在各个尺度下的所有特征点。因此,本文直接在原图像上计算尺度空间,并不进行上下采样。因为最后只需要生成一张高斯差分图像,因此需要设置4个尺度空间因子,选取第一层次的模糊系数σ0=1.6,模糊系数的计算公式为
其中,r为图像的索引号。最后使用不同尺度空间因子的高斯核直接在原图上进行卷积,得到4幅尺度空间图像,如图5所示。
图5 高斯尺度空间图像
2)计算高斯差分图像。
为了能够达到与SIFT算法接近的特征提取效果,本文保留了SIFT算法中使用高斯差分图像求极值点的方法,通过上一步骤计算尺度空间,相邻两个尺度空间图像之间作差获得高斯差分图像,通过第二幅尺度空间图像与第一幅尺度空间图像作差得到高斯差分图像,第三幅尺度空间图像与第二幅尺度空间图像作差得到第二幅高斯差分图像,依此类推获得了3幅高斯差分图像(如图6),后续的特征点提取就是在高斯差分图像上进行的。
图6 高斯差分图像
3)极值点检测与图像特征点提取。
从第二个高斯差分图像开始,对每个像素取一个3×3的立方体,如果该像素点是该立方体的最大值,那么该点就作为图像的候选特征点,由于本文只提取了图像的部分特征点,对于轮廓图像提取的特征点比较少,因此本文对候选点只需排除低对比度的点,设置灰度阈值为0.04,如果高斯差分图像提取的极值点在差分图像上的灰度值小于该阈值,那么就忽略该极值点。
4)计算最佳匹配特征点。
由于工件轮廓图像与模板图像的只存在平移和旋转的仿射变换,因此本文通过计算图像轮廓重心作为轮廓的旋转中心,重心计算公式如下:
式中:wi为像素点的灰度值;W为所有像素的灰度值总和。
本文拟通过工件提取的特征点逐个与模板中的特征点进行匹配计算仿射变换参数,通过两个轮廓的重合度来衡量匹配结果,按照重合度排序,选择重合度最高的点完成图像配准。因此,定义两个图像的配准重合度为
式中:Scoi为工件轮廓包围区域与模板轮廓包围区域重叠的面积;Stmp为模板轮廓包围的面积;S为工件轮廓包围的面积。
3 实验设计与结果分析
为了验证算法在实际应用场景中的正确性,本文通过机器人视觉引导系统采集了实际场景的总图像,通过图像分割获得了33张工件的图像。本实验特征点提取时间t,和配准重合度两个重要参数,特征点提取时间是为了验证改进的SIFT算法与原来的SIFT算法的特征提取效率,配准重合度是为了验证该算法完成工件配准的可行性。最后通过获取到匹配的特征点,对工件图像进行仿射变换,并与模板图像比较,验证本文算法在视觉引导中的可行性。
实验环境为Windows10环境下,采用Intel corei7-10510U CPU和8G内存,算法采用Python语言实现,结合OpenCV图像处理库搭建了SIFT算法和改进SIFT算法,分别对工件使用这两种算法进行特征提取,并计算时间。使用改进的SIFT进行特征提取结果,计算相对于模板图像的仿射变换参数,并对工件进行图像配准。部分工件轮廓图像的运算结果如表1所示。
表1 部分工件轮廓图像的实验结果比较
通过表1可以发现,改进的SIFT算法在特征提取效率上大约是原来的SIFT算法的提取效率的10倍,对于图像重合度分析,可以发现配准后的图像与模板图像的重合度都保持在80%以上。由于本文只考虑了图像的旋转和平移两种仿射变换,而实际场景中图像,由于相机拍摄的角度不同会造成工件轮廓的微小变形,因此可能会存在重合度不高的情况,但是在实际视觉引导中,该算法可以比较稳定地获取工件的二维位姿信息。最后本文通过仿射变换的方式来模拟引导机器人抓取工件使工件与模板图像具有相同的位姿,图7所示为是部分工件的初始位姿,通过改进的SIFT算法提取的特征点,计算仿射变换参数,并通过仿射变换对图7中的工件进行模拟抓取,得到图8中工件图像,通过对比可以发现,原始的工件图像都能通过仿射变换得到与模板图像(如图4)相同的方向,验证了改进的SIFT算法在视觉引导对工件位姿信息获取的可行性。
图7 原始的工件图像
图8 仿射变换后的工件图像
4 结论
本文针对SIFT算法特征提取效率低的问题,提出了改进的SIFT算法,直接在原图上进行高斯尺度空间计算,以图像轮廓重心为旋转重心,通过与模板图像提取的特征点逐个匹配,并通过仿射变换与模板图像计算重合度,以重合度最高的匹配为最佳匹配。实验最后采集了33张工件轮廓图像作为样本和一张模板图像,使用改进的SIFT算法测试样本中的工件轮廓与模板轮廓进行配准,计算了仿射变换的参数,并通过仿射变换把提取的工件的轮廓变换到了与模板图像相同的位姿,实验表明,该算法的特征提取速度比原来的SIFT算法提高了近10倍,也能完成视觉引导中对工件位姿的计算。