APP下载

基于双目视觉的三维测量技术研究

2019-01-30,

计算机测量与控制 2019年1期
关键词:角点双目标定

,

(1.中国科学院光电技术研究所,成都 610209; 2.中国科学院大学,北京 100049)

0 引言

近年来,基于机器视觉的三维测量技术不断发展,尤其是基于双目视觉的三维测量技术由于其非接触测量、自动化程度高等优点在机器人,无人机,工业检测等领域有着广泛的应用前景。全燕鸣等将基于双目视觉的三维测量技术应用于工件的在机测量中,实现了工业环境中双目视觉三维测量技术的应用[1]。朱先锋等在基于.net与halcon的软件平台上通过计算目标的外包矩阵从而实现目标的三维测量[2]。田小超等结合神经网络算法提出了一种基于BP神经网络的双平面标定法[3],利用神经网络的非线性映射能力对摄像机模型进行优化,从而提高三维测量精度。

基于双目视觉的三维测量技术就是利用双目相机拍摄的图像,将目标在图像上的二维像素坐标转化为三维世界坐标。当恢复了目标上的必要关键点之后,物体的整个外形和位置就可以被唯一确定。本文在对基于双目视觉的三维测量技术进行深入研究之后,针对三维测量中传统角点提取算法需要手动调整参数、角点集群、精度较低等弱点提出了一种基于随机森林的亚像素级角点提取算法,该算法不但克服了传统算法的缺点,同时具有很高的精度。

1 双目视觉系统

双目立体视觉是基于视差原理的视觉成像模型[4],利用视差重建目标的三维信息。如图1为基本的双目立体视觉原理图,左右摄像机同时对目标点P(x,y,z)成像,并分别在各自的成像平面上留下Pl(xl,yl),Pr(xr,yr)点,同时OlCl,OrCr相互平行,PlPr满足极线约束, 视差D=xl-xr,P点在摄像机坐标系下的坐标为(xc,yc,zc)。根据相似三角形原理,P点在摄像机坐标系下的坐标可以表示为:

(1)

即我们只要能知道目标点在左右成像平面上的成像平面坐标,就可以求出目标点的三维坐标,从而获得目标点的三维信息。

图1 双目视觉原理图

1.1 双目视觉成像模型

设相机模型中的四个平面坐标系分别为:像素坐标系(u,v)、成像平面坐标系(x,y)、相机坐标系(xc,yc)、世界坐标系(xw,yw,zw)[5]。双目视觉成像模型为式(2),建立了世界坐标系到像素坐标之间的转换关系。

(2)

1.2 双目视觉相机标定

根据式(2)可以看出,双目立体视觉需要先确定相机的内外参数,建立空间点到像素点的映射关系,这个过程就是摄像机标定。张正友标定算法[7]以其标定精度高、操作简单、鲁棒性好等特点成为相机标定领域最经典、最常用的标定算法之一,其核心部分主要为:

1)在不考虑摄像机畸变的条件下,求取摄像机的内外参数;

2)利用最小二乘法计算畸变系数;

3)利用第1,2步的结果再次优化内外参数,使误差最小。

2 双目视觉立体匹配

立体匹配是双目立体视觉三维测量最核心,也是最困难的部分。立体匹配算法主要分为基于区域的立体匹配算法、基于特征的立体匹配算法[11]。其中基于特征点的立体匹配算法以其匹配效率高、精度高、抗噪声能力强等特点成为最有效的匹配算法之一。基于特征点匹配的立体匹配主要包括图像预处理、特征点提取、特征点匹配。其中预处理通常包括目标提取、极线校正两个部分。

待测目标提取:

待测目标的提取对于双目视觉的三维测量不是一个必需的步骤,尤其是在待测目标工作环境较为简单的条件下。但如果目标所处环境较为复杂,则先对目标进行预提取,能极大的提高立体匹配算法的精度、优化立体匹配算法的时间复杂度和空间复杂度。目标提取最常用的算法包括形态学背景去除算法、帧差背景去除算法、图像分割算法等[9]。

2.2 图像校正

在上文中双目视觉基本原理公式(1)时,曾提到点Pl,Pr处于平行于基线的同一水平面上,有yl=yr,这是理想的平行光轴双目立体视觉模型。而现实中搭建双目立体视觉模型时,或多或少都存在偏差。图像校正就是通过对左右图像进行几何变换使得两幅图像对应匹配点处于同一条直线上,这称之为极线约束[8],如图2所示为极线校正前后的示意图。

