文章目录
前言
本章将尽量以通俗易懂的方式推导三维重建中常用到的对极几何和基础矩阵的几个概念,涉及数学公式较多但并不困难,如有错误,欢迎指出。
书接上回: [图形学渲染]大白话推导三维重建(一)-摄像机内参外参、世界坐标转换、3D物体投影、单双目摄像头、视差
上文我们已经明白了3D空间中的一个点 Xw = [X, Y, Z]
是如何变换到 2D图像的一个像素点 x = [x, y]
:
即:将世界坐标系下的一个3D点 X w ~ \tilde{X_w} Xw~ =(X,Y,Z)
转换成2D图像实际像素上的坐标点 x ~ \tilde{x} x~ = (x,y)
。
而三维重建则是将上述步骤反过来,要从2D图像恢复出3D场景,故我们最容易想到的便是对上面3D到2D的式子求逆运算。
但实际上2D图像恢复成3D场景还缺乏一个 深度信息 ,无法简单地通过公式求逆进行恢复,所以我们还要用双目摄像头计算出深度信息Z:
既然有了2D像素坐标(x,y)
,以及双目摄像头计算得到的深度信息Z
,那么从2D的(x, y)
恢复成3D的(X,Y,Z)
应该没什么问题吧?
但其实该推理过程都是在较为理想的情况下推导出来的,在现实中还会遇到许多问题:
- 如何确保两个相机中的2D图像所看的 像素点 对应的是同一个3D空间中的点?
- 如果两台摄像机的观看高度和角度发生变化怎么办?缺乏相对位姿信息便难以计算
Z
值,难道每次都要用设备测量一次两个摄像机的相对位姿信息?
为此,我们要引入对极几何( Epipolar Geometry ) 这个概念。
一、Epipolar Geometry (发音类似于Epic Polar)
1.1 背景知识
假设我们在用两个相机看同一个场景中的同一处物体,在图像上的成像位置分别是 x1,x2:
两个相机都有自己的相机平面,假设现在只看 相机1,该相机图像上有一点 x1