《计算机视觉》集大网课学习笔记【4】

多视图几何与三维重建

对极几何与基础矩阵

对极点 = 基线(baseline)与像平面相交点 = 光心在另一幅图像中的投影

设X在C,C'坐标系中的相对坐标分别为p,p',则有

p = Rp' + T

其中R、T表示两个坐标系之间的旋转和位移关系。

空间中某一点在一个坐标系中的相对坐标:x = Kp\Rightarrow p=K^{-1}x
空间中某一点在另一个坐标系中的相对坐标:x' = K'p'\Rightarrow p'=K'^{-1}x'
根据三线共面,有 (p-T)^{T}(T\times p)=0\Rightarrow (R^{T}p')^{T}(T\times p)=0
T\times p=Sp                                    \mathbf{S}=\left[\begin{array}{ccc} 0 & -T_{z} & T_{y} \\ T_{z} & 0 & -T_{x} \\ -T_{y} & T_{x} & 0 \end{array}\right]   叉积秩为2
(R^{T}p')^{T}(Sp)=0\Rightarrow (p'^{T}R)(Sp)=0\Rightarrow p'^{T}Ep=0   本质矩阵(essential matrix)
根据前述,K和K'分别为两个相机的内参矩阵,有:
p=K^{-1}x\; \; \;\; \; \; p'=K'^{-1}x'
(K'^{-1}x')^{T}E(^{-1}Kx)=0\Rightarrow x'^{T}K'^{-T}EK^{-1}x=0\Rightarrow x'^{T}Fx=0   基础矩阵(fundamental matrix)描述了空间中的点在两个像平面中的坐标对应关系

  • 基础矩阵是对极几何的代数表达方式
  • 基础矩阵描述了图像中任意对应点x↔x'之间的约束关系

基础矩阵特殊性质:

  1. F为3×3矩阵,秩为2,对任意匹配点对x↔x'均满足x^{T}Fx'=0
  2. 转置:如果F是表述点对(x,x')之间的基础矩阵,则F^{T}是表述点对(x',x)之间的基础矩阵
  3. 对极线:F可以将点x映射到对应像平面上一条线l=Fx',同理可得l'=F^{T}x
  4. 对极点:对于所有对极线,有e^{T}Fx'=0,\forall x'\Rightarrow e^{T}F=0,同理有Fe'=0
  5. F自由度7

基础矩阵估计算法
由于基础矩阵F定义为
x^{T}Fx'=0
任给两幅图像中的匹配点x与x',令x=(u,v,1)^{T}x'=(u',v',1)^{T}
\mathbf{F}=\left[\begin{array}{lll} f_{11} & f_{12} & f_{13} \\ f_{21} & f_{22} & f_{23} \\ f_{31} & f_{32} & f_{33} \end{array}\right]
有相应方程:
u u^{\prime} f_{11}+u v^{\prime} f_{12}+u f_{13}+v u^{\prime} f_{21}+v v^{\prime} f_{22}+v f_{23}+u^{\prime} f_{31}+v^{\prime} f_{32}+f_{33}=0
 
上述求解后的F不一定能满足秩为2的约束,因此还要在F基础上加以约束。
通过SVD分解可以解决上述问题,令F=U\Sigma V^{T}
\Sigma=\left[\begin{array}{ccc} \sigma_{1} & 0 & 0 \\ 0 & \sigma_{2} & 0 \\ 0 & 0 & \sigma_{3} \end{array}\right],令\Sigma'=\left[\begin{array}{ccc} \sigma_{1} & 0 & 0 \\ 0 & \sigma_{2} & 0 \\ 0 & 0 & 0 \end{array}\right]
则最终的解为F=U\Sigma' V^{T}

优点:线性求解,容易实现,运行速度快
缺点:对噪声敏感

8点算法中矩阵各列数据尺度差异大,最小二乘得到的结果精度一般都很低。因此需要对各个列向量进行归一化操作。

  1. 将图像坐标变化到合适的范围\hat{x_{i}}=Tx_{i},\hat{x_{i}}'=Tx_{i}'
  2. 根据变换后的坐标\hat{x_{i}},\hat{x_{i}}'计算归一化基础矩阵\hat{F}
  3. 还原原始基础矩阵F=T'^{T}\hat{F}T

从运动恢复结构


Step 1:特征匹配/跟踪

  • 检测稳定的角点/局部特征
  • 在多帧图像之间建立特征关联

Step 2:估算空间中3D点

  • 输入:m张图像,三维空间中n个固定的点:x_{ij}=P_{i}X_{j},i=1,...,m,j=1,...,n
  • 任务:估算m个投影矩阵P_{i}(Motion),根据关联点x_{ij}和投影矩阵反向计算n个3D点的坐标(Strcture)
  • 计算两幅图像之间的基础矩阵F
  • 假设第一个相机矩阵:P_{1}[I|0]
  • 第二个相机矩阵:P_{2}=[M|e']
    其中e'是极点(e'^{T}F=0)M=[e'_{\times }]Fe'_{\times }是e的叉积
  • 根据双视图方法估算图像之间的基础矩阵
  • 根据三角化(前方交汇)计算空间点集
  • 对于新增的图像:
    根据所有可见三维点在新图像中的投影,计算新相机的内外参数-calibration
    根据可视特征点,优化已有结构,计算新的三维点

光束法平差

  • 利用非线性法同步优化结构(3D点)与运动(相机参数)
  • 最小化重投影误差
    E(\mathbf{P}, \mathbf{X})=\sum_{i=1}^{m} \sum_{j=1}^{n} D\left(\mathbf{x}_{i j}, \mathbf{P}_{i} \mathbf{X}_{j}\right)^{2}

SFM小结:

  • 给定两幅输入图像:
    计算相互之间的基础矩阵F
    根据F计算投影矩阵P
    根据投影矩阵P和匹配点对x与x',计算匹配点在空间中的实际位置X
  • 给定移动摄像头/多张图像:
    根据开始的两帧图像,初始化F,P,X
    根据新的图像,计算P,优化X,增加新的空间点
    提供过光束法平差同步优化结构和外参

立体匹配与表面重建

同名匹配点的挑战: 

  • 视角变化导致遮挡
  • 纯色区域难以匹配
  • 观测角度受到光照影响
  • 场景中有多个相似目标
  • 目标中有透明物体
  • 景物遮挡

立体视觉:基本任务

  • 首先对输入左右相对进行极线约束校正
  • 对于左视图中的像素点x
    在校正后的极线中搜索x的最佳匹配点x'
    x点的视差为x-x',并计算x点的深度 depth(x) = fT/(x-x')

窗口匹配方法

评估窗口差异策略:

 相同点:评估两个图像点对点间像素差异

窗口选择问题

窗口尺度小:细节多,噪声大
窗口尺度大:细节少,鲁棒性强

解决匹配点病态问题:全局方法

E(D)=E_{\text {data }}(D)+E_{\text {smooth }}(D)

猜你喜欢

转载自blog.csdn.net/fjyalzl/article/details/127162095