图2 极线校正

极线约束使得双目立体视觉在进行立体匹配时,大幅度减少匹配点搜索空间,从而能够有效提高匹配的准确度,减少匹配算法的时间复杂度和空间复杂度。

2.3 特征点提取

图像特征点能够反映图像本质特征,能够标识图像中目标物体。最常用的特征点提取算法包括基于轮廓线的边缘检测和基于灰度值变化的角点检测[1]。特征点提取是整个双目视觉三维测量中对测量精度影响非常高的一个环节。传统的如Harris角点提取算法主要有以下缺点:

1)只能进行像素级角点提取;

2)难以克服角点集群问题;

3)智能化程度不够,常常需要进行比较繁琐的阈值等参数的调节;

4)引入了很多不够合理的先验,如高斯分布、线性化等过程。

对此,本文将特征点提取转化为机器学习的二分类问题,即预测图像中的像素点是角点的概率,提出了一种基于随机森林的亚像素角点提取算法。

2.3.1 随机森林

随机森林[10]是机器学习中最知名,最有效的算法之一,它基于决策树和bagging的思想构建出强大的分类回归森林。随机森林具有结构简单,计算复杂度小,容易并行化且具有极强的泛化性能等优点。如图3为随机森林原理图,其基模型为CART树,通过对样本集的样本和特征的有放回采样来构建多颗CART树,最后将每棵树的预测结果平均,得到像素点为角点的概率。

图3 随机森林

结合随机森林的预测结果,进行亚像素角点提取:

(3)

其中:P(x+s,y+t)为(x+s,y+t)处为角点的概率,Cx+s,y+t为(x+s,y+t)处的坐标,corner为最终预测的亚像素角点坐标,P(x,y)为(x,y)所在3*3邻域内概率最大的像素点,N为整数且。

2.3.2 特征向量提取

结合特征点自身的性质—与其邻近像素点灰度值高度相关,同时出于数据集大小、算法效率的考虑选用了Haar中的部分核来生成特征向量,如表1所示。

表1 生成特征向量的核

2.3.3 基于随机森林的角点提取算法

基于随机森林角点提取算法模型训练过程如下。

1)双目相机采集含有目标的图像K幅;

2)对图像进行角点标注,需要确保角点标注的准确性;

3)在每幅图像中除角点以外的位置进行采样,包括背景、物体边缘处等等,尽可能保证采样点含有不同的模式,不含有信息重复较多的点;最好保证正负样本的比例均衡;

4)计算角点和采样的非角点的特征向量,窗口大小为N*N;

5)角点记为1,非角点记为0,生成训练数据;

6)使用随机森林算法对模型进行充分训练;

7)将训练好的模型保存下来;

8)当双目相机采集到图像后,如果图像分辨率太高,且目标所占图像比例较小,需要对图像进行预处理,以降低整个角点提取的复杂度;

10)对预处理后的点进行二分类预测,精确地找出所有角点。

2.4 特征点匹配

特征点匹配就是通过一定的匹配算法,将图像上已经检测到的特征点同另一幅图像上的特征点进行匹配,在理想情况下这两点将对应现实中的同一点。因此,特征点匹配本质上是一种相似度度量。

根据不同的相似度度量标准,有不同的特征点匹配算法。通常使用MAD,SAD算法,SSD算法,NCC算法四种相似度度量准则进行特征点匹配。这四种算法前三种本质上是一个原理,就是在计算两个窗口中对应像素点的灰度值差,从而衡量两个窗口的相似度。这三种算法对光照较为敏感,而基于双目视觉的立体匹配由于左右相机视角问题会导致左右相机采集的图像亮暗程度不一,因此这三种算法不适用于双目视觉的立体匹配中。而NCC算法则对灰度值进行了归一化处理,降低了光照对立体配的影响,对双目视觉来说较为适用。

3 实验

3.1 实验设备

本次实验所使用的实验设备如图4所示,主要包括FUJIFILM工业摄相机,高精度标定板,高精度量块以及便携式工控机。相关参数见表2。

图4 实验设备

实验设备参数参数值摄像机分辨率(pix)2448∗2048焦距(mm)25光圈F1.4~F22最小物距(m)0.1重量(g)315标定板尺寸(mm)100∗100圆点阵列7∗7圆点直径(mm)6.25圆点中心距(mm)12.5精度(mm)0.001量块长(mm)60宽(mm)35高(mm)9

