APP下载

基于双目立体视觉的视差测量

2022-05-09沙春伟蔡鹏德

电脑知识与技术 2022年7期
关键词:立体匹配视差

沙春伟  蔡鹏德

摘要:双目立体视觉是计算机视觉研究最重要的组成部分之一。该文旨在构建一个双目视觉系统用来测量相机与物体的距离。通过双目相机进行图像采集,使用Matlab Calibration Toolbox工具对相机标定,然后进行左右图像校正,最后对校正的图像进行立体匹配,得到被测物体的视差图及其物体的3D坐标。实验表明:这个方案具有可行性,为下一步的实验研究提供了很大的帮助和基础。

关键词:双目立体视觉;相机标定;立体匹配;视差

中图分类号:TP18      文献标识码:A

文章编号:1009-3044(2022)07-0081-02

开放科学(资源服务)标识码(OSID):<H:\飞翔打包文件\电脑2022年第七期打包文件1\8.05xs202207\Image\image13.png>

测量物体距离的方法有很多种。最常用的方法是激光测距仪、超声波测量等[1]。这些方法具有良好的精度,但它也需要持续的人工协助,而且很难在工业自动化、导航中应用。通过使用立体视觉等被动方法进行距离测量,可以使其自动检测和确定物体距离以及物体几何形状。

1 双目测距原理

双目立体相机对物体表面进行图像采集,采集的左右视图间有像素差,也就是视差,将得到的视差取出来,依据三角测量原理,可以获得深度距离。图1是视差测距原理图,[p]是目标物体上的某一个点,[OL]是左相机光心,[OR]是右相机光心, [p1]是点[p]在左相机的成像点,[pr]是在右相机的成像点,相机焦距为[f],左右相机中心距离为[b],深度距离就是[Z]。设[D]为[p1]和[pr]两点之间的距离,那么[D=b-X1-X2],

由三角形相似原理可知:[b-(Xl-Xr)b=Z-fZ=>Z=fb(Xl-Xr)]。公式中[Xl-Xr]就是要求取的视差,由视差就可以得到深度距离,[f]和[b]这些参数由相机标定得到。

根据公式可以看出,深度距离(Depthdistance)和视差(Disparity)成反比。深度越大,视差越小;深度越大,相同视差范围对应的深度范围阅读大。一个视差对应一个深度,一个深度对应一个视差,视差(Disparity)和深度(Depth)是一一对应的关系。

2 立体相机标定

对一个三维世界中的一个物体来说,它的坐标系应该是在世界坐标系下面。用一个相机拍摄物体,首先把世界坐标系下的物体转化到相机坐标系下,然后根据相机坐标系建立的原则,Z轴和相机的光轴是重合的,另外两个轴从肉眼上是看不到的。世界坐标系下的点可以通过刚体变换到相机坐标系(对于相机来说,拍摄的物体PA,Z轴坐标是Z在图像坐标系下、成像平面上的,根据图2小孔成像原理,PA成像在Z等于f的平面上,投射到BP’)。

世界坐标系到相机坐标系是一个刚体变换,是由一个旋转矩阵和一个平移矩阵唯一确定的刚体变换。

公式(1)是把世界坐标系下的点转换到相机坐标系下的点。

公式(2)是把相机坐标系下的点转到图像物理坐标系下的点。

公式(3)是把图像物理坐标系下的点转到图像像素坐标系下的点。

经过上面的几步变换,从世界坐标系经过三次矩阵连乘,就可以把世界坐标系的一个3D的点变成一个像素坐标系下一个2D的一个像素。这就是常说的像素模型,也就是小孔成像的一个模型。

相机是存在畸变的,比如说:鱼眼镜头的畸变就比较严重。可以看到,正常的物体是横平竖直,在相机里由于畸变的存在,可能会产生弯曲。有两种弯曲情况,常用的畸变模型,也只考虑了径向畸变和切向畸变。径向畸变是一个以多项式的表达式解释的,公式(4)为畸变表达式。

式中[K1,K2,K3]为需要标定参数的切向畸变参数;[P1,P2]为需要标定参数的径向畸变参数。

标定需要拍摄很多张照片,每一张照片需要改变相机的姿态,每一次姿态对应一组外态。笔者使用基于棋盘的张氏表达法,采集50组照片。笔者使用Matlab中的calibration toolbox工具进行标定,此工具操作简单,而且精度不错。标定结果如下:

