APP下载

基于改进SURF算法的柔性装夹机器人快速工件匹配方法

2018-08-27杜柳青许贺作余永维张建恒

计算机应用 2018年7期
关键词:描述符特征描述装夹

杜柳青,许贺作,余永维,张建恒

(重庆理工大学 机械工程学院,重庆400054)(*通信作者电子邮箱weiyy@cqut.edu.cn)

0 引言

柔性工装技术能大幅降低制造成本、缩短工装准备周期、提高生产率。研制高精度、高效率的机器人柔性装夹系统,是我国工业发展的必然要求。结合机器视觉的柔性装夹机器人是当前研究的热点。

图像匹配是计算机视觉研究领域的重点。目前,用于图像匹配的方法有很多种,匹配算法的基本思想主要可以分为两大类:一类是基于灰度匹配方法;一类是基于特征匹配方法[1-4]。文献[5]针对匹配精度低和匹配速度慢的问题提出了一种基于灰度相关的2类匹配算法,该算法对上述问题有很好的改善。文献[6]采用Harris角点图像匹配算法,该算法具有很好的鲁棒性;但增加了算法的复杂度。针对此问题文献[7]提出了一种改进的Harris特征点检测算法。另外上述文献匹配算法对尺度变化图像匹配效果较差,2004年,Low[8]提出了一种尺度不变特征变换(Scale Invariant Feature Transform, SIFT)算法,该算法具有很好的稳定性和鲁棒性,对尺度、旋转、缩放、仿射变换等有很好的不变性;但由于SIFT算法复杂度较高、计算量大,造成特征描述和匹配时间比较长。随后,Bay等[9-10]提出了SURF(Speeded-Up Robust Feature)算法,它是SIFT的改进算法。SURF算法采用近似的Hessian矩阵行列式(Determinant of Hessian matrix, DoH)算子检测出特征点,具有很好的鲁棒性,而且速度比SIFT算法提高了3倍;但是,SURF算法在特征点描述阶段采用的是基于梯度直方图的局部特征描述方法[11],因而其运算仍需要消耗大量的时间,难以满足实时性的要求。近年来,国外研究者提出一种新的特征描述符——二进制描述符[12],如:BRISK(Binary Robust Invariant Scalable Keypoint)描述符[13]、BRIEF(Binary Robust Independent Elementary Feature)描述符[14]、ORB(Oriented FAST and Rotated BRIEF)描述符[15]、FREAK(Fast Retina Keypoint)描述符[16]等,这些算子在运算时间上比SIFT、SURF有着显著的降低,计算速度提高了一个数量级[17-18],具有很好的实时性。

BRIEF描述符摒弃了传统的用梯度直方图描述区域的方法,改用检测随即响应,大幅度提高了描述子建立速度;生成的二进制描述子便于高速匹配,且易于在硬件上实现。本文借助于BRIEF描述子的快速性,提出了一种SURF与BRIEF相结合的改进算法,用于柔性装夹机器人抓取工件时的图像快速匹配。首先由SURF算法提取出图像特征点,并且确定特征点的位置;然后运用BRIEF描述符对特征点进行局部描述,并采用灰度质心法确定特征点主方向,降低算法的复杂度,缩短特征描述时间,实现机器人柔性装夹工件的快速、准确的图像匹配。

1 柔性装夹机器人系统构建

1.1 系统总体结构

柔性装夹机器人实验平台如图1所示,主要包括以下几个部分:机器人、双目CCD摄像头、工业计算机、图像采集卡、控制器、工件传送带。计算机是柔性装夹机器人系统的核心,它的主要功能是进行图像处理、操作界面的显示以及控制系统各部分的通信任务;工件放置在传送带上传送,由于工件在传送带上位置放置的随意性,因而两个CCD摄像机(下置光源)需要安装在传送带的正上方以获得目标工件的图像信息。图2为柔性装夹机器人实验所用的视觉系统。

图1 柔性装夹机器人系统

1.2 系统运行的基本原理

该系统首先由双目CCD摄像机对传送带上的目标工件进行图像采集,并通过数据线将采集到的图像存入到工业计算机内;然后计算机对采集到的图像进行预处理,接着对图像中的目标工件提取特征并进行目标匹配,以获得目标工件的空间坐标;最后根据目标工件的空间坐标规划机器人的轨迹路线,通过控制器控制机器人对目标工件的抓取工作。该系统实现过程中,图像匹配是该系统研究的重点和难点,因而本文主要采用SURF算法和BRIEF算法对目标工件的匹配进行研究。

