在 上一篇 博客中,景深与视差成反比,其公式为:
为焦距, 为左右相机的距离,分别为两张图像的点距离各自中心点的距离。
对于左图像的每一个像素点 ,求图像景深可以分为以下几步,
- 在右图中,找到左图像的像素点对应的极线
- 扫描极线,找到最匹配的点
- 计算视差 , 并根据公式求取景深
1 平行图像(parallel images)
由极线约束:
因为图像平行,所以
如果两张图像不平行,把不平行的图像投影到一个平面上,这个过程被称为( image rectification)。
其原理如下图所示:
两个投影,两个图像变换,每个为3*3的变换矩阵。
2 滑动窗口
如果在左图中找到一个点,并且找到右图中对应的极线。
选定一个窗口,沿着极线滑动,与左图窗口比较,计算matching cost, 确定相似度(比如SSD)
窗口越小,细节越多,同时噪音也越多。
Matching windows 有很多种,列举如下:
有些图像对无法求得景深:
- 两张一样的图像
- Nor-Lambertian 表面
- Textureless surfaces
3 其它的立体约束(stereo constraints)
- 唯一性(uniqueness):一张图像中的任意一点,在另一张图像中至多只存在一个对应点。
- 顺序性(ordering): 从两张图像的视角,对应点的顺序是一样的,如下图。
- 平滑性(smoothness): 视差值变化慢
4 如何评判好的立体匹配
- 匹配质量(match quality)要好
- 平滑(smoothness)
一张图像中两个邻近的点,在另外一张图中距离一般不会出现巨变。
5 立体重建管道(Stereo reconstruction pipeline)
- 校准相机(calibrate cameras):求得内参矩阵和外参矩阵
- 纠正图像(Rectify images)
- 计算视差(Compute disparity)
- 计算景深(depth)