APP下载

基于粗-精立体匹配的双目视觉目标定位方法

2020-03-06马伟苹李文新孙晋川曹鹏霞

计算机应用 2020年1期
关键词:双目中心点像素

马伟苹,李文新,孙晋川,曹鹏霞

(兰州空间技术物理研究所,兰州 730000)

0 引言

机器视觉系统是智能机器人感知周围环境并实现自主工作的重要基础,双目视觉定位技术[1-3]作为机器视觉的一个重要研究方向,可模拟人类视觉结构,获取物体不同位置的图像,利用投影点视差恢复物体空间坐标,实现对目标三维位置的测量,该技术基于三角测量原理,测量方式为非接触式,具有简单、灵活、适应性强等优点,被广泛应用于三维重建、机器人导航、机器人工业生产及农业采摘等领域。

双目视觉定位技术的核心是如何提高双目视觉定位精度,正确获取目标位置,其关键在于选取具有空间位置一致性的左、右图像同名点,即立体匹配。根据匹配方式的不同,定位算法主要分为基于区域的双目视觉定位算法和基于特征的双目视觉定位算法,后者较前者而言,无论是算法的复杂性还是鲁棒性都有较大的提升,已成为双目视觉定位算法的首要选择。基于特征的双目视觉定位方法主要通过提取左、右图像中的局部特征点来实现目标匹配和定位,如Harris角点、基于加速分割测试的特征(Features from Accelerated Segment Test, FAST)、尺度不变特征变换(Scale Invariant Feature Transform, SIFT)特征、加速鲁棒特征(Speed Up Robust Feature, SURF)等特征。其中,SIFT特征因对尺度、旋转、视角等变化具有良好的鲁棒性而被广泛应用[4];但其缺点是计算复杂度高。基于SURF特征的双目视觉定位方法[5]在保证匹配率的基础上,改善了SIFT算法实时性差的缺点。在SIFT和SURF算法的基础上,不断有学者进行改进工作,通过提高特征匹配率和缩短匹配时间来提升双目视觉定位系统的定位精度和实时性[6-10],但上述定位方法存在两个问题:一是在立体匹配过程中提取目标多个特征点,导致匹配过程计算量大;二是在最终定位时,以多个特征点的均值作为定位点,并非目标中心点,只能获取目标在摄像头坐标系下的深度距离,无法精确获取目标的水平(x轴向)距离和垂直(y轴向)距离。

在实际应用中,无需对目标多个特征进行匹配,只需获取某个特定点的左右图像坐标就可实现目标定位,减少了不必要的匹配计算量。文献[11]提取左图中目标的轮廓中心,然后在右图中找出目标轮廓中心点的匹配点,结合三维重建原理实现目标定位。文献[12]提取目标质心在左右图像中的像素坐标,求得目标质心三维坐标,并应用于机器人目标定位、机械手抓取等任务中,因此,从获取高一致性的目标特征点和减少匹配计算量的角度出发,本文提出一种基于粗-精匹配策略的双目立体视觉目标定位方法,提取目标中心点,实现目标空间定位。在粗匹配阶段,快速提取左、右图像中目标区域的中心点,实现中心点匹配;在精匹配阶段,将右中心点作为估计值设定搜索范围,在该范围内找出左中心点的最佳匹配点。最后利用相似三角形原理,求得中心点的三维坐标,实现目标定位。该算法立体匹配部分以特征匹配为基础,相比传统基于特征的立体匹配方法具有匹配结果一致性高、匹配计算量小等优点,可使双目视觉系统达到较为理想的定位精度。

1 目标定位系统结构

图1所示为本文定位算法总体结构,以获取的左图目标中心点为基准,在右图中特定范围内采用基于特征的立体匹配得到具有高一致性的目标中心点对。

图1 定位算法框架Fig.1 Positioning algorithm framework