图2 机器人视觉系统

2 SURF算法

2.1 特征点检测

2.1.1 积分图像

SURF算法借用积分图像理论,通过对积分图像的简单加减运算替代图像和高斯二阶微分模板的滤波,来提高计算速度。积分图像的定义如文献[10]所述。因而计算图3中的S区域的灰度值积分可以由S=A-B-C+D来得到。

图3 积分图像法

2.1.2 DoH近似

图像J中点(x,y)的尺度为σ的Hession矩阵为:

(1)

其中:Lxx(x,σ)是点x处高斯函数二阶偏导数和图像J(x)的卷积,Lxy(x,σ)和Lyy(x,σ)与之类似。

将卷积运算转化为盒子滤波运算,也就是对高斯二阶微分模板的简化。模板尺寸大小为9×9的盒子滤波器是σ=1.2的高斯滤波器的近似,在对图像进行滤波和斑点检测时将它作为最新尺度空间值,卷积运算后的值分别为Dxx、Dxy、Dyy,用它们代替Lxx、Lxy、Lyy。如图4所示。

图4 盒子滤波器

因此,可以将Hessian矩阵的行列式简写为:

Det(Happrox)=DxxDyy-(ωDxy)2

(2)

其中:Det(Happrox)表示点x附近区域的盒子滤波响应值,可以用于检测极值点;ω是一个协调参数,它的大小与σ有关,通常ω取值为0.9。

2.1.3 尺度空间建立

为了获取不同尺度的斑点,首先需要构建图像的高斯金字塔。建立图像高斯金字塔的基本思想是保持原图像大小不变,通过改变滤波器大小,就能得到尺度空间。SURF算法通过连续增大盒子滤波模板的大小,利用大小不一样的盒子滤波模板与积分图像得到Hessian矩阵的响应值,在响应图像上计算出不同尺度的特征点。

2.1.4 特征点定位

在不同尺度特征点的响应图像上进行3×3×3邻域非极大值抑制,使每层图像上的像素点都与其同一尺度上的8个像素点和与它相邻的上下2层图像的9个像素点相比较,如图5所示。

图5 非极大值抑制

如果该极值大于或小于这26个点的极值,则该点作为候选特征点。然后利用二次函数拟合方法对兴趣点进行定位[19],且使定位精度达到亚像素和亚尺度级,获得稳定兴趣点的尺度及位置信息,完成定位。

2.2 特征点描述子

2.2.1 确定特征点主方向

为了使目标图像具有旋转不变性,那么就必须要确定特征点的主方向。首先以上述得到的特征点为中心,计算半径为6s(s为特征点所在的尺度值)邻域内的点分别在x,y方向上的Harr小波响应,Harr小波边长取4s,并对响应值进行高斯加权。然后,将60°扇形区域内的响应值累加形成新的矢量,遍历整个圆形区域,选择长度最长的矢量方向为该特征点的主方向,如图6所示。

图6 确定主方向

2.2.2 生成描述子

上述操作已经确定了特征点的位置和主方向,接下来为局部区域计算描述子。首先将坐标轴旋转为特征点的方向,以确保旋转不变性。以特征点为中心,在沿主方向平行的矩形区域中进行。此区域的大小为20s×20s,把它划分为4×4个子块,然后用尺寸大小为2s的Harr小波模板对每个子块进行响应值计算,得到每个子块的矢量。因为此区域一共有4×4个子块,所以生成的特征描述子共由4×4×4=64维特征矢量构成。

3 结合BRIEF改进SURF算法

SURF算法在特征描述阶段运算时间较长,难以满足加工场景的实时性要求,针对此问题本文提出了一种改进SURF的图像特征匹配算法。该算法首先利用原SURF算法的特征检测方法DoH检测出特征点;接着采用灰度质心法对提取的特征点计算出主方向;然后运用二进制描述符BRIEF算子对特征点进行描述;最后使用汉明距离双向匹配,并采用比率检测法和RANSAC(Random Sample Consensus)法剔除误匹配点,极大地提高了算法的实时性和稳定性。改进算法与原SURF算法图像特征匹配流程如图7所示。

图7 图像配准流程

