官网https://docs.opencv.org/3.4.1/da/de9/tutorial_py_epipolar_geometry.html
基本概念
当我们使用针孔相机获取图像时候,会丢失一些重要的信息,例如:图像的深度,或者从图像上的点到摄像机的距离,因为这是从3D到2D的转换。所以这里就有一个重要的问题,使用这种相机,我们是否可以获得信息的深度。答案就是使用多个相机。其实我们的眼界也是用同样的方式工作,使用2个摄像机(2个眼睛)的方式被称为立体视觉(stereo vision)。现在让我们看看opencv在这领域能提供了些什么吧。
Gary Bradsky的《Learning OpenCV》有很多这方面的内容
在进入图像深度之前,我们先理解一些多视角几何的基本概念。在本节我们要处理对极几何(Epipolar Geometry)。看下图,展示了两台摄像机对同一个场景进行拍摄的基本设置。
如果我们只使用左边的相机,我们无法找到x点对应的的3D点,因为OX线上的每一个点在左边的图像平面上投影都是同一个点。但是如果同时考虑右边的图像,那么OX线上的每一个x点在右边图像平面上都有不同的投影(x‘点)。所以使用这2幅图像,我们可以通过三角定位每个3D点(或者说获得3D空间中每个点到摄像机的距离)。这就是对极几何整个思路。
OX线上每个点在右边图像平面上投影形成了一根直线l’,我们称之为x点的极线(epiline )。我们可以在右边图像中沿极线中找到x点,它一定是在这根直线的某个位置(也就是说,如果要找到空间中的一个点在另外一个平面上的对应点,你不需要搜索整个平面,只要沿极线搜索就可以了。这样可以有更佳的性能和正确性。)这被称为对极约束(Epipolar Constraint)。同样的,所有的点都有它在其他平面的对应极线。平面XOO′称为对极平面( Epipolar Plane)
O和O′是2台摄像机的中心。观察上面的图,你可以看到摄像机O′在左边图像的投影是点e,它被称为极点(epipole)。极点是穿过相机中心直线和图像平面的交叉点。同理,点e′是左边相机的极点。在某些情况下,你无法在平面中定位极点,因为极点可能在图像的外部(也就是说,1台相机不能看到另外1台相机)。
所有的极线都要经过极点。所以要找到极点,我们可以先找到多条极线,极线的交叉点就是极点。
本节中,