上一章讲到一些射影几何和单摄像机参数标定的内容,主要还是为了这一章的内容来服务。我们会用到18章的一些概念,比如说内参数矩阵M,畸变参数,旋转矩阵等内容。
目前来说,还没有可靠的方法能够在单幅图像的情况下进行标定和提取三维信息。在立体视觉中,通过把从不同摄像机同时获取的两个或更多的图像的特征,与其他图像中的相关特征进行匹配,分析视差,产生深度信息。
双目摄像头标定
立体成像
使用双目摄像机进行立体成像包括四个步骤:
使用数学的方法消除透镜畸变,上一章已经提到。
调整摄像机之间的位置和距离,并根据标定图像来进行计算。这一步称为“标定”。
在两个摄像头得到的图像中寻找相同的特征,得到视差d,这一步称为“匹配”。
通过三角测量的方法将视差图转化为深度图,这一步称为“重投影”。
我们从最后一步开始,然后分析前三个步骤。
三角测量
想象一个理想的立体装置,图像没有畸变,图像平面共面,光轴平行,焦距相同,主点已经被校准到该有的位置(没有接触过这些概念的可以看我的另一篇读书笔记)。
此外,假设摄像机前向平行排列,即每一个像素行和另一个摄像机中的像素行精确地对齐,并能够在物理世界中找到一点P,在左右图像中分别有成像点。那么,通过相似三角形可以得到深度Z。
理想设备
相似三角形
Obviously,由公式可知,视差与深度成反比,并且存在非线性关系。也就是说,当视差趋近于零时,微小的变化不会对深度有太大的影响,反之亦然。可以得出结论,立体视觉系统只有在屋里与摄像机距离比较近时才有比较高的深度分辨率。
深度与视差成反比
用于立体视觉中OpenCV的二维和三维坐标系如下。
坐标系如上
了解简化模型之后,就要讨论丑陋的现实模型了。现实世界中摄像机不会严格地前向平行对准,虽然可以通过数学的方法矫正图像,但还是要尽量对准,这样使数学变换更容易处理