3.1 BRIEF特征描述

BRIEF算法的核心理论是在特征点周围任意选取若干点对组成图像块,对其灰度值进行二值化处理,然后把所得的结果组成一个二进制串,并把它作为该特征点的特征描述子。BRIEF描述子的任意一位都是采用随机选取两个二进制点作比较得到的。定义一个图像邻域P的二进制比较准则τ,其大小为s×s。

(3)

其中:x,y为图像邻域P中的任意两个像素点,p(x),p(y)为x,y处的灰度值。选择n个点对(x,y),唯一定义了一个二进制准则,所以由此生成的BRIEF描述子为n维的二进制比特字符串:

(4)

实际使用中n可以为128、256、512等。

为了解决BRIEF描述子对噪声比较敏感的问题,本文采用高斯滤波的方法进行处理。首先采用31×31像素邻域内的5×5子窗口,而且对子窗口的选择要服从高斯分布,最后利用上文SURF算法中的积分图像来进行加速计算。从s×s大小的图像块上选取nd个(xi,yi)像素对有许多不同的方法,Calonder等[14]使用5种采样方法对其进行研究,最终实验证明第2种方法相较其他方法得到的结果较好,所以BRIEF描述子采用的是第2种方法,即xi、yi均呈高斯分布[0,11s2/25],准则采样服从各向同性的同一高斯分布。

因为上述生成的描述子没有方向性,所以描述子不具备旋转不变性。为了解决这一问题,本文对由SURF算法提取的特征点,利用灰度质心法求取特征点主方向θ。对任意特征点q,它邻域像素的矩为:

(5)

其中,I(x,y)为点(x,y)处的灰度值。

图像质心为:

C=(m10/m00,m01/m00)

(6)

则特征点的主方向为:

θ=tan-1(m01,m10)

(7)

对于任意特征点序列在(xi,yi)像素位置处,由二进制准则选取n对点集,然后定义一个2×n的矩阵S:

(8)

采用特征点及其附近邻域组成的图像小块的方向和与其相对应的旋转矩阵,构造带有方向特性的Sθ:

Sθ=RθS

(9)

其中:θ为图像块主方向,Rθ为旋转矩阵。

这样就得到了具有旋转不变性的描述子:

gn(p,θ)=fn(p)|(xi,yi)∈Sθ

(10)

其中,gn(p,θ)为具有方向的特征描述子。

3.2 特征匹配

由于BRIEF描述符生成的描述子形式为二进制码串,因而本文采用Hamming距离对特征点进行匹配,汉明距离就是将一个字符串变换成另外一个字符串所需要替换的字符个数,因此汉明距离越大说明两幅图像的相似性越差;然后使用比率检测法[20]去除那些多点匹配的误匹配点;最后使用RANSAC算法[21]进一步剔除误匹配点,实现精准匹配。

4 实验结果分析

本文从算法的尺度不变性、旋转不变性以及算法的实时性3个方面进行了仿真实验,分别用本文算法和SURF算法对若干组图像进行运算仿真来比较算法的性能。

4.1 实验条件

实验在Visual Studio 2010+OpenCV 2.4.8编程环境中运行。计算机为64位Windows 10系统,相机采用HNY-CV- 002型平行双目摄像机,图形软件系统为AmcapImage。工件为柔性装夹机器人常见工作环境下的双头螺栓和三通螺母。在程序实现中,改进算法设置minHessian阈值为400,来判定特征点的数量与质量。BFMatcher匹配第一个参数为NORM_HAMMING;第二个参数为True,返回最好的一组匹配,而非最近邻。

匹配实验所用的主程序如下所示:

1)特征检测与描述程序。

Mat src1=imread("007- 11.jpg",CV_LOAD_IMAGE_GRAYSCALE);

Mat src2=imread("007- 11m.jpg",CV_LOAD_IMAGE_GRAYSCALE);

if(!src1.data‖!src2.data)

{

cout<<"Error reading images"<

return -1;

}

vectorkp1,kp2;

double t=getTickCount();

cv::SurfFeatureDetector surf(400);

surf.detect(src1,kp1);

surf.detect(src2,kp2);

BriefDescriptorExtractor brief;

Mat des1,des2;

brief.compute(src1,kp1,des1);

brief.compute(src2,kp2,des2);

2)特征点匹配程序。

BFMatcher matcher(NORM_HAMMING);

