机器视觉基础—双目相机与立体视觉
双目相机概念与测量原理
我们多视几何的基础就在于是需要不同的相机拍摄的同一个物体的视场是由重合的区域的。通过下面的这种几何模型的目的是要得到估计物体的长度,或者说是离这个相机的距离。(深度信息)
双目相机是模拟人观看世界的方式,来对深度的距离进行估算。
人之所以能够感受到立体视觉,是因为人的左右眼之间有6到7cm的间隔,左眼与右眼看到的影像会有细微的差别,所以我们很容易判断物体的远近以及多个物体的前后关系。
双目立体视觉
的基本原理与人眼观察世界的方式类似,双目立体视觉获取图像是通过不同位置的两台摄像机
或者一台摄像机经过平移或旋转拍摄同一幅场景,来获取立体图像对
我们可以将双目相机分成两种类型
- 我们的被动双目相机是由两个RGB的镜头组成的。
- 主动双目相机(也称为双目结构光相机)
主动相机的构成主要是有两个IR摄像头和一个结构光发射器来构成的。
我们通过主动相机估计出来的深度图结构也更加的完整,在拍摄的时候。主动相机的成像是由散斑点的
对于我们人的双目系统来说,人的左眼和右眼分别可以看见两幅有视差的图像。进而在大脑中可以形成有景深的立体图像。
双目立体视觉的测量原理实际上是和人眼类似的。
对于单个相机来说如果已知图像中的一个像点。我们通过该像点与相机中心发出一条射线。那么如何才能确定发光的物体点P的位置是P1 P2还是其他的呢?
也就是单个相机是无法获得上面的那个目标的深度信息的。为了获得深度我们可以使用两个相机的两条射线来获得深度的信息。更准确的说是获得了唯一一个三维目标点的坐标信息
这也就是双目相机的一个测量原理,我们称之为双目交汇
公式推导
- 假设我们拥有一个
理想的双目系统——它们是拥有相同的焦距f的
- 两个光学中心Ol和Or之间的距离为B。
- 光轴平行成像平面属于同一个平面。
这里的两个光心之间的距离我们可以称之为基线长度。
满足这几个条件的双目相机模型我们称为理想的双目系统
- 空间坐标中的一个P点在左右成像平面上形成了两个像点(也就是与成像平面相交的两个点。)分别为XL 和 XR。我们将Xl - Xr = D 称之为视差。
- 根据这个模型的相似关系我们可以在数学上对其进行建模的处理。
-
我们和之前一样将两个光心之间的距离定义为B,同时我们将深度值定义为Z
-
根据三角关系有:
B Z = B − { X L − x R } Z − f Z = f B { x L − x R } Z = f B D \begin{aligned} \frac{B}{Z} & =\frac{B-\left\{X_{L}-x_{R}\right\}}{Z-f} \\ Z & =\frac{f B}{\left\{x_{L}-x_{R}\right\}} \\ Z & =\frac{f B}{D} \end{aligned} ZBZZ=Z−fB−{XL−xR}={xL−xR}fB=DfB
根据这个关系,我们可以看出在双目的系统中我只要知道了视差值D就可以根据之前的关系。得出需要估计的深度值信息了。
由此也是引出了双目立体视觉中的一个核心的问题。双目视觉中的立体匹配问题
其任务就是寻找左右图像当中的两个对应点,并建立对应的关系。从而方面的计算出视差D
就需要之前学过的一些特征点匹配的算法了就比如之前的SIFT算法等。但是对于之一些光照和颜色相近的一些点,例如匹配一张图像上的白墙上的两个点。也是十分的困难。
根据这个问题也就有了主动双目相机了。也就是使用了双IR相机加结构光。在单色的图像上也打出一些激光点也就能保证正常的立体图像匹配
双目深度估计中存在的问题是:
- 双目测距要求轴平行,测距精度严重依赖于平行程度。
- 为了计算视差d,需要匹配世界中同一点P1在左右两幅图像中的像素点p1和p1’即双目立体匹配。在复杂光照和复杂场景下,如何准确双目立体匹配本身就是很难的问题。
- 对于世界中越远的点P2,其在左右视图中的视差d2越小,测距结果越容易受到双目立体匹配误差影响(即双目测距精度与被测物体距离成反相关)
对极几何的概念
要寻找两幅图像之间的对应关系,最直接的方法就是逐点匹配,如果加以一定的约束条件(对极约束),搜索的范围可以大大减小。从2D平面搜索转为1D直线搜索,搜索速度也会提高。
对于下面的一副图来说我们的c和c’表示的是相机的光心。x是测量的三维空间中的一个点。两个白色的为两个成像平面。
- 这个灰色的平面束和我们的成像平面之间是有交线的。这个交线就是对极线
-
对极平面(epipolarplane):任何包含基线的平面(图中的灰色面)
-
对极点(epipole):摄像机的基线与每幅图像的交点;
-
对极线(epipolar1ine):对极平面与图像平面的交线
-
我们需要将x和x’进行立体的匹配。提出问题就是如何快速的找到这两个点呢?
-
对极约束(Epipolar Constraint) 也就是给它一个约束从2d搜寻转为在1d的线上的一个搜索过程。
这个模型有个有趣的性质。当三维点p沿着px0方向接近左相机时,我们发现其在左相机上的投影点并不会移动,但是其在右相机相平面上的投影点x1发生了变化,其移动轨迹一定是沿着极线1。
深度相机
上面我们学过的双目相机可以看作是一种深度相机,在继续进行学习之前。对深度相机的知识进行一些扩展
它在2d相机的基础上增加了对深度值得测量,每个像素经过一定的计算处理
类似上面提到的双目的这种。可以得到对应的深度值。
所有像素测量得到的像素深度值的集合,就构成了一幅深度图。,深度图是一张灰度图。是一张用二维坐标表示三维的一副图。