目标识别是实现左右目标中心点匹配的前提,选取快速、鲁棒的目标识别算法至关重要。传统识别算法[13]都是基于以下的思路框架:1)局部特征提取;2)特征不变性描述;3)特征匹配;4)求得两图像间的对应关系。文献[14]采用的随机蕨(Random Fern)算法将特征匹配看作是简单的分类问题,避免了特征不变性描述和匹配的庞大计算量,具有实时性好、鲁棒性高的优势,因此文中采用该算法对目标特征点进行匹配,实现目标识别。左中心点的立体匹配是定位的关键,这里提出一种粗-精匹配算法,粗匹配阶段采用随机蕨算法识别目标,提取左右目标中心点,得到的右中心点可看作是左中心点匹配点的估计值,该值在进行下一步精匹配时可用于设定像素搜索范围。精匹配阶段建立了一种基于图像梯度信息的二值特征描述子,并使用汉明距离进行描述子间的相似性度量,于右图中设定好的搜索范围内找到左中心点的匹配点。在得到目标中心匹配点对后,就可利用平行双目视觉模型恢复出目标中心点的空间位置。下文中主要对随机蕨算法和粗-精立体匹配方法作详细介绍。

2 随机蕨算法

随机蕨[15-16]算法是一种基于半朴素贝叶斯模型的机器学习分类方法,它将计算量庞大的特征不变性描述和特征匹配过程转移给分类器处理,通过离线训练分类器和在线识别两个阶段实现特征匹配识别。

2.1 离线训练

离线训练的目的就是生成目标分类器,主要包括以下几个关键内容。

1)特征点检测。

特征点检测是随机蕨离线训练和在线匹配的第一步,为后续分类奠定速度基础。原随机蕨算法中提取的特征点为Harris角点,为进一步提高特征点检测速度,鉴于角点都存在于边缘像素点,先对目标模板进行Canny边缘检测,在得到的边缘像素范围内再进行Harris角点检测,可节省时间成本。

2)稳定特征点和训练片元选取。

稳定的特征点构成目标的类别集合,选取稳定的特征点至关重要,具体实现方法为:先检测目标模板的特征点,构成原特征点集合T,再对目标模板进行多次不同的仿射变换,提取每次仿射变换后目标模板的特征点集合T′,然后对T′中的特征点进行对应的逆仿射变换,若找出它们在T中所对应的原特征点,则给该原特征点出现次数加1,最后统计T中每个原特征点在所有仿射变换中出现的次数,选取出现次数靠前的若干点作为目标模板的稳定特征点。训练片元为以稳定特征点为中心选取的邻域图像块Patch,作为识别与分类的基本单位,为获得丰富的训练样本集,需要对训练片元进行大量的仿射变换。

3)训练分类器。

目标模板可被描述为N个稳定特征点,目标的类别集合为C={ci,i=1,2,…,N},以同一特征点为中心生成的所有训练片元视为同一类。在某个特征点训练片元p中随机选取M对测试点对dj1和dj2,并根据式(1)计算p的二元特征属性集合f={fj,j=1,2,…,M},即:

(1)

其中,dj1和dj2表示p中的随机选取的两个像素位置,I(dj1)和I(dj2)为对应的灰度值。分类器的目的就是为p分配类,其所属类别可以定义为:

(2)

根据朴素贝叶斯分类模型,式(2)可推导如下:

P(C=ci|f1,f2,…,fM)=P(f1,f2,…,fM|C=ci)·

P(C=ci)/P(f1,f2,…,fM)

(3)

分子为均匀分布,分母为与类别无关的常数,因此式(3)分子最大化表示为:

(4)

考虑到图像像素间的相互关系,特征属性之间的完全独立不存在,将M个二值特征划分为长度为S的K个组构成一个随机蕨丛,K为蕨数,S为蕨内节点数。蕨内各节点之间相互联系,蕨与蕨之间相互独立,则式(4)可进一步简化为:

(5)

其中,Fk={fσ(k,1),fσ(k,2),…,fσ(k,S)},k=1,2,…,K,表示第k个蕨,σ(k,j)表示范围为1~M的随机数。

(6)

