UCAS - AI学院 - 计算机视觉专项课 - 第6讲 - 课程笔记

UCAS - AI学院 - 计算机视觉专项课 - 第6讲 - 课程笔记

相机标定与稀疏重建

  • 由多视角二维图像获得相机位姿以及场景结构

  • 多视几何

    • 根据各相机的参数,联立成像方程组
    • { x 1 = K 1 [ R 1 ∣ t 1 ] X 1 ⋯ x n = K n [ R n ∣ t n ] X n \left \{\begin{array}{rcl} \bold x_1 & = & \bold K_1 [\bold R_1 | \bold t_1] \bold X_1 \\ & \cdots & \\ \bold x_n & = & \bold K_n [\bold R_n | \bold t_n] \bold X_n \end{array} \right. x1xn==K1[R1t1]X1Kn[Rntn]Xn
    • 已知 x \bold x x K \bold K K R \bold R R t \bold t t,求 X \bold X X:三角化(Triangulation)
    • 已知 x \bold x x K \bold K K X \bold X X,求 R \bold R R t \bold t t:姿态估计(Pose Estimation)
    • 已知 x \bold x x X \bold X X,求 R \bold R R t \bold t t K \bold K K:相机标定(Camera Calibration)
    • 已知 x \bold x x,求 R \bold R R t \bold t t K \bold K K X \bold X X:稀疏重建(Sparse Reconstruction,SfM / SME)
  • 三角化

    • 已知 x \bold x x K \bold K K R \bold R R t \bold t t,求 X \bold X X
    • 相对简单,比较鲁棒
    • 一幅图像——无法确定景深信息
    • 两幅图像——两条空间射线在空间相交确定空间点——三角化
      • 问题:理想可相交,但是由于误差存在,射线不一定能在空间相交——近似交点确定
      • 近似交点:两条射线公垂线的中点(可解析表达、但只适用于两试图三角化)
    • 以重投影误差为目标的三角化问题
      • 假设一个空间点,利用小孔相机模型得到各相机的投影平面点
      • 评价这个点的好坏——重投影误差
        • 空间点 X \bold X X,投影平面点 x i \bold x_i xi,投影矩阵 P i = K i [ R i ∣ t i ] \bold P_i = \bold K_i [\bold R_i | \bold t_i] Pi=Ki[Riti]
        • 误差 P i X − x i \bold P_i \bold X - \bold x_i PiXxi
        • 最小化重投影误差平方和 min ⁡ ∑ i ∥ P i X − x i ∥ 2 \min \sum_i \|\bold P_i \bold X - \bold x_i\|^2 miniPiXxi2
      • 该误差适用于各种多图像三角化
      • 对于投影矩阵 P 3 × 4 \bold P_{3 \times 4} P3×4,表示为 [ P 1 P 2 P 3 ] \left[ \begin{array}{c} P_1 \\ P_2 \\ P_3 \end{array} \right] P1P2P3
      • 对于平面点坐标,投影过程为 x = P X \bold x = \bold {P}\bold X x=PX,有(由于尺度变化下等价,为了求解方程组,需要转换为非齐次坐标,即除以最后一维): x = P 1 [ X Y Z 1 ] ⊤ P 3 [ X Y Z 1 ] ⊤ , y = P 2 [ X Y Z 1 ] ⊤ P 3 [ X Y Z 1 ] ⊤ x = \frac {P_1 \left[\begin{array}{c} X & Y & Z & 1\end{array}\right]^\top}{P_3 \left[\begin{array}{c} X & Y & Z & 1\end{array}\right]^\top}, y = \frac {P_2 \left[\begin{array}{c} X & Y & Z & 1\end{array}\right]^\top}{P_3 \left[\begin{array}{c} X & Y & Z & 1\end{array}\right]^\top} x=P3[XYZ1]P1[XYZ1],y=P3[XYZ1]P2[XYZ1]
      • 一幅图像,可以提供两个约束——需要至少两幅图像构造上述方程组
      • n n n幅图像,构造方程组 A 2 n × 3 [ X Y Z ] = b 2 n × 1 \bold A_{2n \times 3} \left[\begin{array}{c} X \\ Y \\ Z\end{array}\right] = b_{2n \times 1} A2n×3XYZ=b2n×1
      • 求解:最小二乘法 [ X Y Z ] = ( A ⊤ A ) − 1 A ⊤ b 2 n × 1 \left[\begin{array}{c} X \\ Y \\ Z\end{array}\right] = (\bold A^\top \bold A)^{-1} \bold A^\top b_{2n \times 1} XYZ=(AA)1Ab2n×1
      • 线性方程组求解可得——直接线性变换(DLT)
      • 求解过程中,未引入几何意义,只是代数运算——代数误差解
      • 由于目标函数具有十分明显的几何意义,希望能够描述解的几何意义以及稳定性——几何误差解
    • 以上述线性解(代数误差)为初始值,迭代求解非线性优化问题(几何误差)
  • 相机标定

    • 已知 x \bold x x X \bold X X,求 R \bold R R t \bold t t K \bold K K
    • 三维坐标获取:人工标定物(结构已知、标定特征点易求取)
    • 投影方程: [ x i y i 1 ] = [ p 11 p 12 p 13 p 14 p 21 p 22 p 23 p 24 p 31 p 32 p 33 p 34 ] = [ X i Y i Z i 1 ] \left[\begin{array}{c} x_i \\ y_i \\ 1 \end{array}\right] = \left[\begin{array}{cccc} p_{11} & p_{12} & p_{13} & p_{14} \\ p_{21} & p_{22} & p_{23} & p_{24} \\ p_{31} & p_{32} & p_{33} & p_{34} \end{array}\right] = \left[\begin{array}{c} X_i \\ Y_i \\ Z_i \\ 1 \end{array}\right] xiyi1=p11p21p31p12p22p32p13p23p33p14p24p34=XiYiZi1
    • 一组2D-3D对应点的两个线性方程: [ X i Y i Z i 1 0 0 0 0 − x i X i − x i Y i − x i Z i − x i 0 0 0 0 X i Y i Z i 1 − y i X i − y i Y i − y i Z i − y i ] [ p 11 p 12 p 13 p 14 p 21 p 22 p 23 p 24 p 31 p 32 p 33 p 34 ] = [ 0 0 ] \left[\begin{array}{c} X_i & Y_i & Z_i & 1 & 0 & 0 & 0 & 0 & -x_i X_i & -x_iY_i & -x_i Z_i & -x_i \\ 0 & 0 & 0 & 0 & X_i & Y_i & Z_i & 1 & -y_i X_i & -y_iY_i & -y_i Z_i & -y_i \end{array}\right]\left[\begin{array}{c} p_{11} \\ p_{12} \\ p_{13} \\ p_{14} \\ p_{21} \\ p_{22} \\ p_{23} \\ p_{24} \\ p_{31} \\ p_{32} \\ p_{33} \\ p_{34} \end{array}\right] = \left[\begin{array}{c} 0 \\ 0 \end{array}\right] [Xi0Yi0Zi0100Xi0Yi0Zi01xiXiyiXixiYiyiYixiZiyiZixiyi]p11p12p13p14p21p22p23p24p31p32p33p34=[00]
      • 一对点对应确定两个约束——12个点,1个尺度齐次——11个自由度,11个方程——6个点
      • n ≥ 6 n \ge 6 n6时, P \bold P P可以通过DLT解出: A P = 0 \bold A \bold P = \bold 0 AP=0
    • 投影矩阵分解出内外参数
      • P = K [ R ∣ t ] = [ K R ∣ K t ] \bold P = \bold K [\bold R | \bold t] = [\bold {KR} | \bold {Kt}] P=K[Rt]=[KRKt]
      • 对内参数矩阵,为上三角阵;对旋转矩阵,为正交阵——转置后QR分解在转置回来(因为实际执行的RQ分解)
      • t \bold t t可进一步求得( K \bold K K取逆乘第四列)
    • 三维标定物优缺点
      • 优点:标定精度高,通过一幅图像即可标定
      • 缺点:需要高精度的三维标定块
    • 更实用方案:平面标定法( Z = 0 Z = 0 Z=0
      • 容易制作、标定工具箱成熟
      • 精度不如三维标定物,需要多个视角图像
      • X = [ X Y 0 1 ] \bold X = \left[\begin{array}{c} X \\ Y \\ 0 \\ 1 \end{array}\right] X=XY01
      • R \bold R R表示成 [ r 1 r 2 r 3 ] [\begin{array}{c}r_1 & r_2 & r_3\end{array}] [r1r2r3],则有 [ x y 1 ] = K [ r 1 r 2 r 3 ∣ t ] [ X Y 0 1 ] = K [ r 1 r 2 ∣ t ] [ X Y 1 ] = H 3 × 3 [ X Y 1 ] \left[\begin{array}{c} x \\ y \\ 1 \end{array}\right] = \bold K [\begin{array}{c}r_1 & r_2 & r_3\end{array}| \bold t] \left[\begin{array}{c} X \\ Y \\ 0 \\ 1 \end{array}\right] = \bold K [\begin{array}{c}r_1 & r_2\end{array}| \bold t] \left[\begin{array}{c} X \\ Y \\ 1 \end{array}\right] = \bold H_{3 \times 3} \left[\begin{array}{c} X \\ Y \\ 1 \end{array}\right] xy1=K[r1r2r3t]XY01=K[r1r2t]XY1=H3×3XY1
      • H \bold H H为单应,8个自由度
      • 2D-平面3D:单应变换
      • n n n组2D-3D对应点可得到关于 H \bold H H 2 n 2n 2n个线性方程
      • n ≥ 4 n \ge 4 n4时,可DLT求解
      • 内参数分解:多个图像求解
        • H = K [ r 1 r 2 r 3 ∣ t \bold H = \bold K [\begin{array}{c}r_1 & r_2 & r_3\end{array}| \bold t H=K[r1r2r3t
        • K − 1 [ h 1 h 2 h 3 ] = [ r 1 r 2 ∣ t ] \bold K^{-1} [\begin{array}{c} h_1 & h_2 & h_3\end{array}] = [\begin{array}{c}r_1 & r_2\end{array} | \bold t] K1[h1h2h3]=[r1r2t]
        • 由于 r 1 r_1 r1 r 2 r_2 r2来自正交矩阵,有内积为0,模为1的性质
        • h 1 ⊤ K − ⊤ K − 1 h 2 = 0 h_1^\top \bold K^{-\top} \bold K^{-1} h_2 = 0 h1KK1h2=0
        • h 1 ⊤ K − ⊤ K − 1 h 1 = h 2 ⊤ K − ⊤ K − 1 h 2 h_1^\top \bold K^{-\top} \bold K^{-1} h_1 = h_2^\top \bold K^{-\top} \bold K^{-1} h_2 h1KK1h1=h2KK1h2
        • K \bold K K为5参数, ω = K − ⊤ K − 1 \omega = \bold K^{-\top} \bold K^{-1} ω=KK1为对称阵, n ≥ 3 n \ge 3 n3时,DLT求解出 ω \omega ω,然后正交分解出 K \bold K K
      • 有了内参数,可以进一步确定 [ r 1 r 2 ∣ t ] [\begin{array}{c}r_1 & r_2\end{array}| \bold t] [r1r2t],以及 r 3 = r 1 × r 2 r_3 = r_1 \times r_2 r3=r1×r2
      • 标定流程
        • 打印一张模板并贴于平面
        • 从不同(至少三个,一般会更多)角度拍摄若干张模板图像
          • 标定问题,不会存在错误样本点,因此可以使用尽可能多的数据
          • 板尽量不满整个拍摄区域
        • 检测图像中的特征点
        • 求解相机内外参数
        • 分析重投影误差(半个像素内)
        • 输出标定结果
    • 利用消影点标定(假设 K \bold K K中只有 f f f未知)
      • 消影点:空间平行线在图像投影线的交点——无穷远点
      • 消影点只与三维直线方向有关,与其位置无关
      • 寻找两个世界坐标系坐标轴方向的消影点(只剩 R \bold R R的一列)
      • 消影点越靠近图像中心, f f f计算越准确
    • DLT求解相机标定的优缺点
      • 优点:线性求解
      • 缺点:不能包含畸变参数、无法添加其他参数、最小化代数误差,无几何意义(作为初始值,迭代非线性最小化重投影误差)
  • 姿态估计

    • 已知 x \bold x x K \bold K K X \bold X X,求 R \bold R R t \bold t t
    • 使用与相机标定相同的DLT方法求解
      • 6个2D-3D对应点
      • P \bold P P的12个线性方程
      • DLT线性求解 P \bold P P
      • 分解内外参数 [ R ∣ t ] [\bold R | \bold t] [Rt]即位姿
    • P \bold P P有11个自由度,前者有5个自由度,后二者分别由3个自由度
      • 因此只需要3个点就可以求解
    • PnP问题
      • 输入:n组2D-3D对应点,相机内参数 K \bold K K
      • 输出:3D点在相机坐标系下的坐标,由坐标变换得到的$\bold R 和 和 \bold t$
      • 常用:P3P、P4P、EPnP(不做超过5个点)
  • 稀疏重建

    • 已知 x \bold x x,求 R \bold R R t \bold t t K \bold K K X \bold X X
    • x 1 ⊤ F x 2 = 0 \bold x_1^\top \bold F \bold x_2 = 0 x1Fx2=0,8点法求解基本矩阵 F \bold F F
    • 但是 F \bold F F无法唯一分解 K 1 \bold K_1 K1 K 2 \bold K_2 K2 R \bold R R t \bold t t
    • 假设 K 1 \bold K_1 K1 K 2 \bold K_2 K2已知,求解本质矩阵 E \bold E E,可以唯一地分解 R \bold R R t \bold t t
    • 本质矩阵分解:SVD分解,假设第一个相机 R 1 = I \bold R_1 = \bold I R1=I t 1 = 0 \bold t_1 = \bold 0 t1=0
      • E = U diag ⁡ ( 1 , 1 , 0 ) V ⊤ \bold E = \bold U \operatorname{diag}(1, 1, 0) \bold V^\top E=Udiag(1,1,0)V
      • 对第二个相机,有四组解——进一步判定
      • 进一步判定: X \bold X X在两个相机前方数量最多的解
    • 实践中给定 K \bold K K
      • 通过EXIF获取相机焦距(物理值)、镜头型号等
      • 通过镜头型号确定CCD物理尺寸——计算获得焦距的像素值
      • 主点:默认为中心
    • 在获得 K 1 \bold K_1 K1 K 2 \bold K_2 K2 R \bold R R t \bold t t后,三角化计算空间点 X \bold X X(代数误差解)
    • 以上述结果为初始值,迭代最小化重投影误差,得到 R \bold R R t \bold t t K \bold K K X \bold X X的几何误差解
  • 重投影误差最小化问题的求解

    • min ⁡ ∑ i ∥ P i X i − x i ∥ 2 \min \sum_i \|\bold P_i \bold X_i - \bold x_i\|^2 miniPiXixi2
    • 转换为非齐次坐标,实现等式处理(直接加减): min ⁡ ∑ i ∑ j ∥ P 1 : 2 i X j P 3 i X j − [ x i j y i j ] ∥ 2 \min \sum_i \sum_j \left\| \frac{P_{1:2}^i \bold X_j}{P_{3}^i \bold X_j} - \left[\begin{array}{c} x_{ij} \\ y_{ij} \end{array}\right] \right\|^2 minijP3iXjP1:2iXj[xijyij]2
    • 非线性最小二乘问题
    • 使用 X ^ \widehat {\bold X} X 统一表示未知量: min ⁡ ∑ i ∑ j ∥ f i ( X ^ ) − b i j ∥ 2 \min \sum_i \sum_j \left\| f_i(\widehat {\bold X}) - b_{ij} \right\|^2 minijfi(X )bij2
    • 针对不同问题, X ^ \widehat {\bold X} X 包含的未知量不同
    • 向量化表示: min ⁡ ∥ F ( X ^ ) − b ∥ 2 \min \left\|F(\widehat {\bold X}) - \bold b\right\|^2 minF(X )b2,为原有分量的行组合向量表示
    • 非线性最小二乘问题求解方法
      • (一般非线性优化问题)梯度下降法、牛顿法
      • (非线性最小二乘问题)高斯牛顿法、LM法
    • 迭代优化的基本思路
      • 给定初始值
      • 开始迭代优化
        • 选择最优移动方向使目标函数值下降最快
        • 以一定步长沿最优方向移动当前值
        • 若两次迭代间函数值差异小于阈值或迭代次数超出阈值,跳出迭代
      • 迭代结束,输出当前值
    • 梯度下降法: δ ( X ^ ) = − J ( X ^ ) ⊤ r ( X ^ ) \delta(\widehat {\bold X}) = -J(\widehat {\bold X})^\top r(\widehat {\bold X}) δ(X )=J(X )r(X )
      • KaTeX parse error: Undefined control sequence: \part at position 32: …d X}) = \frac {\̲p̲a̲r̲t̲ ̲F(\widehat {\bo…(雅各比矩阵)
      • r ( X ^ ) = F ( X ^ ) − b r(\widehat {\bold X}) = F(\widehat {\bold X}) - \bold b r(X )=F(X )b
      • 一阶梯度近似,方向不精准,收敛较慢
    • 牛顿法: δ ( X ^ ) = − ( J ( X ^ ) ⊤ J ( X ^ ) + S ( X ^ ) ) − 1 J ( X ^ ) ⊤ r ( X ^ ) \delta(\widehat {\bold X}) = -(J(\widehat {\bold X})^\top J(\widehat {\bold X}) + S(\widehat {\bold X}))^{-1} J(\widehat {\bold X})^\top r(\widehat {\bold X}) δ(X )=(J(X )J(X )+S(X ))1J(X )r(X )
      • H ( X ^ ) = J ( X ^ ) ⊤ J ( X ^ ) + S ( X ^ ) H(\widehat {\bold X}) = J(\widehat {\bold X})^\top J(\widehat {\bold X}) + S(\widehat {\bold X}) H(X )=J(X )J(X )+S(X )(黑森矩阵,很难无法解析求解)
      • 二阶梯度近似,方向更加精准,收敛更快
    • 高斯牛顿法: δ ( X ^ ) = − ( J ( X ^ ) ⊤ J ( X ^ ) ) − 1 J ( X ^ ) ⊤ r ( X ^ ) \delta(\widehat {\bold X}) = -(J(\widehat {\bold X})^\top J(\widehat {\bold X}))^{-1} J(\widehat {\bold X})^\top r(\widehat {\bold X}) δ(X )=(J(X )J(X ))1J(X )r(X )
      • 超线性收敛,收敛速度接近牛顿法,且避免黑森矩阵
      • 直接丢掉其中一项,会导致可能求导错误方向,不能保证收敛
    • 阻尼高斯牛顿法: δ ( X ^ ) = − ( J ( X ^ ) ⊤ J ( X ^ ) + λ I ) − 1 J ( X ^ ) ⊤ r ( X ^ ) \delta(\widehat {\bold X}) = -(J(\widehat {\bold X})^\top J(\widehat {\bold X}) + \lambda \bold I)^{-1} J(\widehat {\bold X})^\top r(\widehat {\bold X}) δ(X )=(J(X )J(X )+λI)1J(X )r(X )
      • 利用参数缓解去除项带来的影响,避免错误的发生
      • λ → 0 \lambda \to 0 λ0,高斯牛顿法
      • λ → ∞ \lambda \to \infty λ,梯度下降法(前一项近似为负无穷小单位阵,不影响后面)
    • LM法:启发式动态调整 λ \lambda λ δ ( X ^ , λ ) = − ( J ( X ^ ) ⊤ J ( X ^ ) + λ I ) − 1 J ( X ^ ) ⊤ r ( X ^ ) \delta(\widehat {\bold X}, \lambda) = -(J(\widehat {\bold X})^\top J(\widehat {\bold X}) + \lambda \bold I)^{-1} J(\widehat {\bold X})^\top r(\widehat {\bold X}) δ(X ,λ)=(J(X )J(X )+λI)1J(X )r(X )
      • 误差减少,则 λ ← 0.1 λ \lambda \gets 0.1\lambda λ0.1λ
      • 误差增大,则 λ ← 10 λ \lambda \gets 10 \lambda λ10λ
      • 捆绑调整BA / 光束平差
  • 应用:Photo Tourism——增量式SfM

    • 输入:网络搜索图像
    • 输入特点:设备不同、时间不同、无序
    • 特征检测:SIFT
    • 特征匹配:相似图像匹配(通过基本矩阵过滤后的匹配点)
    • 连接成匹配点序列(Tracks)
      • 一个Track对应一个三维空间点,表示同一个特征点在图像间的轨迹
      • 可能存在不一致的点,去除之(去除该点或者去除整个Track)
    • 通过SfM计算相机位姿和3D点
      • 输入:Tracks
      • 输出:相机位姿和3D点
      • 难点
        • 参数数量多
        • 高维非线性优化——BA
      • 问题
        • 有效初始值(防止局部最优)
        • 难以同时初始化所有参数
      • 解决思路
        • 两视图SfM容易
        • 逐步添加新的相机比较容易——增量式SfM
      • 步骤
        • 初始图像对选择(足够多匹配点、基线足够长)
        • 通过两视图SfM计算初始模型
        • 迭代
          • 选择一幅能看到目前模型中最多3D点的图像
          • 根据3D-2D点对估计相机位姿
          • 三角化新特征点Tracks
          • BA,整体优化
      • 外点处理
        • 外点不可避免
        • 产生较大误差,影响优化
        • 处理策略
          • BA之后去除外点(误差非常大)并重新优化
          • 使用鲁棒目标函数(Huber函数)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值