计算机视觉之三维重建——第四章:三维重建基础与极几何《深入浅出sfm和SLAM核心算法 (鲁鹏)》

第四章:三维重建基础与极几何

由于从单幅视图恢复场景三维结构比较困难,并且,单视图2D到3D的映射具有多义性,如下图所示,从单视图中很难辨别塔是模型还是实物;

在这里插入图片描述

1. 双视图与三角化

在这里插入图片描述

只要已知直线 l l l l ′ l' l,则三维点P就是两条直线的交点。因此,只要将直线 l l l l ′ l' l映射到同一坐标系下,就可以通过 P = l × l ′ P=l \times l' P=l×l求出点 P P P的三维坐标。

此时,问题演变成了:
已知二维像素坐标 p p p p ′ p' p K K K K ′ K' K,以及两视图之间的变换矩阵 R R R T T T
求解P点的三维坐标?

此时存在两种解法:线性解和非线性解;

1.1 线性解

在这里插入图片描述

1.2 非线性解

最小化重投影误差

在这里插入图片描述

扫描二维码关注公众号,回复: 15205276 查看本文章

1.3 实际情况中的问题定义

  • 在实际情况中,由于噪声的存在,两条直线通常不相交;
  • 且上述的线性解和非线性解都需要已知 K K K K ′ K' K R R R T T T
  • 然而,实际情况中,摄像机的内参 K K K K ′ K' K和两视图之间的变换矩阵 R R R T T T通常不可知,那么实际情况就变成了如下的问题:
    • 问题1:已知 p p p p ′ p' p,摄像机内参数 K K K K ′ K' K
    • 求解:摄像机的 R R R T T T以及P点的三维坐标?
    • 问题2:已知 p p p p ′ p' p
    • 求解:摄像机内参数 K K K K ′ K' K,摄像机的 R R R T T T以及P点的三维坐标?

1.4 多视图几何的关键问题

  • 摄像机几何:从一张或者多张图像中求解摄像机的内、外参数;
  • 场景几何:通过二至多幅图寻找3D场景坐标;
  • 对应关系:已知一个图像中的 p p p点,如何在另外一个图像中找到 p ′ p' p点;

2. 极几何与基础矩阵

2.1 极几何

极几何描述了同一场景或者物体的两个视点图像间的几何关系;

在这里插入图片描述

极几何可以将对应点搜索范围缩小到对应的极线上;

在这里插入图片描述

(1)极几何特例——平行视图
在这里插入图片描述
(2)极几何特例——前向平移(无旋转)
在这里插入图片描述

2.2 本质矩阵

本质矩阵对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述;

在这里插入图片描述

p ′ p' p O 2 O_2 O2 O 1 O_1 O1坐标系下的坐标为:
p ′ = R p ′ ∗ + T p ′ ∗ = R T ( p ′ − T ) = R T p ′ − R T T \begin{aligned} p' & =Rp^{'*} +T \\ p^{'*} & =R^T(p'-T) \\ & =R^Tp'-R^TT \\ \end{aligned} pp=Rp+T=RT(pT)=RTpRTT
∵ O 2 = [ 0 0 0 ] T O 2 ∗ = − R T T \begin{aligned} \because O_2 & =[0 \quad 0 \quad 0 ]^T \\ O^{*}_{2} & =-R^TT \\ \end{aligned} O2O2=[000]T=RTT