其中,nk,i表示类别ci在第k个蕨中出现的样本数,分母为类别ci的所有样本数,σ为设定的非零系数,一般取1。

2.2 在线匹配

在线特征匹配过程中,提取待匹配图像的特征点,将以特征点为中心的32×32邻域图像块作为待分类对象,根据2.1节中相关公式,获取每一个小图像块的二值特征属性集合,投入训练好的随机蕨分类器中,采用式(2)统计图像块属于各类别的后验概率分布,该分布中后验概率最大的类别ci即为该图像块所属类别,最终实现目标模板特征点与待匹配图像特征点的匹配。

3 粗-精立体匹配

为在右图中找到左中心点的匹配点,从优化搜索策略的角度出发,采用粗-精匹配思想[17],粗匹配阶段对左、右图采用随机蕨进行目标识别,提取左右目标中心点,得到的右中心点作为估计值,用于设定下一阶段特征匹配的像素搜索范围。精匹配阶段建立一种基于图像梯度信息的描述子,采用汉明距离进行相似性度量,找出左中心点在右图中的最佳匹配点。这样既利用了粗匹配速度快的优点,又利用了精匹配结果一致性较高的优点,兼顾匹配精确性和匹配效率。

3.1 粗匹配

目标在左、右图像中的标准矩形区域的中心点从理论上来讲,属于一对天然的匹配点,但考虑到实际中同一目标在左、右图像中提取的区域并不一定完全相同,甚至差异较大,导致得到的中心点对并非最佳匹配,因此这里将随机蕨目标识别后得到的右中心点p′(u′,v′)作为一个估计值,利用该值设定下一步特征匹配时的像素搜索范围,可降低匹配计算量和误匹配概率。采用随机蕨算法对左右图像进行目标识别,得到目标矩形区域后,可利用式(7)计算左右中心点,即:

(7)

其中,ui和vi分别表示目标矩形区域4个顶点在像素坐标系的u轴方向和v轴方向的像素值。

文中采用的摄像头为双目平行摄像头,且图像经过极线校正。根据极线约束条件,在左右像素坐标系中,左图目标中心点pl(ul,vl)与其右图中的匹配点pr(ur,vr)在v轴上的像素值应相等,因此匹配搜索范围降为一维,考虑校正后二者之间可能仍存在像素误差e,设定匹配前的初始像素搜索范围为区域R={p(u,v)|v∈(vl-e,vl+e)}。经过粗匹配后,根据右图中目标中心点的值估计,精匹配的像素搜索范围缩小为R′={p(u,v)|u∈(u′-m,u′+n),v∈(vl-e,vl+e)},其中m和n为匹配点在u轴方向上的像素值与u′值之间的最大上下偏移量。

3.2 精匹配

3.2.1 描述子建立

要在R′中对左中心点进行精确匹配,前提是生成一种匹配性能好的特征描述子。考虑到图像梯度信息更具识别力,且二值特征描述子(Binary Robust Independent Elementary Features, BRIEF)生成与匹配效率高、占用内存小的优点,这里将二者结合,生成一种基于图像梯度信息的二值特征描述子(Gradient Binary Feature Descriptor, GBFD)[18],可兼顾匹配性能和效率。具体实现为:将左中心点和R′中的点的s×t邻域图像分为k个等大的子块,利用积分图像统计各子块梯度信息,依次比较不同组合的两个子块的水平梯度均值Gdx、垂直梯度均值Gdy、水平梯度绝对值均值|G|dx和垂直梯度绝对值均值|G|dy,生成描述子。

点的GBFD描述子形式为一个长度为l的二值串,每一位的值通过f测试得到:

(8)

图2 GBFD生成流程Fig. 2 GBFD generation flowchart

3.2.2 相似性度量

通过上述GBFD方法建立左中心点描述子和右图R′中所有像素点的描述子后,采用描述子间的汉明距离作为相似性判断依据:

dist(Bl,Bri)=Fi(Bl⊕Bri);i=1,2,…,N

(9)

