本文看了博文【深度相机系列三】深度相机原理揭秘--双目立体视觉-CSDN博客,该博文已经介绍的很清楚,在这里我只是根据自己的理解做了梳理,方便自己以后阅读。
更全的双目相机测距可看博客双目视觉原理(万字总结,包含Halcon代码)-CSDN博客
文章以上面这种形状的双目相机为例,假设左右两个相机位于同一平面(光轴平行),且相机参数(如焦距f)一致。那么深度值的推导原理和公式如下:
上式中深度公式的符号含义如下:
f:相机焦距
b: 两个相机的投影中心的连线的距离
d: 视差。需要知道左相机的每个像素点(xl, yl)和右相机中对应点(xr, yr)的对应关
系。这是双目视觉的核心问题。
Xl: L相机的像素坐标(图片坐标)
Xr: R相机的像素坐标(图片坐标)
z: 以双目相机的中心点为坐标原点的水平坐标(距离坐标)
x: 以双目相机的中心点为坐标原点的横向坐标
y: 以双目相机的中心点为坐标原点的纵向坐标
上式中深度公式的符号含义如下:
f: 相机焦距
b: 两个相机的投影中心的连线的距离
d: 视差。需要知道左相机的每个像素点(xl, yl)和右相机中对应点(xr, yr)的对应关
系。这是双目视觉的核心问题。
Xl: L相机的像素坐标(图片坐标)
Xr: R相机的像素坐标(图片坐标)
z: 以双目相机的中心点为坐标原点的水平坐标(距离坐标)
x: 以双目相机的中心点为坐标原点的横向坐标
y: 以双目相机的中心点为坐标原点的纵向坐标
(2)极线约束
对于左图中的一个像素点,如何确定该点在右图中的位置?是不是需要我们在整个图像中地毯式搜索一个个匹配?
答案是:不需要。因为有极线约束(名字听着很吓人)。极线约束对于求解图像对中像素点的对应关系非常重要。
什么是极线呢?如下图所示。C1,C2是两个相机,P是空间中的一个点,P和两个相机中心点C1、C2形成了三维空间中的一个平面PC1C2,称为极平面(Epipolar plane)。极平面和两幅图像相交于两条直线,这两条直线称为极线(Epipolar line)。P在相机C1中的成像点是P1,在相机C2中的成像点是P2,但是P的位置事先是未知的。
我们的目标是:对于左图的P1点,寻找它在右图中的对应点P2,这样就能确定P点的空间位置,也就是我们想要的空间物体和相机的距离(深度)。
所谓极线约束(Epipolar Constraint)就是指当同一个空间点在两幅图像上分别成像时,已知左图投影点p1,那么对应右图投影点p2一定在相对于p1的极线上,这样可以极大的缩小匹配范围。
根据极线约束的定义,我们可以在下图中直观的看到P2一定在对极线上,所以我们只需要沿着极线搜索一定可以找到和P1的对应点P2。
如上图所示,如果左右两个相机很理想,那么它们拍到的物体在同一平面上,并且在图片中的高度也相等(x值相等),那么当我们知道目标在C1图片中的位置坐标时,就可以根据C1图片中的x值去C2图片中找目标物体了。这种找物体的方法称作极线约束。