基于双目立体视觉的目标物定位研究
2018-03-10张曙华云松
张曙+华云松
摘 要:为了实现视觉获取目标物立体信息,以立体测量原理为基础,采用Matlab和Opencv相结合的方法,设计了基于双目立體视觉的目标物定位系统。该系统采用棋盘标定法,利用Matlab完成双目相机标定,采用BM(Block Matching)立体匹配算法在VS2010环境下配合Opencv3.0.0库,完成左右图像对的匹配,生成视差图。通过将二维空间点重投影至三维空间,便可求得目标点的空间三维坐标,最终实现通过鼠标点选后输出选定点的空间坐标。实验表明,该系统拥有较高的测量精度,尤其在150cm距离下可获得最佳的测量精度。
关键词:立体视觉;目标定位;相机标定;立体匹配;重投影
DOIDOI:10.11907/rjdk.172304
中图分类号:TP317.4
文献标识码:A 文章编号:1672-7800(2018)002-0198-04
0 引言
计算机视觉技术发展迅速,其中立体视觉技术成果丰硕,双目立体视觉技术正越来越多地应用在工业检测和机器人导航等领域,其可以在不接触目标物的基础上获取立体信息。该技术的核心工作是摄像机标定、立体匹配和三维重建[1]。
双目视觉系统采用Zhang提出的棋盘标定法,利用Matlab完成双目相机的标定。在VS2010环境下结合Opencv3.0.0,利用BM(Block Matching)算法实现左右图像对的匹配,最后通过将二维坐标点重投影至三维空间的方式获得目标的三维空间坐标。
1 双目立体视觉测量原理
双目视觉测量原理:从两个不同的观察角度获取同一物,获取在不同视角下的感知图像,通过三角几何原理计算图像像素间的位置偏差(即视差),获取景物的三维信息[2]。
本文采用平行双目立体视觉模型,即两相机平行放置,如图1所示。
P为空间中任意一点,当使用双目相机同时观察P点时,P点在左右相机的图像坐标是Pl=(xl,yl),Pr=(xr,yr),并有yi=yr=y,由三角几何关系可得:
视差D=xl-xr,故可求出在摄像机坐标系下P点的坐标为:
所以,如果左相机平面上的点在右相机平面上有且只有一个点与其对应匹配,则该点在摄像机坐标系下的坐标便可确定,从而进一步得到该点在空间中的坐标信息。
2 摄像机标定
2.1 摄像机标定原理
为获取目标物的立体信息,必然涉及到不同坐标系之间的转换,双目视觉系统需用到的坐标系有:世界坐标系、图像坐标系和摄像机坐标系[3-5]。摄像机标定即指构建摄像机图像像素位置与空间场景点位置之间的关系[6],基本思路是:由已选定的摄像机模型,通过事先检测获得的点的图像坐标和世界坐标,计算摄像机的模型参数,从而得到摄像机的投影矩阵M[7-8]。
近些年摄像机标定技术发展很快,各具特点的标定方法层出不穷,在对比各种方法的优劣之后,本文选择棋盘格标定法对摄像机进行标定,该方法采用的是针孔模型。
图像坐标系分为图像平面坐标系和平面像素坐标系。图像平面坐标系的单位是物理单位,通常以mm为单位,图像像素坐标系是以像素为单位,它们的转换关系如下:
其中,(u,v)为图像像素坐标,(x,y)为图像平面坐标。
世界坐标系是原点可定义为空间任意一点的直角坐标系,摄像机坐标系是以镜头光心为原点的直角坐标系,其Xc轴和Yc轴分别平行于图像坐标系的x轴与y轴,Zc轴垂直于图像平面。世界坐标系与摄像机坐标系关系如下:
其中M为3×4矩阵,为投影矩阵。M1为摄像机内参数矩阵,M2为摄像机外参数矩阵。
2.2 摄像机标定
摄像机的标定有多种手段实现,本系统采用Matlab工具箱实现相机标定。相比其它方法,该方法更易于实现且精度更高,其实现过程如下:
(1)读入多张用于标定的棋盘格图片,对于左右相机分别进行标定,本文选择分别读入14张6×9的棋盘格图片,如图2所示。
(2)读入图片成功后,可在Matlab工具箱中选取提取角点按钮,完成标定图片的角点选取,如图3所示。
(3)完成角点提取后,通过Matlab工具箱的Calibration选项,对单目相机进行标定,分别对左右相机按以上步骤完成单目标标定,最终得到对应相机的内参数。
(4)完成单目标标定后,输入命令stereo_gui则可启用双目标定工具箱,首先读入左右相机各自的内参数,之后再对双目相机进行标定,最终得到旋转向量R和平移向量T,即可知道双目相机之间的位置关系。
3 立体校正
当两个像平面完全行对准时,计算立体视差最简单[9]。然而由于两台摄像机几乎不可能有准确的共面和行对准成像平面,完美的对准结构在真实的立体系统中几乎不存在。因此,要对两台摄像机的图像重投影,使其精确落在同一个平面上,而且图像的行要完全对准到前向平行的结构上。
空间的三维点通过投影矩阵P可以转换为二维点。
其中,屏幕坐标为(x/w,y/w)。如果屏幕坐标和摄像机内参数矩阵已知,二维点便可重投影到三维空间之中,重投影矩阵如下:
4 立体匹配
立体匹配是寻求两幅图像之间的对应关系,即匹配左右图像上相对应的点,并由此生成视差图。立体匹配算法分为区域匹配、特征匹配和相位匹配[10]。常用的是区域匹配和特征匹配。基于区域的匹配方法对景物表面结构和光照反射较为敏感,当相关窗口内的像素点视差变化较大时,出现误匹配的可能性也很大。基于特征的匹配方法可通过特征点进行匹配,因此对环境照明的变化不太敏感。但是通常特征点并不是连续的点,所以匹配后无法得到密集的视差图[11]。endprint
本系统采用SAD(Sum of absolute differences)匹配算法完成左右圖像对的匹配。SAD是一种块匹配算法,这种算法在运算速度方面具有绝对优势。它的基本思想是对窗口内的灰度值求和,并与另一张图片窗口内的灰度值和作比较,根据灰度值的和是否接近来判断图像是否匹配。
实现步骤如下:①设定一个窗口W覆盖住左图像,然后求得领域内灰度值的和;②设定一个同样大小的窗口D覆盖右图像,求得领域内灰度值的和;③将两窗口灰度值的和相减,并求绝对值;④移动右图像的窗口重复步骤②和步骤③;⑤相减之后,求得绝对值最小的窗口,该窗口即为左边窗口内图像在右图像中的匹配像素块。
完成匹配后即可生成视差图,如图4所示。
在式(10)中,(X/W,Y/W,Z/W)即空间三维坐标,在得到了视差图之后自然可以求得图像中点对应的空间三维坐标点。
5 实验结果
标定实验采用左右相机拍摄的各14张棋盘格图片进行,得到的相机内外参数如表1所示。
在进行了相机标定之后,将得到的参数代入到公式(10)即可求得目标的坐标值。由于该系统是通过鼠标点选来确定所要选定的点,所以每次的点选难免会有不同,但其总是位于同一平面,所以选择求Z坐标,即目标点距离光心的距离来验证试验结果的误差。通过7组试验得出的结果可知,在目标距相机光心的距离在150cm时精度是最高的,之后随着距离的变远和变近,测量的精度都呈下降趋势。测量结果如表2所示。
6 结语
本文基于双目立体视觉测量原理,对立体标定技术以及立体匹配技术进行了研究,在Matlab中实现了双目相机的标定,并在VS2010环境下结合Opencv3.0.0实现了该系统。该系统可生成目标物的视差图,通过鼠标点击视差图即可输出该点在空间中所对应的三维坐标。通过多次试验得到数据可知,该系统对于150cm距离的目标物精度较高,随着距离的变远或变近,测量精度都呈下降趋势。
参考文献:
[1] 尚倩.基于双目立体视觉的目标识别与定位[D].北京:北京交通大学,2011.
[2] 马颂德,张正友.计算机视觉-计算机理论与算法基础[M].北京:科学出版社,1998:72-75.
[3] 曲学军,张璐,张凌云.基于新的成像模型的摄像机标定与三维重建[J].仪器仪表学报,2011,32(8):1830-1836.
[4] 夏茂盛,孟祥磊,宋占伟,等.基于双目视觉的嵌入式三维坐标提取系统[J].吉林大学学报:信息科学版,2011,29(1):61-66.
[5] 于勇,张晖,林茂松.基于双目立体视觉三维重建系统的研究与设计[J].计算机技术与发展,2009,19(6):127-131.
[6] LUO HONGGEN,ZHU LIMIN,DING HAN.Camera calibration with coplanar calibration board heal parallel to the imaging plane[J].Sensors and actuators a: Physical,2006,132(2):480-486.
[7] 李鹏,王军宁.摄像机标定方法综述[J].山西电子技术,2007(4):77-79.
[8] 于起峰,尚洋.摄像机测量学原理与应用研究[M].北京:科学出版社,2009:50-126.
[9] GARY BRADSKI,ADRIAN KAEBLER.学习OpenCV[M].于世琪,刘瑞祯,译.北京:清华大学出版社,2009:467-468.
[10] 夏永泉,刘正东,杨静宇.不变矩方法在区域匹配中的应用[J].计算机辅助设计与图形学学报,2005,17(10):2152-2156.
[11] 刘盼,王金海.基于平行双目立体视觉的测距系统[J].计算机应用,2012,32(S2):162-164.endprint