其中:Bl为左中心点的描述子,Bri为R′中某像素点的描述子,N为R′中像素总个数,F(·)表示逻辑1的总个数,⊕是对两个二值特征描述子求异或运算,两个特征点间的汉明距离越小,二者的匹配度越高。

4 双目视觉模型

图3为平行双目立体视觉几何模型,设定位点空间坐标为P(X,Y,Z),根据上文匹配结果得到目标定位点在左、右图像中的像素坐标分别为pl(ul,vl)和pr(ur,vr),对应的图像坐标系物理坐标分别为pl(xl,yl)和pr(xr,yr),视差为d=xl-xr,b和f分别为两摄像头间的基线距离和物理焦距,dx和dy为每个像素点在u、v方向上的物理尺寸,则依据图3,根据三角形测量[19-21]原理有:

(10)

获得抓取点深度值Z后,可通过摄像头坐标系和图像坐标系之间的转换关系求得抓取点的X值和Y值,如式(11)~(12)所示:

(11)

(12)

其中,(u0,v0)为光心在像素坐标系的坐标值。

图3 平行双目立体视觉模型Fig. 3 Parallel binocular stereo vision model

5 实验与分析

实验平台采用Intel Core i3- 3217U.1.8 GHz的PC,在VS2013上用C++和OpenCV进行调试。目标图像采集使用MYNTEYE平行双目摄像头,基线长度为120 mm,焦距为2.1 mm,图像分辨率为752像素×480像素。

5.1 双目视觉系统标定结果

在进行目标定位前,需要对双目视觉中的两个摄像头进行标定[22-23],包括左右摄像头内参和二者之间的相对位置关系,本文采用张正友标定法进行标定。实验采集标定板左右图像20组,提取其特征点进行标定实验,得到的摄像头参数见表1。从标定结果可以看出,像素焦距接近理论值f/dx=f/dy=2.1 mm/6 μm=350,两摄像头间的实际距离为117 mm,光心点坐标在(376,240)附近,均符合标定预期值。

表1 摄像头标定参数 Tab. 1 Camera calibration parameters

5.2 随机蕨目标识别

目标物体模板如图4(a)所示,分别选取目标在旋转与倾斜、遮挡、光线不足以及复杂背景等场景图像,采用结合Canny-Harris特征点的随机蕨算法进行目标识别实验,识别效果见图4(b)~4(f)。由算法效果图可见,不同放置位置和环境下的目标均可被准确识别。统计图4中各样本图像在该算法下实现目标识别的平均执行时间为302 ms,对比原始随机蕨算法的平均执行时间421 ms,匹配效率提升约28%,因此,随机蕨算法用于目标识别,具有鲁棒性好、效率高的优点。

图4 随机蕨目标识别Fig. 4 Target recognition based on random fern

5.3 基于粗-精匹配方法的目标定位

5.3.1 定位结果分析

以左摄像机为参考坐标系来描述物体的空间信息,左右摄像头同步采集图像,双目视觉系统有效工作距离从250 mm进行测量,采用粗-精匹配方法实现目标定位。如图5(a)所示为目标模板,图5(b)为左图目标识别结果,图5(c)为提取的左中心点,图5(d)为粗-精匹配后右图中得到的左中心点的匹配点。为增加直观视觉对比,图6给出了文献[4]中算法的匹配效果,该方法得到的左右目标定位点为左右图像中所有匹配特征点对的均值,而并非目标中心点。采集6组不同位置下目标的左右图像,根据得到的匹配点对恢复目标空间位置,获得数据如表2所示,经过多组实验,匹配算法中的m和n均取值为20、像素误差e取值为5合适,像素邻域s×t取值为36×36,子块数k取值为9。

图5 粗-精匹配结果Fig. 5 Coarse-fine matching results

目标在距摄像头500 mm距离范围内,本文算法求取的目标位置和实际测量值误差控制在约7 mm以内。为表征系统的定位精度并对误差进行定量分析,同时为消除目标距离不同对系统定位效果的影响,引入平均相对定位误差[11]见式(13):

(13)