对两个向量进行叉乘:
O 1 p ′ ∗ → × O 1 O 2 ∗ → = ( R T p ′ − R T T ) × ( − R T T ) = R T T × R T p ′ \begin{aligned} \overrightarrow{O_1 p^{'*}} \times \overrightarrow{O_1 O^{*}_2} & = (R^Tp'-R^TT) \times (-R^TT) \\ & = R^TT \times R^T p' \\ \end{aligned} O1p ×O1O2 =(RTpRTT)×(RTT)=RTT×RTp

得到的向量垂直于 O 1 O 2 P O_1O_2P O1O2P 极平面,因此可得:
[ R T T × R T p ′ ] T ⋅ p = 0 [ R T ⋅ ( T × p ′ ) ] T ⋅ p = 0 ( T × p ′ ) T ⋅ R ⋅ p = 0 ( [ T × ] ⋅ p ′ ) T ⋅ R ⋅ p = 0 p ′ T ⋅ [ T × ] ⋅ R ⋅ p = 0 p ′ T ⋅ [ T × R ] ⋅ p = 0 p ′ T ⋅ E ⋅ p = 0 \begin{aligned} & [R^TT \times R^T p']^T \cdot p=0 \\ & [R^T \cdot (T \times p')]^T \cdot p=0\\ & (T \times p')^T \cdot R \cdot p=0\\ & ([T_{\times}] \cdot p')^T \cdot R \cdot p=0\\ & p^{'T} \cdot [T_{\times}] \cdot R \cdot p=0\\ & p^{'T} \cdot [T \times R] \cdot p=0\\ & p^{'T} \cdot E \cdot p=0\\ \end{aligned} [RTT×RTp]Tp=0[RT(T×p)]Tp=0(T×p)TRp=0([T×]p)TRp=0pT[T×]Rp=0pT[T×R]p=0pTEp=0

最终,本质矩阵 E = T × R = [ T × ] R E=T \times R = [T_{\times}] R E=T×R=[T×]R
在这里插入图片描述

2.3 基础矩阵

基础矩阵对一般的透视摄像机拍摄的两个视点的图像间的极几何关系进行代数描述。

推导思路:将一般相机变换到规范化相机,用本质矩阵来表达;
p = K [ I 0 ] P K − 1 p = [ I 0 ] P \begin{aligned} p & = K[I \quad 0]P \\ K^{-1}p & = [I \quad 0]P \end{aligned} pK1p=K[I0]P=[I0]P
则规范化相机下左右两视图的像素点坐标演变为:
p c = K − 1 p p c ′ = K ′ − 1 p ′ \begin{aligned} p_c & = K^{-1}p \\ p_c^{'} & = K^{'-1}p' \\ \end{aligned} pcpc=K1p=K1p
带入本质矩阵:
p c ′ T E p c = p c ′ T ⋅ [ T × ] R ⋅ p c = ( K ′ − 1 p ′ ) T ⋅ [ T × ] R ⋅ K − 1 p = p ′ T K ′ − T [ T × ] R K − 1 p = p ′ T F p \begin{aligned} p_c^{'T}Ep_c & = p_c^{'T} \cdot [T_{\times}] R \cdot p_c \\ & =(K^{'-1}p')^T \cdot [T_{\times}] R \cdot K^{-1}p \\ & = p^{'T}K^{'-T} [T_{\times}] R K^{-1}p \\ & = p^{'T}Fp \end{aligned} pcTEpc=pcT[T×]Rpc=(K1p)T[T×]RK1p=pTKT[T×]RK1p=pTFp

最终基础矩阵F为:
F = K ′ − T [ T × ] R K − 1 F=K^{'-T} [T_{\times}] R K^{-1} F=KT[T×]RK1
在这里插入图片描述

3. 基础矩阵估计

3.1 八点法

p ′ T F p = 0 p^{'T}Fp=0 pTFp=0

F有7个自由度,理论上7点可以解出F,但计算比较复杂;

(1)单点方程矩阵形式展开:
在这里插入图片描述
(2)选取八个点,列出齐次线性方程:在这里插入图片描述
(3)最小二乘求解:

通常 N > 8 N>8 N>8,为超定方程组,采用最小二乘求解: 在这里插入图片描述

(4)满秩矩阵分解:

上述经过最小二乘估计得到的 F ^ \hat F F^通常秩为3,为满秩矩阵,但基础矩阵 F F F的秩为2。
在这里插入图片描述

(5)八点法求解总结

在这里插入图片描述
(6)八点法存在的问题

  • W矩阵中各个元素的数值差异过大;
  • SVD分解有数值计算问题
  • 导致求解结果通常有10+pixel左右的误差;

3.2 归一化八点法

在这里插入图片描述

对每幅图像施加变换T(平移与缩放),让其满足如下条件:

  • 原点 = 图像上点的重心;
  • 各个像点到坐标原点的均方根距离等于 2 \sqrt 2 2 ;

归一化八点法的计算步骤如下:

在这里插入图片描述

归一化八点法的精度高,推荐使用;

4. 单应矩阵

单应矩阵描述空间中的平面在两个摄像机下的投影几何;

在这里插入图片描述

4.1 单应矩阵推导

在这里插入图片描述

4.2 单应矩阵估计

在这里插入图片描述

4.3 单应矩阵性质

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xijuezhu8128/article/details/127224074