双目三维重建_聊聊三维重建双目立体视觉原理

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者:Tengfei Jiang

https://zhuanlan.zhihu.com/p/81016834

本文已由原作者授权,不得擅自二次转载

前言

三维重建是个跨多学科的应用领域,围绕不同的尺度大小、不同速度要求、不同精度要求、不同硬件成本等要求发展出了各种各样的技术方案。在这个应用领域,充分体现了,没有最好的设备,只有最合适的方案。在本系列文章中,我尝试解释接触过的不同技术方案,如有错误之处,敬请斧正。

双目立体视觉原理

视差 (Disparity) 及 深度计算

人依靠两只眼睛判断深度(物体离眼睛的距离),具体是如何来判断的呢,我们从小到大似乎并未接受过深度计算的训练。视差(Disparity)是解释原理的基本概念之一。我们可以做个简单的实验,将手指置于双目之间,分别开闭左右眼。怎么样,是不是发现手指不在同一个位置?这就是视差。

双目三维重建_聊聊三维重建双目立体视觉原理_第1张图片 

可以参考上图,当左右相机同时观察三维点时,该点分别投影在左右相机的相平面上,这两个投影点之间的差异就是视差:d=Xleft-Xright。 这个公式看起来简单直观,其实有不少未解释清楚的地方,比如这两个 x 是在同一个坐标系内么,这两个像平面一定是平行摆放的吗,为什么可以直接减?等等 。 要解释清楚这些问题,上图还是略简陋,让我们换张图来解释。

双目三维重建_聊聊三维重建双目立体视觉原理_第2张图片 

图中,P是三维物体的顶点坐标,其和左右相机光心CL、CR的连线与左右相平面的交点 b7814394170aa953b3d770f677f92162.png8070b2b4dd8afbd48a17b241d2bfc3cd.png 即为投影点。注意现在说的所有坐标都是定义在同一个坐标系内,坐标原点与标架已经在图中左下角标识出来了。 现在问题来了,已知 14a7531fc06173671dd7d241456b2cae.png ,已知d、b、f,求z。这是一个初中几何题,答案很简单:

a845c89de9f5647380486c57d98b548c.png

从公式可以看出,视差 d和深度z成反比关系。视差越大,可以探测的深度越小。b是两个相机光心的距离,又叫基线(baseline),f是相机的焦距。f、b与深度均成正比关系。

立体匹配

从上一节可以看到,如果要计算深度,我们需要知道视差、基线、焦距。另外注意,上文的推导是基于理想模型,比如不考虑相机的畸变,不考虑双相机光轴不平行的情况。

在视差计算之前,我们首先给定了两个投影点。但实际应用中,我们并不知道左右相机中哪两个点是对应点。查找对应点是双目立体视觉中非常核心的步骤,可以毫不夸张地说,大部分的结构光重建方案解决的都是如何准确快速地匹配对应点。在介绍具体方案之前,有些通用的背景知识稍微铺垫一下。

对极几何(Epipolar Geometry)是一个内容非常丰富的范畴(本文不想铺展太多,只是选择几个概念简单描述,详细内容可以参考《计算机视觉中的多视图几何》一书)。对极几何描述的是三维点与两个相机相平面之间的特殊几何关系,我们先看下图的模型。

双目三维重建_聊聊三维重建双目立体视觉原理_第3张图片 

其中C0、C1为两个相机中心,P为空间中一点,P在C0、C1对应像平面上的投影分别为X0、X1。C0、C1连线与像平面的交点e0、e1称为极点(Epipoles),l0、l1称为极线(Epipolar Lines),C0、C1、P三点组成的平面称为极平面(Epipolar Plane)

这个模型有个有趣的性质。当三维点P沿着185d6d0a8ba12094db415b5f81f73f94.png方向接近左相机时,我们发现其在左相机上的投影点X0并不会移动,但是其在右相机相平面上的投影点x1发生了变化,其移动轨迹一定是沿着极线l1。反过来,假设我们并不知道P点坐标,只知道X0是其在左相机上的投影,要寻找其在右相机相平面中的投影,则只需要沿着极线l1搜索即可。这个性质使得对应点匹配的搜索空间直接从2维降低到1维。

聪明的同学看到这肯定会问了,没有P点怎么知道极线在哪,这不是因果不分么?事实上极线的位置仅和X0以及相机的内外参有关,和P点位置无关。这就引出了接下来的约束。在对极几何中有个非常著名的约束---对极约束(Epipolar Constraint)形式化地描述了对应点 X0、X1之间的几何关系:9d2c6428aeada21a001d82b5549507e5.png

其中F是基础矩阵(Fundamental Matrix)。这个式子是如此简洁,以至于忍不住想要推导一番,推导过程见附录1。

极线矫正 对极约束描述了对应点匹配可沿极线搜索。在实际应用中,两个相机摆放一定是不平行的,因而相平面中的极线大概率是条斜线,这就给搜索过程带来了不便,为了简化过程,还需要引入额外的极线矫正步骤,使得两相机的极线共线且平行于相平面的X 轴。矫正前后的效果如下面两张图所示,应该比较直观。

 双目三维重建_聊聊三维重建双目立体视觉原理_第4张图片

双目三维重建_聊聊三维重建双目立体视觉原理_第5张图片 

对应点查找经过上述处理后,要生成视差图,最核心的步骤就是在相平面的同一行上,查找对应点了。查找的方法有多种,大体上可以分成两类。

(1)提取图像特征该类方法可以对每张图像单独进行分析,提取“特征”。这里特征可以有不同的表示方法,如边缘、角点等,也可能来自其他主动投射的结构光信息,如正弦条纹相位值、编码值等,通过在双目图像之间查找相同(相似)特征来确定对应点。

(2)使用相关关系 该类方法假设对应点小领域内有相似的亮度模式,因而可以用两者的相关关系来定位。为了增加额外的亮度变化信息,通常会通过主动光源投射随机散斑这类图案。

具体的结构光重建原理会在后续文章中展开讨论。

参考

双目三维重建_聊聊三维重建双目立体视觉原理_第6张图片

附录

对极约束证明:

双目三维重建_聊聊三维重建双目立体视觉原理_第7张图片

上述内容,如有侵犯版权,请联系作者,会自行删文。

交流群

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉深度学习激光SLAM、VSLAM、三维重建、点云后处理、图像处理、手眼标定、自动驾驶、位姿估计等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。

双目三维重建_聊聊三维重建双目立体视觉原理_第8张图片

知识星球

学习3D视觉核心技术,扫描查看详情,3天内无条件退款

双目三维重建_聊聊三维重建双目立体视觉原理_第9张图片

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

你可能感兴趣的:(双目三维重建)