罗 丹 廖志贤
(1.桂林电子科技大学信息与通信学院,广西 桂林 541004;2.广西师范大学电子工程学院,广西 桂林 541002)
基于OpenCV的双目立体视觉测距
罗 丹1廖志贤2
(1.桂林电子科技大学信息与通信学院,广西 桂林 541004;2.广西师范大学电子工程学院,广西 桂林 541002)
双目立体视觉测距原理就是利用两台摄像机从两个视点获取目标点在不同视角下形成的图像坐标,利用成像几何模型计算同名像点图像坐标偏差,来获取目标点的三维坐标,从而实现距离测量,它在高速公路安全车距测量上有着极大的应用前景。当前的测距技术有主动测距法和被动测距法,论文采用的是基于OpenCV的被动测距法,得到摄像机标定的参数和立体匹配的对应特征点后,该测距算法较容易实现。经过实验验证,该算法在一定测量范围内达到精度要求。
双目立体视觉;摄像机标定;立体匹配;测距
基于计算机视觉理论的视觉测距技术是今后发展的一个重要方向,它在机器人壁障系统、汽车导航防撞系统等领域有着广泛的应用前景。目前的测距方法主要有主动测距和被动测距两种方法。论文采用的是被动测距法。被动测距法是在自然光照条件下,根据被测物体本身发出的信号(如光信号)来测量距离,主要包括立体视觉测距法、单目测距法、测角被动测距法等。立体视觉测距法是仿照人类利用双目感知距离信息的一种测距方法,直接模拟人的双眼处理景物,简便可靠,但该方法的难点是选择合理的匹配特征和匹配准则。
双目立体视觉系统采用两台摄像机同时从两个不同视点获取同一景物的多幅图像,即立体图像对,通过测量景物在立体图像对中的视差,再利用双目视觉成像原理就可以计算出目标到摄像机的距离。立体匹配采用OpenCV库中的块匹配立体算法,在得到摄像机参数和匹配点后再利用最小二乘法即可算出三维信息。
首先介绍双目视觉所涉及到三个坐标系:世界坐标系、摄像机坐标系和图像坐标系。世界坐标系中的点坐标记为摄像机坐标系用表示。图像坐标为摄像机所拍摄到的图像的二维坐标,一般有两种表示方法:是以像素为单位的图像坐标,是以毫米为单位的图像坐标。建立以毫米为单位的图像坐标是因为坐标只表示了像素在数字图像中的行数和列数,并没有表示出该像素在数字图像中的物理位置。
图1为平行双目视觉模型,即参数相同的两个摄像机平行放置,两光轴互相平行且都平行于z 轴,x 轴共线,两摄像机光心的距离为B(即基线距)。图中O1、O2为左右两摄像机的焦点,I1 、I2为左右摄像机的像平面,P1 、P2 分别是空间点P(X,Y,Z)在左右像平面上的成像点,f是摄像机的焦距。若视差d 定义为│P 1- P2│,则点P到立体视觉系统的距离为:
图1 平行双目视觉模型
摄像机标定是为了建立三维世界坐标与二维图像坐标之间的一种对应关系。系统采用两个摄像机进行图像采集,设定好两个摄像机之间的距离(即基线距),用摄像机同时采集放在摄像机前的标定物。摄像机标定采用的是张正友的标定方法,棋盘格大小为 30mm 30mm,角点数为 11 7。标定板的规格如图2所示。
图2 平面标定板规格
张正友的标定方法需要摄像机从不同角度拍摄标定板的多幅图像。由于两个摄像机是向前平行放置的,且基线距固定,所以只需摆放标定板的位置变化即可。摄像机为针孔成像模型,则空间点与图像点之间的映射关系为:
为方便计算,使标定板所在平面的Z坐标均为0,即Zw=0的平面,则上式可变为:
其中,A为摄像机的内参矩阵,(R, t)为摄像机外参矩阵,s为尺度因子。令则上式可写为:
立体匹配是通过寻找同一空间景物在不同视点下投影图像中像素间的一一对应关系。
立体匹配是匹配两个不同的摄像机拍摄得到图像的三维点。立体匹配采用的是 OpenCV提供的块匹配立体算法cvFindStereoCorrespondenceBM,该算法使用了一个叫“绝对误差累计”的小窗口(SAD)来查找立体校正后左右两幅图像之间的匹配点。这个算法只查找两幅图像之间的强匹配点(即强纹理)。
块匹配立体算法有以下三个步骤:
(1)预过滤,使图像亮度归一化并加强图像纹理。
(2)沿着水平极线用SAD窗口进行匹配搜索。
(3)再过滤,去除坏的匹配点。
匹配过程通过在整幅图像滑动 SAD窗口来完成。对左图像上的每个特征而言,搜索右图像中的对应行以找到最佳匹配。校正之后,每一行就是一条极线,因此右图上的匹配位置就一定会在左图像的相同行上(即具有相同的y坐标)。如果特征有足够多的可检测的纹理,并位于右摄像机的视图内,就可以找出对应的匹配位置。
视差图是经过左右图像的对应点匹配后得到的,从视差图可以看出匹配的效果。若图像中的匹配点比较稠密(即匹配点多),则得到的视差图和原图相似度就大;若图像中的匹配点比较稀疏,则得到的视差图和原图相似度就小。论文采用的匹配方法得到的视差图如图3所示,图4为原图。
图3 视差图
图4 原图
在已知摄像机的内外参数的情况下,计算得到透视投影矩阵,根据图像坐标系与世界坐标系的关系,则可以求出距离信息。在双目视觉中,摄像机同时拍摄到同一个物体不同角度的两张图像,由同一点在两幅图像中位置信息可计算出它在世界坐标中的三维坐标。
根据(4)式和(5)式,消去比例系数k1和k2,可得到如下四个方程组:
论文采用一个摄像机进行实验,按照图一的方法,现在左位置点拍摄一幅图像,此时标定板位置保持不变,然后让摄像机只在X轴方向移动基线的距离,在Y和Z轴方向都没有移动,再在右位置点拍摄一幅图像,在左右拍摄点都拍摄图像后,再换标定板的摆放方式,继续在左右拍摄点拍摄得到左右图像,依此类推。实验采用左右各 9幅图像来标定,图像大小为2304*1728,得到的标定结果如下:
而实际设置两摄像机之间的距离为200mm,可见标定得到的 T的 X方向上的坐标为 199.4809mm,与实际设置的距离200mm很接近,旋转矩阵R基本接近单位阵,说明两摄像机之间基本没有旋转,符合论文所要求的双目视觉模型。
标定好之后,再进行立体标定,然后进行立体匹配,立体匹配后取某些对应的匹配点,采用前文介绍的测距算法,得到如下实验数据:
表1 测距结果
本文主要研究基于Opencv的双目立体视觉的距离测量,它在车载摄像机、安全车距、机器人壁障等场景中得到应用广泛,是目前及将来研究的热点之一。由实验数据可知,在摄像机标定和立体匹配后,根据OpenCV的测距算法,在2米的距离内,误差都是小于1.5%,可见该算法还是能达到一定的精度。由于标定误差、人为误差及其他因素的影响,如立体匹配时只查找两幅图像之间的强匹配点(即强纹理),这些因素的影响导致了在距离摄像机越远的地方测量得到的距离信息精度越差。
[1]赵勋杰,高稚允.光电被动测距技术[J].光学技术,2003,29(6):652-656.
[2]Okutomi M,Kanade T. A multiple-baseline stereo [J]. IEEE transactions on Pattern Anal & Mch Intell, 1993,15(4):353-363.
[3]马林.基于双目视觉的图像三维重建[D].山东:山东大学,2008.
[4]陈胜勇,刘盛.基于 OpenCV的计算机视觉技术实现[M].北京:科学出版社,2008.
[5]Zhengyou Zhang. A Flexible New Technique for Camera Calibration[J].Pattern Analysis and Machine Intelligence, IEEE Transactions on.2000,22(11):1330-1334.
TN911.73
A
1008-1151(2011)04-0052-02
2011-01-09
罗丹(1985-),女(壮族),广西河池人,桂林电子科技大学信息与通信学院硕士研究生,研究方向为图像信号处理;廖志贤(1986-),男(壮族),广西百色人,广西师范大学电子工程学院硕士研究生,研究方向为信号处理与自动控制。