时间:2024-07-28
张 静,李 强,杨馥霖
(兰州理工大学能源与动力工程学院,甘肃 兰州 730050)
20世纪80年代初,麻省理工学院的MARR首先提出了一种双目匹配算法[1],双目立体视觉的理论基础由此奠定。目前双目立体视觉在视觉伺服机器人、月球地表探测[2]、无人驾驶、果蔬采摘机器人、医学成像等领域广泛运用。系统搭建、摄像机标定、图像矫正、立体匹配以及视差运算等都是双目立体视觉测量技术实现的重要环节,在每个环节中都会产生误差。一般认为误差形成的原因有3种:1)硬件制造方面造成的误差,如CCD面阵的分辨率误差,可通过优化制造工艺加以改善;镜头的畸变(径向和切向)、成像平面和镜头不平行等,可在对摄像机标定的过程中得到矫正。2)软件算法造成的误差,国内外已有很多学者提出了各种解决匹配误差的方法,这些算法日渐完善,误差也得到了控制。3)系统结构参数组合和人工操作造成的误差,如光轴与Z轴夹角、基线距、焦距、分辨率、物距等,这些参数的组合需要根据应用场景精度需求通过实验确定,实验台的人工标定过程也会引入误差。本文将通过理论分析与实验着重讨论第3种误差。
在计算机视觉领域,一般用针孔模型[3]对摄像机成像进行分析。如图1所示,QO1b和光轴Z1以及QO2c和光轴Z2构成了最简单的两个针孔模型。双目视觉测量的基本原理是利用空间同一点在两摄像机画面上的视差来计算空间点的三维坐标。现有双目传感器的镜头有两种摆放姿态,即正直摆放姿态(两光轴相互平行)和交向摆放姿态(两光轴不平行)。
图1 双目立体视觉原理图
两摄像机坐标系分别为O1X1Y1Z1和O2X2Y2Z2,假设两个摄像机对称放置,光轴Z1与Z2相交于P,相应像素坐标系为O11X11Y11Z11和O22X22Y22Z22,两坐标原点间距离为基线距离B。世界坐标系OwXwYwZw与O1X1Y1Z1重合。光轴Z1、光轴Z2与Z轴夹角均为θ。假设两摄像机的焦距f相等,即f=O1O11=O2O22。空间上任意点Q(x,y,z)在O2X2Y2Z2中的坐标为Q(x2,y2,z2),对应像素点坐标分别为(X1,Y1)、(X2,Y2)。根据小孔成像原理以及坐标变换可推导出Q(x,y,z)的坐标为:
(1)
因此,想要确定某点的三维坐标,则要根据左摄像机像面中该点,找到其在右摄像机像面中对应的匹配点。
由于制造工艺的限制,实际使用的摄像机主点(光轴与感光平面交点)不能保证在成像设备的正中心位置,所以引入两个变量参数cx和cy表示真实主点与理想主点间的偏移[4]。在一个普通摄像机上,一般使用两个不同的焦距fx和fy。假设左成像平面上的点q用矩阵表示为q=[X1,Y1,1]T,目标物体点Q用矩阵表示为Q=[x,y,z,1],引入参数s(比例因子)和单应性矩阵H,定义:q=sHQ,其中H=MW。
(2)
式中:M为摄像机内参数矩阵。式(2)表述了现实世界点Q在外参数矩阵基础上,经过摄像机的镜头,并通过针孔成像转化成为像素点的过程。
W=[RT]
(3)
式中:R,T为外部参数,R为旋转矩阵,T为平移向量;W为摄像机外参数矩阵。式(3)表述了现实世界点Q(世界坐标)经过旋转平移,落到另一个现实世界(摄像机坐标系)上的过程。
假设校正后的坐标点为qp(xp,yp),畸变后的坐标点为qd(xd,yd),因为有透镜畸变,则有
(4)
式中:(k1,k2,p1,p2,k3)是摄像机的畸变矩阵,表述没有落在理论计算该落在位置的现实世界点Q产生的偏移和变形;r为旋转半径。
对摄像机标定就是为了得到摄像机的内部参数、外部参数和畸变矩阵,本文采用张正友标定法,该标定法具有较好的精度和鲁棒性[5-6]。开源计算机视觉库OpenCV由Intel公司开发,采用C/C++语言编程,具有开源、轻量级、高效的特点,实现了图像处理和计算机视觉方面的很多通用算法,在对实时性要求较高的计算机视觉研究中有广泛应用。本文在Microsoft VS 2010开发环境下,基于开源计算机视觉库OpenCV,在文献[7]摄像机标定与立体匹配程序的基础上对代码进行了重构、对界面进行了调整。摄像机标定与立体匹配程序能够实现摄像机单双目标定、图像矫正、立体匹配和视差运算等过程,从而计算出被测物体的深度信息。
如图2所示,本文使用40mm×40mm平面黑白棋盘格标定摄像机,双目摄像机从不同的角度、不同的距离拍摄30幅图像,对棋盘图像进行标定。表1为通过摄像机标定与立体匹配程序获得的一组标定数据。
图2 棋盘图和检测的所有角点
参数左摄像机右摄像机内部参数A=9.86×10203.20×10209.92×1022.40×102001éëêêêùûúúúA=9.74×10203.20×10209.75×1022.40×102001éëêêêùûúúú畸变矩阵[-1.49×10-1 1.11 6.40×10-49.49×10-3 0][-1.30×10-1 1.11 -1.18×10-2-8.10×10-6 0]外部参数R=9.99×10-1-3.40×10-2-4.08×10-23.23×10-29.99×10-1-4.03×10-24.21×10-23.90×10-29.98×10-1éëêêêùûúúú T=-8.84×10-8.28×10-2-1.51×101éëêêêùûúúú
有了旋转矩阵R和平移向量T,立体矫正Bouguet算法就能简单地使双目视觉标定中采集的左右图像的每幅图像的重投影次数最小,且重投影畸变最大,从而使立体匹配更加准确和快速。在OpenCV中通过stereoRectify()函数完成以上矫正功能。在OpenCV中使用reprojectImageTo3D()函数可实现测距。OpenCV提供了Bouguet和Hartley等双目矫正以及BM和SGBM等双目匹配的多种算法。
文献[8]、[9]详细讲述了摄像机标定、图像矫正、立体匹配与测距的原理。摄像机标定与立体匹配程序参数设置如图3所示。
图3 摄像机标定与立体匹配程序参数设置图
针对双目立体视觉测量中,基线距离B、光轴与Z轴夹角θ等结构参数在实验中难以测量的问题,本文设计了一套较为规范的双目立体视觉实验台,实现了双目测距,并研究了双目视觉测量系统的结构参数对测量精度的影响。
图4为实验台的总体框架图,由软件和硬件两部分组成,能够精确设置并读取旋转半径r、光轴与Z轴夹角θ、物距L等结构参数,可通过标定、图像矫正、立体匹配以及视差运算实现双目测距。
图4 双目立体视觉实验台总体框架图
图5为3D打印的实验台,实际搭建的双目立体视觉实验台选用的工业相机为显微精工GY200,其像素为200万,焦距为2.8mm~12mm,镜头视角101°×33°。工作站配置为Win10以及酷睿i7处理器。
图5 双目立体视觉实验台的实际搭建
双目视觉系统结构参数模型如图6所示。在实验中,基线距离B=2rcosγ-2(f+a)sinθ,其中a为一个可求的常量,γ为旋转角度,由三角形相似可得γ=θ。现有研究如文献[7],是将摄像头在一平面固定摆放后进行实验,而本文进行了光轴与Z轴夹角θ和基线距离B同时变化的实验。此模型能够实现双目视觉测量系统的基线距离B、物距L、相机与Z轴夹角θ等结构参数精确设置、随意组合,能够大大提高实验效率,减小人工操作带来的误差。
图6 实验台双目视觉系统结构参数模型
1)相机分辨率、物距对双目视觉精度的影响。
三维重建是指对三维物体建立适合计算机表示和处理的数学模型,在双目视觉研究中,一般采用基于视差图的三维重建方法。分辨率较高的摄像机具有较高的测量精度,且测量较远物体时精度衰减较小,但价格也更高。本实验所用摄像机,其像元尺寸为2.8μm×2.8μm。对于一个既定的双目视觉系统,一般物距L越小,即物体距离摄像机越近,误差越小,精度越高[10]。
2)光轴与Z轴夹角、基线距离对双目视觉精度的影响。
通常情况下,左右摄像机对称布置,且各项参数比较接近,如图7所示。
图7 双目视觉系统结构模型
图7中,摄像机的视角为α,摄像机主光轴与Z轴之间的夹角为θ。该双目视觉系统的可视范围W如下:
(5)
空间中的点Q(x,y,z) 在左右图像上的对应点分别为u1,u2,设u1的横坐标为U1。点Q与左右摄像机光心的连线和左右摄像机光轴的夹角分别为β1,β2,如图 7所示。根据三角形相似原理可得:
(6)
所以:
(7)
将式(7)对U1求偏导可得:
(8)
又由式(7)可得
(9)
将式(9)代入式(8)可得
(10)
由式(10)可知,理论上,对于特定的焦距和空间点,当θ与x,z满足θ=90°-arctan(z/x)时,误差可以取到最小值。
本文在实验台上进行了不同旋转半径r下系统标定误差随光轴与Z轴夹角变化(-6°~9°)的实验,变化规律如图8所示,当正向角度过大时,图像集中于中间,当反向角度过大时,图像集中于两侧,这两种情形都不能使图像同时被左右摄像机完全采集。就本文中所用摄像机而言,在θ=3°时标定误差最小,且测量物体在采集图像中占比较大。
图8 不同r下系统标定误差随γ的变化规律
基线长度的变化不仅会引起系统结构的改变,也会对系统测量精度造成影响。
测量误差△L的公式为:
(11)
式中:d为视差;δ为一个像素单位。
将d=fB/L代入式(11)可得:
(12)
由式(12)可知,当焦距和空间点确定后,基线距离B增大,测量误差会减小。在实验中基线距离B=2rcosγ-2(f+a)sinθ,由图8可知,随着基线距离增大,误差在逐渐减小,同时基线距离越大,交叉视野越往远处移动。在实验中发现基线距离越大,测较远物体精度越高,因为较近物体无法完全进入交差视野。
测距精度的外在因素取决于焦距与基线的配合,内在因素取决于测距算法的编写是否有效,首先根据目标距离确定镜头焦距,之后通过实验确定旋转半径r和旋转角度γ,从而间接确定基线距离。焦距选型在于让目标在图像中占据合理的比例,基线选型在于确保双目有足够的交叉图像面积,二者的选型要重复实验后才可定下来。
从应用场景需求出发的结构参数确定方法如图9所示,针对由旋转半径r、旋转角度γ表述的双目视觉结构参数模型,本文提出了一种根据实际应用场景需求进行双目视觉测量系统结构参数选择的方法:根据参考值初步搭建系统,先确定部分参数,在当前算法下根据剩余结构参数的来回组合实验结果,进行最优结构参数的选择,最后完成结构参数的确定。
图9 从应用场景需求出发的结构参数确定方法
文献[10]给出了利用双目视觉测量系统搭建的一些结构参数参考值,如:当基线距离B在0.8L~2.2L之间时,系统的测量误差变化较小。当基线距离B<0.5L或B>3.0L时,应根据具体情况对系统结构参数做适当调节,从而减小测量误差,基线距离越大测量精度越高。
本文选用苹果为目标物体,物距L为50cm~100cm,进行了测距实验。在实验中,得出光轴与Z轴夹角为3°,基线距离为10.5mm时,待测物体在采集图像中占比最大,测量精度为0.3mm,精度最高,证明本文的结构参数确定方法有较高的实用价值。
本文介绍了双目立体视觉的原理,针对双目立体视觉的标定、立体矫正、匹配与测距等环节进行了比较全面的分析,设计了一套较为规范的软硬件实验台,结合实验台进一步提出了由旋转半径r、旋转角度γ表述的双目视觉系统结构参数模型,具有较高的实用价值。本方法仍有许多深入研究的空间,如何通过优化视觉算法来提高测量精度,将在今后做进一步研究。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!