3D场景重建与视频序列处理技术详解
1. 3D场景重建
1.1 基本原理
- 校准矩阵 :校准矩阵能够将像素坐标转换为世界坐标,从而更方便地将图像点与生成它们的3D点联系起来。例如,有两个相机,它们之间存在旋转矩阵 $R$ 和平移向量 $T$,向量 $x$ 连接第一个相机中心到图像点,向量 $x’$ 连接第二个相机中心到对应图像点。由于知道两个相机的相对运动,可将 $x$ 在第二个相机参考系中的方向表示为 $Rx$,且向量 $T$、$Rx$ 和 $x’$ 共面。
- 本质矩阵 :通过矩阵运算可将相关关系简化为一个3x3的本质矩阵 $E$。本质矩阵包含了两个相机之间的旋转和平移信息,可从图像对应关系中估计得到。使用
cv::recoverPose
函数可对本质矩阵进行分解,该函数调用cv::decomposeEssentialMat
函数会产生四个可能的相对位姿解,通过查看提供的匹配点集来确定物理上可能的解。
1.2 三角测量
确定相机相对位姿后,可通过三角测量恢复匹配点对对应点的位置。一种简单的方法是考虑两个投影矩阵 $P$ 和 $P’$,待求的3D点在齐次坐标下表示为 $X = [X, Y, Z, 1]^T$,已知 $x = PX$ 和 $x’ = P’X$,每个齐次方程可带来两个独立方程,足以求解3D点位置的三个未知数。可使用最小二乘法求解这个超定方程组,以下是实现该方法的代码:
// tria