3.2 相机标定

根据2.2节所介绍的双目立体视觉标定流程,对相机进行标定,其中拍摄的标定板照片组数K=15。如图5为拍摄的15组标定板图像。同时标定过程中,需要注意两点:一是保持标定板背景的单一,最好是黑色或者白色;其次要防止光照对相机标定的影响。最终我们求得相机的内外参数见表3,标定平均误差为0.034 2个像素。

图5 15组标定板图像

参数类型标定参数标定结果左相机标定结果右相机标定结果内参数焦距(mm)0.02400.0240畸变系数(1/m2)-180.5661-139.5703单个像元宽(μm)3.453.45单个像元高(μm)3.453.45主点x坐标(pix)1202.75641192.6069主点y坐标(pix)999.73251002.0926图像宽(pix)24482448图像高(pix)20482048外参数旋转矩阵R(°)[0.1836, 0.0014, 0.0026]平移矩阵T(m)[0.1133, 357.7735, 0.2940]

3.3 三维测量实验

我们在角点提取算法中选用的随机森林算法是基于Python的著名机器学习库scikit-learn的RandomForestClassifier接口,这是一个由前谷歌工程师David Cournapeau发起的开源机器学习项目,包含了当今机器学习领域内绝大多数分类、回归、 聚类、降维等算法。同时scikit-learn提供交叉验证,这对于构建一个稳定的机器学习模型有极大的好处。三维测量主要试验步骤如下:

1)双目相机采集含有量块的图像90幅(左右图像各45幅),每幅图像6个角点;

2)对图像进行角点标注,在每幅图像中除角点以外的位置进行采样,包括背景、物体边缘非角点处,角点总共为540,非角点540;

3)以被选择的点为窗口中心,在5*5的窗口内计算点的特征向量;

4)角点记为1,非角点记为0,生成训练数据;

5)使用随机森林算法对模型进行充分训练,同时进行 5折交叉验证;

6)将训练好的模型保存下来,以便重复使用;

7)对待预测的图像进行预处理,剔除掉绝大多数平滑的点,减少计算量;

8)对预处理后的点进行二分类预测,每个位置选取概率值最高的点作为角点。

9)在第8步预测的点周围3*3的窗口内,利用式3计算亚像素角点坐标(N=3)。

其中随机森林模型训练的主要参数设置如表4,仅供参考,在训练模型时根据实际情况进行调节。

表4 随机森林关键参数设置

3.4 误差分析

当像素点的三维世界坐标被还原之后,一个孤立的点,我们难以度量其准确性。因此,我们计算出量块多个角点的世界坐标,通过两点坐标计算长度来衡量三维世界坐标重建的准确性。我们使用不同的5组图像,使用3.2中训练好的模型进行检测,将5次的测量结果平均,如表5所示。

表5 测量结果

通过表5可以看出,使用随机森林来提取特征点,进而三维测量,是具有较高精确度的,随机森林的亚像素级能进一步减小测量误差。

4 结语

本文深入研究了利用双目立体视觉进行三维测量的技术与方法,同时针对其中的难点问题,引入了基于随机森林的机器学习算法来进行特征点提取。基于机器学习强大的自学习能力,该算法具有以下优点:

1)传统算法如harris等特征点提取算法,每次测量都需要手动设置参数和阈值;而基于随机森林等机器学习的算法一旦模型训练好之后,后续测量将是比较自动化的过程。

2)传统的特征点提取算法几乎都存在角点集群问题,需要反复进行阈值调整,而本文的方法可以依据随机森林预测每个点是角点的概率,选取概率最大的点作为角点,不会存在角点集群问题。

3)传统的特征点检测算法只能进行像素级角点提取,欲进行亚像素级角点提取,则会根据梯度等信息来对角点及邻近角点进行插值或者最小二乘拟合,本文则直接充分利用机器学习的预测的概率来进行加权求取,更加简单和直观,具备良好的可解释性。

通过一系列的研究和改进,精确的将像素坐标转化为三维世界坐标,从而利用点的三维世界坐标来实现三维测量。

猜你喜欢

角点双目标定
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
多支撑区域模式化融合角点检测算法仿真
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
基于点云聚类的垛型角点检测方法
使用朗仁H6 Pro标定北汽绅宝转向角传感器
角点检测技术综述①
机械手的双目视觉定位抓取研究