std::vectormatches;

matcher.match(des1,des2,matches);

4.2 尺度不变性对比实验

使用本文改进算法获取两幅不同尺度的双头螺栓匹配图像的特征点,其中包含特征点的大小及其主方向,如图8所示。

图8 特征点检测(双头螺栓)

通过拍摄多组不同尺度图像,分别使用SURF算法和改进的SURF算法进行实验比较,如图9所示。

图9 两种算法的匹配结果(双头螺栓)

从匹配结果中分别取其中的7组进行统计分析,实验分析结果如表1所示。其中匹配精度是由图像特征匹配中精匹配对除以总匹配对计算获得,即,匹配精度=(精匹配对数/总匹配对数)×100%。

由实验结果可知,对不同尺度的图像进行匹配时,虽然SURF算法匹配对数多于本文改进算法,但其受周围环境因素影响较大。由表1实验结果可以知道,与原SURF算法相比,本文改进算法匹配精度提升了3.37个百分点,表明本文改进算法具有很好的尺度不变性。

表1 图像尺度变化时匹配精度对比

4.3 旋转不变性对比实验

使用改进SURF算法获得两幅不同旋转角度下的三通螺母匹配图像的特征点,其中包含特征点的大小和主方向,如图10所示。

图10 特征点检测(三通螺母)

分别使用SURF算法、改进SURF算法进行图像匹配,如图11所示。

图11 两种算法的匹配结果(三通螺母)

从匹配结果中分别取其中的7组进行统计分析,实验分析结果如表2所示。其中匹配精度是由图像特征匹配中精匹配对除以总匹配对计算获得,即:匹配精度=(精匹配对数/总匹配对数)×100%。

表2 图像旋转变化时匹配精度对比

由表2中结果可以得到,当图像发生旋转时,原SURF算法匹配对数多于本文改进算法。由表2实验结果可以知道,与原SURF算法相比,本文改进算法的匹配精度提升了1.82个百分点,由此可知本文改进算法具有很好的旋转不变性。

4.4 匹配时间对比实验

原SURF算法在特征描述阶段采用的是梯度直方图描述区域的方法,该方法较为复杂,因而本文算法改用检测随即响应,大幅度提高了描述子建立速度,且生成的二进制描述子便于高速匹配,且易于在硬件上实现。随机抽取7组不同尺度的双头螺栓图像的特征描述阶段和算法的总耗时实验数据,分别对SURF算法和改进的SURF算法的实时性进行比较分析,统计结果如表3所示。

表3 两种算法的实时性比较

由表3中结果可以得到,本文算法的特征描述阶段速度约为原来SURF算法的10倍,且本文算法总耗时为86.29 ms,而SURF算法的为214.10 ms,因而与原SURF算法相比,本文改进算法的总耗时减少了59.7%,说明本文算法具有很好的实时性。

通过以上实验分析可知,改进的SURF算法不但具备了尺度不变性和旋转不变性,而且极大地缩短了算法的计算时间,满足了算法实时性要求。

5 结语

本文针对柔性装夹机器人抓取工件过程的快速视觉匹配应用需求,结合BRIEF算子在特征点描述阶段的快速性,提出了改进SURF匹配算法,即采用近似DoH法提取图像的关键点,运用BRIEF描述符对提取的特征点进行描述。为了解决BRIEF算法不具备旋转不变性的问题,采用灰度质心法计算出特征点主方向,构造带有方向的特征描述符,使其具有旋转不变性。最后采用比率检验法、RANSAC算法对匹配结果进一步提纯。本文算法极大地降低了特征描述的复杂度,提高了算法的运算速度,保证了算法的实时性要求,同时也保留了SURF算法的尺度不变性和旋转不变性的优点。由匹配实验可知本文算法具有很好的实时性。

猜你喜欢

描述符特征描述装夹
船舶尾流图像的数字化处理和特征描述技术
基于多件装夹方法的数控夹具设计研究
基于约束关系图的零件装夹规划
基于AKAZE的BOLD掩码描述符的匹配算法的研究
欧洲共同语言参考标准在中国高校学术英语写作教学适用性的研究:可理解性,可行性和有用性
基于深度学习的局部描述符
小学科学优质微课程的特征描述
面向视觉导航的图像特征评价方法研究
基于SVM的化合物分类综述
初中化学高效课堂中评价行为特征的研究