双目摄像机测深度原理

双目摄像机测深度原理

2019年04月01日 10:20:24 西海岸看日出 阅读数 589更多

分类专栏: 原理解析 双目测距

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_38236355/article/details/88933839

双目摄像机是采用两个摄像机同时运行来感知周围的环境,双目摄像机组成的视觉系统的优势显而易见,双目系统相比于单目系统可提取到更多与真实世界环境有关的信息,尤其是目标实物的深度信息。双目视觉系统甚至还可以在摄像机校准不精确的情况下正常还原观测点的深度,将人为造成的误差降到最低。这里,我们简单描述一下双目相机获取深度信息的原理。

一个物体在双目摄像机中的成像形式如下图所示:
在这里插入图片描述
其中,焦距 f 和基准线 b 是相机的已知参数,目的就是求物体p与摄像机中心的距离,即深度值z。根据三角形相似原理,得:
在这里插入图片描述
在这里插入图片描述
由公式(1)得,
在这里插入图片描述
将x代入公式(2)中,可得
在这里插入图片描述
即求出了实物深度z和视差d=x_l-x_r之间得关系。只要研究出x_l和x_r之间的关系,就可以测出物体的深度值了。

双目测距实际操作主要分为4个步骤:

相机标定——双目校正——双目立体匹配——计算深度

相机标定:相机标定分为单目标定和双目标定,单个摄像头的标定主要是计算出摄像头的内参((焦距f,1/dx,1/dy,cx,cy)其中dx和dy是相机单个感光单元芯片的长度和宽度,cx和cy分别代表相机感光芯片的中心点在x和y方向上可能存在的偏移)以及五个畸变参数(摄像头由于光学透镜的特性使得成像存在着径向畸变,可由三个参数k1,k2,k3确定;由于装配方面的误差,传感器和光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数p1,p2确定。一般只需要计算出k1,k2,p1,p2,对于鱼眼镜头等径像畸变特别大的才需要计算k3)还有外参(相对世界坐标系的旋转矩阵R和平移向量t)。而双目标定首先需要分别获取左右相机的内外参数,之后通过立体标定对左右两幅图像进行立体校准和对齐,最后确定两个相机的相对位置(右摄像头相对于左摄像头的旋转矩阵R、平移向量t,和中心距等)。
具体标定方法和过程参照:https://blog.csdn.net/qq_38236355/article/details/89280633 注意:实际生成深度图所用的图片尺寸需要和标定所用的图片尺寸大小一致。

双目校正:(极线约束:空间中任意一点在图像平面上的投影点,必然处于由该点和两个摄像头中心组成的对极平面上。对于图像上的某一个特征点,其在另一个视图上的匹配点必处于对应的对极线上,这称为极线约束。极线约束使得特征匹配由二维搜索降低到一维搜索,从而大大加快计算速度,并且减少误匹配。)双目校正是根据摄像头标定后获得单目内参数据(焦距,成像原点,畸变参数)和双目相对位置关系(旋转矩阵和平移向量),分别对左右视图进行消除畸变和行对准,使得左右试图的成像原点坐标一致、两摄像头光轴平行、左右成像平面共面、对极线行对齐(使得两幅图像的对极线恰好在同一水平线上),这样一幅图像上任意一点与其在另一幅图像上的对应点就必然具有相同的行号,只需要对该行进行一维搜索即可匹配到对应点。
在这里插入图片描述在这里插入图片描述
双目立体匹配:双目匹配的作用是把同一场景在左右视图上对应的像点匹配起来,这样做的目的是为了得到视差图。双目匹配被普遍认为是立体视觉中最困难也是最关键的问题。
双目立体匹配深度信息估计算法的核心为立体匹配算法,其总体可分为基于局部的立体匹配算法和基于全局的立体匹配算法两大类。基于局部的立体匹配算法利用对应点本身以及邻近的局部区域的信息来进行匹配计算,所涉及的信息量较小,其优点是计算效率高,在高纹理区域能够很快得到视差图,但是遮挡区域和视差不连续区域的匹配精度不高,易产生误匹配。一般将其分为基于区域的立体匹配算法、基于特征的立体匹配算法和基于相位的立体匹配算法。基于全局的立体匹配算法是采用对扫描线或者整幅图像进行约束,着重解决图像中不确定区域的匹配问题,能达到全局最优解,其本质是应用能量函数(包括数据项和平滑项),寻找全局最优解。其特点是匹配精度高,计算量大,计算代价高,不适于实时性要求较强的应用场合。基于全局的匹配算法主要有图割法、动态规划法、基于置信度传播的匹配算法、基于人工智能的匹配算法等
在不同的应用场合、从不同的角度以及对立体匹配本身的不同理解,产生出不同的立体匹配算法,但图像立体匹配的过程基本上相同。根据Scharstein主要将其归纳为四个步骤:(1)匹配代价计算;(2)匹配代价聚合;(3)视差计算;(4)视差求精。
在这里插入图片描述
(1)、匹配代价计算:
立体匹配中匹配代价是指目标图像和参考图像的相似度测度,通过初始匹配代价的计算可以得到原始的等视差相似性测度分布图。匹配代价的计算是整个立体匹配算法的基础。
(2)、匹配代价聚合:
在局部算法中为了降低因噪声、不同光照影响等因素引起的奇异点对匹配精度的影响,往往会通过求和、求均值或其他方法对一个区域内的匹配代价进行聚合,从而提高匹配精度。代价聚合策略的好坏直接关系到最终视差图的质量,被视为局部匹配算法的核心。
(3)、视差计算:
对局部立体算法和全局立体算法而言,视差计算存在很大的区别。局部立体匹配算法更侧重于匹配代价的计算和匹配代价聚合,在视差计算过程中,仅通过视差搜索范围内具有最小匹配代价的点作为最佳匹配点,一般称为优胜全选WTA(Winner-Takes-AU)。而全局立体匹配算法则是跳过代价聚合步骤,直接进行视差计算。更多的是利用能量最小化的思想,找到一个视差矩阵使得能量函数在整个图像范围或图像的某个子集内趋于极小值。
(4)、视差求精:
针对前述三个步骤的视差图求解,为了提高最终视差图的质量,往往通过视差求精来对视差图进行进一步处理,在保证物体内部视差较为平滑而又能较好地保持物体的边缘的情况下去除奇异数据的影响。常见的求精方法包括左右一致性检测、视差图滤波和遮挡检测。经过立体匹配求解的视差结果是一个离散的整数序列,这与真实世界中情况是不相符的,所以往往通过亚像素插值来进一步使视差结果精细化,常用二次函数插值法来进行视差值求精。

计算深度:得到视差数据,通过上述三角形原理中的公式就可以很容易的计算出深度信息。

发布了57 篇原创文章 · 获赞 121 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/baobei0112/article/details/101281109