双目视差测距中的图像配准技术研究1
扫描二维码
随时随地手机看文章
引言
光电测距技术从光源的角度可以分为两种:主动测距和被动测距。主动测距需要人造光源照射目标物体,通过反射回来的光的纹理等特征,或直接计算光的传播时间来确定目标的距离。相对于主动测距的是无人造光源照射的被动测距,它利用自然光辐射分析得到目标的距离。因此,被动测距具有防信息泄露,隐蔽性好,测距快速灵活,自动化程度高,小巧轻便,容易使用等优点,在机器人视觉、航空测距、智能交通、军事等领域有较大的应用价值。
利用三角视差原理,人类能通过双眼获取环境三维信息中的深度信息。运用几个相机对同一景物从不同位置拍照获取图像,进行图像处理得到视差,进而从视差中恢复距离。在这个过程中,图像配准是关键步骤之一。对视差测距的约束也主要体现在所采用的配准策略上。图像配准就是通过确定两幅图像的几何变换参数,建立两幅图像之间的对应关系,对其中一幅图像进行几何变换的过程。在影像分析、机器视觉、三维重建等方面,图像配准技术是图像分析和处理的基本问题。本文就双目视差测距中的图像配准问题进行了探讨,设计实验系统并用BlockMatching方法对图像进行匹配,测得目标距离。
1双目视差测距模型
图1所示为双目立体视觉测距系统原理图。
图1 双目立体视觉测距系统原理图
左右两个相机平行放置,光轴距离为師即基线距离)。Q为被测物体上的一点,到像平面的垂直距离为L,f为组合物镜焦距。Q在左右相机上的成像点分别为Q1、Q2,由相似三角形可知:
由上两式可得出目标点到相机的距离为:
其中,x1-x2为目标点Q在左右图像上成像的位置差即视差,可由图像配准得到;b为基线距离,由相机标定确定;f为相机给定参数。
2几种图像配准方法比较
立体匹配算法大致可分为两类:一类为基于区域的算法,这种算法的优点是很容易恢复出高纹理区域的视差图,速度快,占用内存少,但在低纹理区域效果不好,会产生大量误匹配,导致边界模糊。另一类为基于全局的算法,此算法一般用平滑性约束和相容性约束来构成一个评价函数,再通过各种最优算法求得评价函数的最小值。这种算法由于是全局寻优,因而它的匹配准确性较高,但匹配速度很慢。
2.1BlockMatching块匹配法
BlockMatching(BM)模块匹配法是一种基于区域的局部匹配算法。该算法使用SAD(SumofAbsoluteDifference)"绝对误差累计”的小窗口来查找立体校正后左右两幅图像之间的匹配点,图2所示为SAD算法的示意图。
构造小窗口后,用该窗口覆盖左摄像头的图像,选择出窗口覆盖区域内的所有像素点;同样用该窗口覆盖右摄像头的图像并选择出覆盖区域的像素点。左边覆盖区域减去右边覆盖区域,求出所有像素点差的绝对值的和即SAD值。然后移动右边图像的窗口,再次计算SAD值。找到一定范围内的最小的SAD值对应的右图像素块就是左图最佳匹配像素块。由匹配块与当前块的相对位置计算出运动位移,所得运动位移即为当前块的运动矢量,通过运动矢量得到视差值。BM模块匹配法就是通过在整幅图上使用SAD滑动窗口完成对其中一幅图像中特征点的匹配。
2.2GraphCut图切割匹配法
GraphCut图切割法是OpenCV中另一种基于全局的匹配算法,它首先对参考图像进行Canny检测,再用初始窗口对每个像素用自适应窗口算法进行计算。基于全局的匹配算法由于是全局寻优,因而可以获得较高的匹配准确性,特别是采用GraphCut图切割思想的算法精度很高。但是,由于图切割方法所建立的网格图包含了大量的节点和边缘,每个像素都需要遍历该像素所有可能的像素差来计算视差,这占用了大量的时间,降低了效率。因此,GraphCut图切割算法不适用于要求快速处理的实时性场合。
3双目立体视觉BlockMatching块匹配法的实现
3.1实验环境
该实验主要通过搭建硬软件环境,结合计算机编程实现基于区域的局部匹配算法凯根据系统要求,本实验选定SunTime130万像素CCD彩色数码工业相机与1/2"C口8~50mm手动光圈镜头。在双相机系统上利用拍摄的标定板进行标定和匹配得出数据。以VS2008+OpenCV2.3.1为编程环境,进行匹配测距实验。
实验硬件系统如图3所示,两组相机平行放置于长度为30cm的标尺条上,下方用滑轮固定,可以根据需要调整两相机的间距。标尺条固定在三角架上,三脚架上自带两个水平仪,以将系统调至水平。两相机通过USB数据线连接到两台计算机进行图像处理和计算。
3.2相机标定
标定板为7X7的黑白棋盘格,每格尺寸为25.4mmX25.4mm。左右相机同时对标定板拍照,得到14对共28张图像。用OpenCV中的cvStereoCalibrate函数对相机镜头进行标定,可以得到相机系统的内外参数.Af和Aright为左右相机镜头内部参数矩阵(焦距、成像原点),灿和給岫为畸变系数,外部参数由旋转矩阵R和平移向量T表示,它们共同确定了左右相机的相对位置关系,图4所示是左右相机的位置关系图。之后的双目校正cvStereoRectify函数利用标定得到的内外参数分别对左右视图进行消除畸变和行对准,以使左右视图的成像原点坐标一致、两摄像头光轴平行、左右成像平面共面、对极线行对齐。
标定得到的相机系统内外参数如下:
内部参数:
标定得到T向量在X方向上的坐标为28.8cm。旋转矩阵R接近单位矩阵,说明两相机之间基本保持平行,符合双目视差模型要求。
3.3立体匹配
得到相机内外参数之后,就可以用BlockMatching法对目标图像进行匹配计算视差。对图像中距离测距系统5m(实测)处的黄色便利贴进行测距,过程如图5所示。其中,图5(a)为目标图像的左右相机匹配过程中的视图,图5(b)为计算参数界面。通过BlockMatching方法得到视差值d,再利用函数cvReprojectImageTo3D标定得到的内外参数结合视差d可以恢复出目标的三维信息。由图5可见计算出的距离为494cm,与实际距离有1.2%的相对误差。
用该实验系统分别对3m,5m,10m,15m,25m的景物进行拍照,并对每组图像上的两个点进行测距,所得到的10组数据如表1所列。
4结语
相比主动测距,基于三角视差的双CCD被动测距具有仪器简单,适用场合广泛,保密性好的优势。本文研究的基于区域的局部匹配算法BlockMatching,使用SAD“绝对误差累计”小窗口,查找经过校正后的左右两幅图像之间的匹配点,它匹配速度快,帧处理速度在5帧/s以上,并且精度较高,在10m的距离内,误差都是小于2.0%。整个测距系统有较强的实用性。但同时,随着距离的增大,由于标定误差、光线和人为因素等的影响,精度也有所下降。另外,立体匹配只查找两幅图像之间的强匹配点,也是误差随距离增大的重要原因。
20211020_616ff8bf18640__双目视差测距中的图像配准技术研究1