式中Ml,Mr为左相机内参和右相机内参,Dl和Dr为左相机畸变参数和右相机畸变参数,R是相机旋转矩阵,T是相机平移矩阵。

3 立体校正

立体校正是调整角度和相机之间的距离以获得正面平行排列的过程。这个过程是任何立体成像算法中的关键步骤。此步骤的输出是校正和双目行对齐的图像,图3为立体校正。

4 立体匹配和测距

立体匹配是立体视觉从图像生成3D点云的常规手段,有不同的方法[2]。例如,基于区域的立体匹配、基于特征的立体匹配和基于像素的立体匹配,每种方法都有各自的优点和缺点。

在空间中的同一个点,同时在两个视图上成像,就形成了一个双目立体在两张视图上成像的像素点叫作同名点对,同名点对代表空间当中同一个点。立体匹配要解决的问题,就是要在图像中寻找这些同名点对。根据同名点对数量的多少,可以分为稀疏立体匹配和稠密立体匹配。稀疏立体匹配就是寻找有限个同名点对,而稠密立体匹配就是尽可能把图像中所有像素的同名点对都要寻找出来[3]。

不同匹配算法,效果差别很大。立体匹配算法主要步骤可以分为四种:匹配代价计算[3](Match cost computation);代价聚合[4](Cost Aggregation);视差计算(Disparity Computation);视差优化(Disparity Refinement)。对于匹配代价的计算一般使用图像灰度信息進行判断,同时也有用卷积神经网络进行图像块间的相互运算,它们对输入左右视图的图像块进行权值共享的特征提取网络,再把这两个图像块的特征拼接在一起,再输出它们之间的相似度。通过匹配代价计算后,寻找匹配代价最小的视差位置,确定当前的视差。这种策略往往会受到图像的影响,需要用代价聚合调整初始的匹配代价。经过代价计算,能够定位最小代价值。最小匹配的代价对应的视差值即为最优视差。WTA(赢家通吃)就是统计一个最小匹配代价值,然后把最小匹配的代价值所对应的视差值当作真值输出。视差优化就是指像素优化,左右一致性检查、小连通区域剔除、视差填充、弱纹理优化、平滑滤波。左视图匹配一个视差图后,右视图也匹配一个视差图,这两个视差图一一对应。比如左视图像素P找到右视图Q为同名点,右视图像素Q也找到左视图P为同名点,这两个就对上通过了,如果两个找到的不一致,就不通过。一致性检查可以去除很多错误,在应用中必须要做。

本文选择半全局匹配算法[5]SGM(Semi Global Matching),SGM算法结合了局部匹配算法和全局匹配算法的各个优点,使立体匹配更加优化。图4是得到的视差图,图5是伪彩色视差图,图6是测距结果。

5 结论

本文介绍了一种双目立体相机测距系统的方法,它结合了基于Matlab calibration toolbox工具的相机标定和基于vs2019环境下的OpenCV进行立体匹配。根据实验结果,SGM匹配算法对测距系统的实施具有一定的可塑性。

参考文献:

[1] 郭攀,杜鸿.机器人双目测距算法研究[J].无线互联科技,2018,15(5):99-101.

[2] Wei G Q,Brauer W,Hirzinger G.Intensity- and gradient-based stereo matching using hierarchical Gaussian basis functions[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,20(11):1143-1160.

[3] 耿英楠. 立体匹配技术的研究[D].吉林大学,2014.

[4] 闫利,王芮,刘华,陈长军.基于改进代价计算和自适应引导滤波的立体匹配[J].光学学报,2018,38(11):257-267.

[5] 宁晓斐. 双目立体视觉中半全局立体匹配算法的研究[D].辽宁大学,2014.

【通联编辑:唐一东】

收稿日期:2021-11-15

作者简介:沙春伟(1997—),男,江苏泰州人,硕士,研究方向为计算机视觉;蔡鹏德(1994—),男,甘肃武威人,硕士,研究方向为图像处理与深度学习。

猜你喜欢

立体匹配视差
基于视差优化的立体匹配网络
基于自适应窗的立体相机视差图优化方法研究
夏泽洋团队提出一种基于分割的立体匹配视差优化方法
基于梯度域引导滤波的视差精炼迭代算法
影像立体匹配中的凸优化理论研究
基于互补不变特征的倾斜影像高精度立体匹配
双目立体匹配算法的FPGA实现
基于分割树的视差图修复算法研究
改进导向滤波器立体匹配算法
立体视差对瞳孔直径影响的研究