将表2数据代入式(13)计算得到本文方法的平均相对定位误差为2.53%,观察表中数据可知,随着目标距离增加,定位得到的目标深度值误差呈递增趋势,相应地,x轴和y轴方向的误差也随之增大。

为进一步验证本文方法的定位精度,将基于SIFT[4]、SURF[5]和Harris-SIFT[6]的特征匹配定位方法,只采用粗匹配的定位方法,以及只采用精匹配的定位方法分别与本文基于粗-精匹配的定位方法进行比较。由于目标三维坐标的计算误差均来源于深度值,因此只给出各算法下目标的深度信息,如表3所示,其中d表示真实距离,求得的各算法平均测距误差依次为:12.6 mm、13.4 mm、11.2 mm、8.3 mm、5.2 mm、5.2 mm。

表3 不同距离下的各算法测距结果 单位:mm Tab. 3 Target ranging results of different algorithms in different distances unit:mm

根据目标距离测量结果可知,本文算法与其他算法相比,测距精度具有明显的优势。前3种基于特征匹配的定位方法将特征匹配得到的多组匹配点对的均值点作为最终定位点,而特征匹配存在一定的误匹配率,会影响定位精度。粗匹配算法由于识别的左右目标区域不完全相同,导致提取的左右中心点不一定匹配甚至相差较大,因此定位精度完全依赖于左右目标中心点的吻合程度。精匹配算法和本文算法定位精度相当,但前者相比后者缺少了粗匹配环节,匹配范围较大,会增大误匹配的发生概率(表3中“—”表示误匹配)。分析双目视觉定位误差产生的原因主要有:1)相机标定存在误差;2)立体匹配存在匹配误差;3)相机的像素分辨率有限,采集的图像质量不佳,导致定位存在误差;4)目标测量值存在误差。

5.3.2 实时性分析

为验证本文定位方法的实时性能,统计表3中6种算法实现目标定位所消耗的时间,各算法的平均运行时间见表4。观察各算法的运行时间,表中左列的3种基于传统特征匹配的定位算法耗时较大,主要由于它们需要提取多个目标特征点进行描述和匹配,匹配结束后利用多个匹配点对的平均值作为最终匹配点对完成目标定位;而表中右列的3种算法避免了多个特征点提取以及建立描述子进行匹配的庞大计算量,只需对一个点进行小范围特征匹配,有效降低了匹配计算量。其中:粗匹配算法耗时最小的原因在于采用效率高的随机蕨算法识别目标,仅将得到的左右目标中心点作为匹配结果,相比精匹配算法和本文算法没有进行后续特征点描述和匹配的计算量;而精匹配算法运行时间大于本文算法的主要原因在于,前者的匹配点数为640×(2e+1),后者为(m+n+1)×(2e+1),根据实验参数设置计算,二者候选匹配点数差值为6 809个,本文匹配算法候选匹配点数减少了,耗时也就相应少了,同时也降低了精匹配时误匹配的概率。

表4 各算法执行时间对比 单位:s Tab. 4 Running time comparison of different algorithms unit:s

6 结语

本文提出了一种双目立体视觉定位方法,采用一种基于粗-精匹配策略的立体匹配方法,在粗匹配阶段采用具有鲁棒性好、效率高的基于Canny-Harris特征点的随机蕨算法获取目标区域,得到左右图的目标中心点。在精匹配阶段,以右中心点为估计值设定搜索范围,于右图中找到左中心点的最佳匹配点,最后利用匹配结果恢复目标中心点空间坐标,实现目标定位。粗-精匹配方法获得的匹配点对具有较高的位置一致性,将其用于双目视觉系统中,定位实时性高且最终的定位误差较小,可在一定距离范围内实现目标精确快速定位,具有一定的应用价值。

猜你喜欢

双目中心点像素
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
像素前线之“幻影”2000
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
一种基于标准差的K-medoids聚类算法
Scratch 3.9更新了什么?
机械手的双目视觉定位抓取研究
如何设置造型中心点?
“像素”仙人掌
高像素不是全部