目录

  • 1 小孔成像
    • 1.1 The normalized camera
    • 1.2 Focal length parameters
    • 1.3 Offset and skew parameters
    • 1.4 Position and orientation of camera
    • 1.5 Full pinhole camera model
  • 2 齐次坐标系
    • 2.1 齐次坐标下的相机模型
  • 3 学习外部参数
    • 3.1 问题描述
    • 3.2 求解过程
  • 4 学习内部参数
    • 4.1 问题描述
    • 4.2 求解过程
  • 5 推理三维坐标点
    • 5.1 问题描述
    • 5.2 求解过程
    • 5.3 总结

1 小孔成像

针孔相机是一个描述真实世界中3D坐标点和图像平面上对应2D坐标点关系的纯几何模型。如下图所示:

  图中,我们假设世界坐标系和相机坐标系重合。这里还有几个专有名词:

  • 光心(Optical center)
  • 像平面(Image plane)
  • 焦距(Focal length)
  • 光轴(Optical axis)
  • 主点(Principal point)
    接下来,我们就要建立描述真实世界3D坐标点[u,v,w]T[u,v,w]^T[u,v,w]T和它在像平面上投影点[x,y]T[x,y]^T[x,y]T数学关系的模型。建模的原理很简单,只需要用到初中学的相似三角形

1.1 The normalized camera

在标准相机(The normalized camera)模型里,有三个限制条件:

  • 焦距为1;
  • 相机坐标系和世界坐标系重合;
  • 2D图像坐标系的原点和主点重合;
    直接上公式:
    x=uwy=vw(1)x=\frac {u}{w}\\ y=\frac {v}{w} \tag{1} x=wu​y=wv​(1)

1.2 Focal length parameters

标准相机模型的限制条件太多,实际意义不大。在真实的相机中,首先,焦距没有必要一定要设为1;其次,2D图像坐标系中是以像素为单位进行测量的,具有离散化的特点。所以引入了xxx和yyy轴方向上的焦长参数ϕx\phi_xϕx​和ϕy\phi_yϕy​,注意,这两个参数分别考虑了对应坐标轴方向上感光元件的间距和焦距。待入模型得:
x=ϕxuwy=ϕyvw(2)x=\frac {\phi_xu}{w}\\ y=\frac {\phi_yv}{w} \tag{2} x=wϕx​u​y=wϕy​v​(2)

1.3 Offset and skew parameters

进一步减少限制条件,在真实世界中,图像坐标系的原点一般位于像平面的左上角,因此引入xxx和yyy轴方向的偏置参数δx\delta_xδx​和δy\delta_yδy​,代入模型得:
x=ϕxuw+δxy=ϕyvw+δy(3)x=\frac {\phi_xu}{w}+\delta_x\\ y=\frac {\phi_yv}{w}+\delta_y \tag{3} x=wϕx​u​+δx​y=wϕy​v​+δy​(3)
根据实际经验,我们还需要引入一个参数γ\gammaγ,这个参数没有实际的物理意义,却可以使得模型更加精确。代入模型得:
x=ϕxu+γvw+δxy=ϕyvw+δy(4)x=\frac {\phi_xu+\gamma v}{w}+\delta_x\\ y=\frac {\phi_yv}{w}+\delta_y \tag{4} x=wϕx​u+γv​+δx​y=wϕy​v​+δy​(4)

1.4 Position and orientation of camera

最后,为了定义任意的世界坐标系,需要引入场景中3D坐标点在世界坐标系和相机坐标系的转换:
[u′v′w′]=[ω11ω12ω13ω21ω22ω23ω31ω32ω33][uvw]+[τxτyτz](5)\left[ \begin{matrix} u'\\v'\\w' \end{matrix} \right]= \left[ \begin{matrix} \omega_{11}&\omega_{12}&\omega_{13}\\\omega_{21}&\omega_{22}&\omega_{23}\\\omega_{31}&\omega_{32}&\omega_{33} \end{matrix} \right] \left[ \begin{matrix} u\\v\\w \end{matrix} \right]+ \left[ \begin{matrix} \tau_x\\\tau_y\\\tau_z \end{matrix} \right] \tag{5} ⎣⎡​u′v′w′​⎦⎤​=⎣⎡​ω11​ω21​ω31​​ω12​ω22​ω32​​ω13​ω23​ω33​​⎦⎤​⎣⎡​uvw​⎦⎤​+⎣⎡​τx​τy​τz​​⎦⎤​(5)
简写为:
w′=Ωw+τ(6)w'=\Omega w+\tau \tag{6}w′=Ωw+τ(6)

1.5 Full pinhole camera model

结合式(4)和(5)可得完整的3D世界坐标点[u,v,w]T[u,v,w]^T[u,v,w]T到2D图像坐标点[x,y]T[x,y]^T[x,y]T的数学关系为:
x=ϕx(ω11u+ω12v+ω13w+τx)+γ(ω21u+ω22v+ω23w+τy)ω31u+ω32v+ω33w+τz+δxy=ϕy(ω21u+ω22v+ω23w+τy)ω31u+ω32v+ω33w+τz+δy(7)x=\frac {\phi_x(\omega_{11}u+\omega_{12}v+\omega_{13}w+\tau_x)+\gamma(\omega_{21}u+\omega_{22}v+\omega_{23}w+\tau_y)}{\omega_{31}u+\omega_{32}v+\omega_{33}w+\tau_z}+\delta_x\\ y=\frac {\phi_y(\omega_{21}u+\omega_{22}v+\omega_{23}w+\tau_y)}{\omega_{31}u+\omega_{32}v+\omega_{33}w+\tau_z}+\delta_y \tag{7} x=ω31​u+ω32​v+ω33​w+τz​ϕx​(ω11​u+ω12​v+ω13​w+τx​)+γ(ω21​u+ω22​v+ω23​w+τy​)​+δx​y=ω31​u+ω32​v+ω33​w+τz​ϕy​(ω21​u+ω22​v+ω23​w+τy​)​+δy​(7)
内部参数(intrinsic parameters):{ϕx,ϕy,γ,δx,δy}\{\phi_x,\phi_y,\gamma,\delta_x,\delta_y\}{ϕx​,ϕy​,γ,δx​,δy​},也用矩阵形式表达为:
Λ=[ϕxγδx0ϕyδy001](8)\Lambda= \left[ \begin{matrix} \phi_x&\gamma&\delta_x\\0&\phi_y&\delta_y\\0&0&1 \end{matrix} \right]\tag{8} Λ=⎣⎡​ϕx​00​γϕy​0​δx​δy​1​⎦⎤​(8)
外部参数(extrinsic parameters):{Ω,τ}\{\Omega,\tau\}{Ω,τ}
最终的相机模型可简化为:
x=pinhole[w,Λ,Ω,τ](9)x=pinhole[w,\Lambda,\Omega,\tau]\tag{9}x=pinhole[w,Λ,Ω,τ](9)
概率形式为:
Pr[x∣w,Λ,Ω,τ]=Normx[pinhole[w,Λ,Ω,τ],δ2I](10)Pr[x|w,\Lambda,\Omega,\tau]=Norm_x[pinhole[w,\Lambda,\Omega,\tau],\delta^2I]\tag{10}Pr[x∣w,Λ,Ω,τ]=Normx​[pinhole[w,Λ,Ω,τ],δ2I](10)

2 齐次坐标系

引入齐次坐标系的目的是将式(7)的非线性关系式转化为线性关系式。
2D坐标点齐次坐标:
x~=λ[xy1](11)\widetilde{x}=\lambda \left[ \begin{matrix} x\\y\\1 \end{matrix} \right]\tag{11} x=λ⎣⎡​xy1​⎦⎤​(11)
2D坐标点的笛卡尔坐标到齐次坐标的转换只需要在向量后增加一个元素1,齐次坐标到笛卡尔坐标的转换只需要前两个元素除以最后一个元素。
3D坐标点齐次坐标:
w~=λ[uvw1](12)\widetilde{w}=\lambda \left[ \begin{matrix} u\\v\\w\\1 \end{matrix} \right]\tag{12} w=λ⎣⎢⎢⎡​uvw1​⎦⎥⎥⎤​(12)
3D坐标点的笛卡尔坐标到齐次坐标的转换只需要在向量后增加一个元素1,齐次坐标到笛卡尔坐标的转换只需要前两个元素除以最后一个元素。

2.1 齐次坐标下的相机模型

λ[xy1]=[ϕxγδx0ϕyδy001][ω11ω12ω13τxω21ω22ω23τyω31ω32ω33τz][uvw1](13)\lambda \left[ \begin{matrix} x\\y\\1 \end{matrix} \right]= \left[ \begin{matrix} \phi_x&\gamma&\delta_x\\0&\phi_y&\delta_y\\0&0&1 \end{matrix} \right] \left[ \begin{matrix} \omega_{11}&\omega_{12}&\omega_{13}&\tau_x\\\omega_{21}&\omega_{22}&\omega_{23}&\tau_y\\\omega_{31}&\omega_{32}&\omega_{33}&\tau_z \end{matrix} \right]\left[ \begin{matrix} u\\v\\w\\1 \end{matrix} \right]\tag{13} λ⎣⎡​xy1​⎦⎤​=⎣⎡​ϕx​00​γϕy​0​δx​δy​1​⎦⎤​⎣⎡​ω11​ω21​ω31​​ω12​ω22​ω32​​ω13​ω23​ω33​​τx​τy​τz​​⎦⎤​⎣⎢⎢⎡​uvw1​⎦⎥⎥⎤​(13)
或者简记为:
λx~=Λ[Ωτ]w~(14)\lambda \widetilde{x}=\Lambda[\Omega\,\,\,\tau]\widetilde{w}\tag{14}λx=Λ[Ωτ]w(14)

3 学习外部参数

Perspective-n-point(PnP)

3.1 问题描述

  已知场景中III个不同的三D坐标点{wi}i=1I\{w_i\}_{i=1}^I{wi​}i=1I​,与之对应的图像平面2D投影点{xi}i=1I\{x_i\}_{i=1}^I{xi​}i=1I​和内部参数Λ\LambdaΛ,求解外部参数{Ω,τ}\{\Omega,\tau\}{Ω,τ}:
Ω^,τ^=argmax⁡Ω,τ[∑i=1Ilog⁡[Pr(xi∣wi,Λ,Ω,τ)]](15)\widehat{\Omega},\,\widehat{\tau}={\underset {\Omega,\,\tau}{\operatorname {argmax} }}\,\Bigg[\sum_{i=1}^I\log[Pr(x_i|w_i,\Lambda,\Omega,\tau)]\Bigg]\tag{15} Ω,τ=Ω,τargmax​[i=1∑I​log[Pr(xi​∣wi​,Λ,Ω,τ)]](15)

3.2 求解过程

  该优化问题是非凸问题,我们不能得到目标函数的封闭解,所以只能用非线性优化求解。而非线性优化求解需要一个初始值,而这个初始值的挑选非常关键,它必须保证迭代过程最后收敛到全局最优解。所以我们用齐次坐标重新表示目标函数以求得一个满足要求的封闭形式的初始解。
  第III个齐次3D坐标点和对应的2D图像投影点的关系为:
λi[xiyi1]=[ϕxγδx0ϕyδy001][ω11ω12ω13τxω21ω22ω23τyω31ω32ω33τz][uiviwi1](16)\lambda_i \left[ \begin{matrix} x_i\\y_i\\1 \end{matrix} \right]= \left[ \begin{matrix} \phi_x&\gamma&\delta_x\\0&\phi_y&\delta_y\\0&0&1 \end{matrix} \right] \left[ \begin{matrix} \omega_{11}&\omega_{12}&\omega_{13}&\tau_x\\\omega_{21}&\omega_{22}&\omega_{23}&\tau_y\\\omega_{31}&\omega_{32}&\omega_{33}&\tau_z \end{matrix} \right]\left[ \begin{matrix} u_i\\v_i\\w_i\\1 \end{matrix} \right]\tag{16} λi​⎣⎡​xi​yi​1​⎦⎤​=⎣⎡​ϕx​00​γϕy​0​δx​δy​1​⎦⎤​⎣⎡​ω11​ω21​ω31​​ω12​ω22​ω32​​ω13​ω23​ω33​​τx​τy​τz​​⎦⎤​⎣⎢⎢⎡​ui​vi​wi​1​⎦⎥⎥⎤​(16)
  式(16)等号两边同时左乘Λ−1\Lambda^{-1}Λ−1得:
λi[xi′yi′1]=[ω11ω12ω13τxω21ω22ω23τyω31ω32ω33τz][uiviwi1](17)\lambda_i \left[ \begin{matrix} x_i'\\y_i'\\1 \end{matrix} \right]= \left[ \begin{matrix} \omega_{11}&\omega_{12}&\omega_{13}&\tau_x\\\omega_{21}&\omega_{22}&\omega_{23}&\tau_y\\\omega_{31}&\omega_{32}&\omega_{33}&\tau_z \end{matrix} \right]\left[ \begin{matrix} u_i\\v_i\\w_i\\1 \end{matrix} \right]\tag{17} λi​⎣⎡​xi′​yi′​1​⎦⎤​=⎣⎡​ω11​ω21​ω31​​ω12​ω22​ω32​​ω13​ω23​ω33​​τx​τy​τz​​⎦⎤​⎣⎢⎢⎡​ui​vi​wi​1​⎦⎥⎥⎤​(17)
  消去λi\lambda_iλi​得:
[(ω31ui+ω32vi+ω33wi+τz)xi′(ω31ui+ω32vi+ω33wi+τz)yi′]=[ω11ω12ω13τxω21ω22ω23τy][uiviwi1](18)\left[ \begin{matrix} (\omega_{31}u_i+\omega_{32}v_i+\omega_{33}w_i+\tau_z)x_i'\\ (\omega_{31}u_i+\omega_{32}v_i+\omega_{33}w_i+\tau_z)y_i' \end{matrix} \right]= \left[ \begin{matrix} \omega_{11}&\omega_{12}&\omega_{13}&\tau_x\\\omega_{21}&\omega_{22}&\omega_{23}&\tau_y \end{matrix} \right]\left[ \begin{matrix} u_i\\v_i\\w_i\\1 \end{matrix} \right]\tag{18} [(ω31​ui​+ω32​vi​+ω33​wi​+τz​)xi′​(ω31​ui​+ω32​vi​+ω33​wi​+τz​)yi′​​]=[ω11​ω21​​ω12​ω22​​ω13​ω23​​τx​τy​​]⎣⎢⎢⎡​ui​vi​wi​1​⎦⎥⎥⎤​(18)
  将III个点对应的等式全部整合为下式:
[u1v1w110000−u1x1′−v1x1′−w1x1′−x1′0000u1v1w11−u1y1′−v1y1′−w1y1′−y1′u2v2w210000−u2x2′−v2x2′−w2x2′−x2′0000u2v2w21−u2y2′−v2y2′−w2y2′−y2′⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮uIvIwI10000−uIxI′−vIxI′−wIxI′−xI′0000uIvIwI1−uIyI′−vIyI′−wIyI′−yI′][ω11ω12ω13τxω21ω22ω23τyω31ω32ω33τz]=0(19)\left[ \begin{matrix} u_1&v_1&w_1&1&0&0&0&0&-u_1x_1'&-v_1x_1'&-w_1x_1'&-x_1'\\ 0&0&0&0&u_1&v_1&w_1&1&-u_1y_1'&-v_1y_1'&-w_1y_1'&-y_1'\\ u_2&v_2&w_2&1&0&0&0&0&-u_2x_2'&-v_2x_2'&-w_2x_2'&-x_2'\\ 0&0&0&0&u_2&v_2&w_2&1&-u_2y_2'&-v_2y_2'&-w_2y_2'&-y_2'\\ \vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots&\vdots\\ u_I&v_I&w_I&1&0&0&0&0&-u_Ix_I'&-v_Ix_I'&-w_Ix_I'&-x_I'\\ 0&0&0&0&u_I&v_I&w_I&1&-u_Iy_I'&-v_Iy_I'&-w_Iy_I'&-y_I'\\ \end{matrix} \right]\left[\begin{matrix} \omega_{11}\\\omega_{12}\\\omega_{13}\\\tau_x\\\omega_{21}\\\omega_{22}\\\omega_{23}\\\tau_y\\\omega_{31}\\\omega_{32}\\\omega_{33}\\\tau_z \end{matrix} \right]=0\tag{19} ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​u1​0u2​0⋮uI​0​v1​0v2​0⋮vI​0​w1​0w2​0⋮wI​0​1010⋮10​0u1​0u2​⋮0uI​​0v1​0v2​⋮0vI​​0w1​0w2​⋮0wI​​0101⋮01​−u1​x1′​−u1​y1′​−u2​x2′​−u2​y2′​⋮−uI​xI′​−uI​yI′​​−v1​x1′​−v1​y1′​−v2​x2′​−v2​y2′​⋮−vI​xI′​−vI​yI′​​−w1​x1′​−w1​y1′​−w2​x2′​−w2​y2′​⋮−wI​xI′​−wI​yI′​​−x1′​−y1′​−x2′​−y2′​⋮−xI′​−yI′​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​ω11​ω12​ω13​τx​ω21​ω22​ω23​τy​ω31​ω32​ω33​τz​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​=0(19)
  此时,问题就变为形如Ab=0Ab=0Ab=0的minimum direction problem (请阅读参考资料),即求解奇异值分解A=ULVTA=ULV^TA=ULVT并且设b^\hat{b}b^为VVV的最后一列。但是从b^\hat{b}b^提取得到的旋转矩阵Ω\OmegaΩ和平移向量τ\tauτ与真实值有个未知标量的差别,所以还需要进一步求解:
  首先求出最接近的旋转矩阵,问题形如Ω^=argmin⁡Ω′[Ω′−Ω]\hat \Omega={\underset {\Omega'}{\operatorname {argmin} }}\,[\Omega'-\Omega]Ω^=Ω′argmin​[Ω′−Ω],此时就可以参照Orthogonal Procrustes problem求解(请阅读参考资料),具体为求奇异值分解Ω=ULVT\Omega=ULV^TΩ=ULVT并且设Ω^\widehat{\Omega}Ω为UVTUV^TUVT。
  最后再按照下式求解τ^\widehat{\tau}τ:
τ^=∑m=13∑n=13Ω^mnΩmnτ(20)\widehat{\tau}=\sum_{m=1}^3\sum_{n=1}^3 \frac{\widehat{\Omega}_{mn}}{\Omega_{mn}}\tau\tag{20} τ=m=1∑3​n=1∑3​Ωmn​Ωmn​​τ(20)

4 学习内部参数

Camera Calibration

4.1 问题描述

  已知场景中III个不同的三D坐标点{wi}i=1I\{w_i\}_{i=1}^I{wi​}i=1I​和与之对应的图像平面2D投影点{xi}i=1I\{x_i\}_{i=1}^I{xi​}i=1I​,利用最大似然方法求解内部参数{Ω,τ}\{\Omega,\tau\}{Ω,τ}:
Λ^=argmax⁡Λ[max⁡Ω,τ[∑i=1Ilog⁡[Pr[xi∣wi,Λ,Ω,τ]]](21)\widehat{\Lambda}={\underset{\Lambda}{\operatorname{argmax}}}\Bigg[{\underset {\Omega,\,\tau}{\operatorname {max} }}\,\Bigg[\sum_{i=1}^I\log[Pr[x_i|w_i,\Lambda,\Omega,\tau]\Bigg]\Bigg]\tag{21} Λ=Λargmax​[Ω,τmax​[i=1∑I​log[Pr[xi​∣wi​,Λ,Ω,τ]]](21)

4.2 求解过程

  由于内部参数和外部参数都为未知,所以一个简单(但效率很差)的方法是coordinate ascent method。该方法交替迭代下述两个过程:

  • 更新内部参数(已知),求解外部参数:
    Ω^,τ^=argmax⁡Ω,τ[∑i=1Ilog⁡[Pr(xi∣wi,Λ,Ω,τ)]](22)\widehat{\Omega},\,\widehat{\tau}={\underset {\Omega,\,\tau}{\operatorname {argmax} }}\,\Bigg[\sum_{i=1}^I\log[Pr(x_i|w_i,\Lambda,\Omega,\tau)]\Bigg]\tag{22} Ω,τ=Ω,τargmax​[i=1∑I​log[Pr(xi​∣wi​,Λ,Ω,τ)]](22)
  • 更新外部参数(已知),求解内部参数:
    Λ^=argmax⁡Λ[∑i=1Ilog⁡[Pr(xi∣wi,Λ,Ω,τ)]](23)\widehat{\Lambda}={\underset{\Lambda}{\operatorname{argmax}}}\Bigg[\sum_{i=1}^I\log[Pr(x_i|w_i,\Lambda,\Omega,\tau)]\Bigg]\tag{23} Λ=Λargmax​[i=1∑I​log[Pr(xi​∣wi​,Λ,Ω,τ)]](23)
      由于第一步在第三节已经介绍过,所以接下来介绍第二步的解法。幸运的是,第二个问题有封闭解(不需要齐次表示)。重新描述问题为:
      已知场景中III个不同的三D坐标点{wi}i=1I\{w_i\}_{i=1}^I{wi​}i=1I​,与之对应的图像平面2D投影点{xi}i=1I\{x_i\}_{i=1}^I{xi​}i=1I​和外部参数{Ω,τ}\{\Omega,\tau\}{Ω,τ},求解内部参数Λ\LambdaΛ:
    Λ^=argmax⁡Λ[∑i=1Ilog⁡[Normxi[pinhole[wi,Λ,Ω,τ],σ2I]]]=argmin⁡Λ[∑i=1I(xi−pinhole[wi,Λ,Ω,τ])T(xi−pinhole[wi,Λ,Ω,τ])](24)\widehat{\Lambda}={\underset{\Lambda}{\operatorname{argmax}}}\Bigg[\sum_{i=1}^I \log\big[Norm_{x_i}[pinhole[w_i,\Lambda,\Omega,\tau],\sigma^2I]\big]\Bigg]\\ ={\underset{\Lambda}{\operatorname{argmin}}}\Bigg[\sum_{i=1}^I (x_i-pinhole[w_i,\Lambda,\Omega,\tau])^T(x_i-pinhole[w_i,\Lambda,\Omega,\tau])\Bigg]\tag{24} Λ=Λargmax​[i=1∑I​log[Normxi​​[pinhole[wi​,Λ,Ω,τ],σ2I]]]=Λargmin​[i=1∑I​(xi​−pinhole[wi​,Λ,Ω,τ])T(xi​−pinhole[wi​,Λ,Ω,τ])](24)
      很明显,此时问题转化为一个Least squares problem(请阅读参考资料):
    Ai=[ω11ui+ω12vi+ω13wi+τzω31ui+ω32vi+ω33wi+τzω21ui+ω22vi+ω23wi+τyω31ui+ω32vi+ω33wi+τz100000ω21ui+ω22vi+ω23wi+τyω31ui+ω32vi+ω33wi+τz1]h=[ϕx,γ,δx,ϕy,δy]TA_i= \left[ \begin{matrix} \frac{\omega_{11}u_i+\omega_{12}v_i+\omega_{13}w_i+\tau_z}{\omega_{31}u_i+\omega_{32}v_i+\omega_{33}w_i+\tau_z} &\frac{\omega_{21}u_i+\omega_{22}v_i+\omega_{23}w_i+\tau_y}{\omega_{31}u_i+\omega_{32}v_i+\omega_{33}w_i+\tau_z} & 1 & 0 & 0\\ 0&0&0&\frac{\omega_{21}u_i+\omega_{22}v_i+\omega_{23}w_i+\tau_y}{\omega_{31}u_i+\omega_{32}v_i+\omega_{33}w_i+\tau_z}&1 \end{matrix} \right]\\ h=[\phi_x,\gamma,\delta_x,\phi_y,\delta_y]^T Ai​=[ω31​ui​+ω32​vi​+ω33​wi​+τz​ω11​ui​+ω12​vi​+ω13​wi​+τz​​0​ω31​ui​+ω32​vi​+ω33​wi​+τz​ω21​ui​+ω22​vi​+ω23​wi​+τy​​0​10​0ω31​ui​+ω32​vi​+ω33​wi​+τz​ω21​ui​+ω22​vi​+ω23​wi​+τy​​​01​]h=[ϕx​,γ,δx​,ϕy​,δy​]T
      最后需要注意的是,这个求解方法实际中应用很少,因为它收敛速度非常慢。实际中一般采用该方法迭代几次,然后直接采用非线性优化方法同时优化内部参数和外部参数。

5 推理三维坐标点

Calibrated stereo reconstruction (Two calibrated cameras)
Multi-view reconstruction (Three or more calibrated cameras)

5.1 问题描述

  已知JJJ个标定好并且已知位姿的相机(也即已知Λj,Ωj,τj\Lambda_j, \Omega_j, \tau_jΛj​,Ωj​,τj​)和场景中某个未知的三维坐标点www在每个相机上的2D投影点坐标{xj}j=1J\{x_j\}_{j=1}^J{xj​}j=1J​,求该3D坐标点的位置:
w^=argmax⁡w[∑j=1Jlog⁡[Pr(xj∣wj,Λj,Ωj,τj)]](26)\widehat{w}={\underset{w}{\operatorname{argmax}}}\Bigg[\sum_{j=1}^J\log[Pr(x_j|w_j,\Lambda_j,\Omega_j,\tau_j)]\Bigg]\tag{26} w=wargmax​[j=1∑J​log[Pr(xj​∣wj​,Λj​,Ωj​,τj​)]](26)

5.2 求解过程

  本问题同样没有封闭解,所以我们需要借助齐次坐标重新表示以求得一个合适的初始解。
  3D齐次坐标点和第jjj个相机中的2D齐次坐标的关系为:
λj[xjyj1]=[ϕxjγjδxj0ϕyjδyj001][ω11jω12jω13jτxjω21jω22jω23jτyjω31jω32jω33jτzj][uvw1](27)\lambda_j \left[ \begin{matrix} x_j\\y_j\\1 \end{matrix} \right]= \left[ \begin{matrix} \phi_{xj}&\gamma_j&\delta_{xj}\\0&\phi_{yj}&\delta_{yj}\\0&0&1 \end{matrix} \right] \left[ \begin{matrix} \omega_{11j}&\omega_{12j}&\omega_{13j}&\tau_{xj}\\\omega_{21j}&\omega_{22j}&\omega_{23j}&\tau_{yj}\\\omega_{31j}&\omega_{32j}&\omega_{33j}&\tau_{zj} \end{matrix} \right]\left[ \begin{matrix} u\\v\\w\\1 \end{matrix} \right]\tag{27} λj​⎣⎡​xj​yj​1​⎦⎤​=⎣⎡​ϕxj​00​γj​ϕyj​0​δxj​δyj​1​⎦⎤​⎣⎡​ω11j​ω21j​ω31j​​ω12j​ω22j​ω32j​​ω13j​ω23j​ω33j​​τxj​τyj​τzj​​⎦⎤​⎣⎢⎢⎡​uvw1​⎦⎥⎥⎤​(27)
  式(27)等号两边同时左乘Λj−1\Lambda_j^{-1}Λj−1​得:
λj[xj′yj′1]=[ω11jω12jω13jτxjω21jω22jω23jτyjω31jω32jω33jτzj][uvw1](28)\lambda_j \left[ \begin{matrix} x_j'\\y_j'\\1 \end{matrix} \right]= \left[ \begin{matrix} \omega_{11j}&\omega_{12j}&\omega_{13j}&\tau_{xj}\\\omega_{21j}&\omega_{22j}&\omega_{23j}&\tau_{yj}\\\omega_{31j}&\omega_{32j}&\omega_{33j}&\tau_{zj} \end{matrix} \right]\left[ \begin{matrix} u\\v\\w\\1 \end{matrix} \right]\tag{28} λj​⎣⎡​xj′​yj′​1​⎦⎤​=⎣⎡​ω11j​ω21j​ω31j​​ω12j​ω22j​ω32j​​ω13j​ω23j​ω33j​​τxj​τyj​τzj​​⎦⎤​⎣⎢⎢⎡​uvw1​⎦⎥⎥⎤​(28)
  消去λj\lambda_jλj​得:
[(ω31u+ω32v+ω33w+τz)xj′(ω31u+ω32v+ω33w+τz)yj′]=[ω11jω12jω13jτxjω21jω22jω23jτyj][uvw1](29)\left[ \begin{matrix} (\omega_{31}u+\omega_{32}v+\omega_{33}w+\tau_z)x_j'\\ (\omega_{31}u+\omega_{32}v+\omega_{33}w+\tau_z)y_j' \end{matrix} \right]= \left[ \begin{matrix} \omega_{11j}&\omega_{12j}&\omega_{13j}&\tau_{xj}\\\omega_{21j}&\omega_{22j}&\omega_{23j}&\tau_{yj} \end{matrix} \right]\left[ \begin{matrix} u\\v\\w\\1 \end{matrix} \right]\tag{29} [(ω31​u+ω32​v+ω33​w+τz​)xj′​(ω31​u+ω32​v+ω33​w+τz​)yj′​​]=[ω11j​ω21j​​ω12j​ω22j​​ω13j​ω23j​​τxj​τyj​​]⎣⎢⎢⎡​uvw1​⎦⎥⎥⎤​(29)
  进一步整合得到:
[ω31jxj′−ω11jω32jxj′−ω12jω33jxj′−ω13jω31jyj′−ω21jω32jyj′−ω22jω33jyj′−ω23j][uvw]=[τxj−τzjxj′τyj−τzjyj′](30)\left[\begin{matrix} \omega_{31j}x_j'-\omega_{11j}&\omega_{32j}x_j'-\omega_{12j}&\omega_{33j}x_j'-\omega_{13j}\\ \omega_{31j}y_j'-\omega_{21j}&\omega_{32j}y_j'-\omega_{22j}&\omega_{33j}y_j'-\omega_{23j} \end{matrix}\right] \left[\begin{matrix} u\\v\\w \end{matrix}\right]= \left[\begin{matrix} \tau_{xj}-\tau_{zj}x_j'\\ \tau_{yj}-\tau_{zj}y_j' \end{matrix}\right]\tag{30} [ω31j​xj′​−ω11j​ω31j​yj′​−ω21j​​ω32j​xj′​−ω12j​ω32j​yj′​−ω22j​​ω33j​xj′​−ω13j​ω33j​yj′​−ω23j​​]⎣⎡​uvw​⎦⎤​=[τxj​−τzj​xj′​τyj​−τzj​yj′​​](30)
  将JJJ个形如式(30)等式整合成一个大的线性方程组,然后按照Least squares problem求解可得到一个合理的初始解,最后进行非线性迭代求解。

5.3 总结

  该算法是三维重建算法的基础,它有以下特征:

  • 该方法要求我们已知与场景中代求3D坐标点对应的JJJ个2D投影点坐标;
  • 该方法要求我们已知所有JJJ个相机的内部参数和外部参数。

针孔相机(The pinhole camera)相关推荐

  1. OpenGL投影矩阵与相机模型(Set Projection Matrix for Pinhole Camera Model)

    出处:http://oliver.zheng.blog.163.com/blog/static/1424115952013349234838/ (转载自"结冰的雪"百度空间) 目的 ...

  2. 3D Viewing: the Pinhole Camera Model(翻译)

    目录 What Will You Learn in this Lesson? Camera Obscura: How is an Image Formed? How Does Real Camera ...

  3. 1. pinhole camera model 小孔相机模型【cs231a课程笔记】

    文章目录 同系列链接 1.1. pinhole camera model 1.2. lens-based model (paraxial refraction model) distortion 1. ...

  4. The Pinhole Camera

    目录 Camera Calibration(相机标定) 3D Depth Estimation Homography(单应性) 上图显示了一个投影中心为 O 且主轴平行于 Z 轴的相机. 图像平面位于 ...

  5. CS231A:Pinhole camera model and lenses

    针孔摄像机 模型 针孔摄像机模型针孔摄像机模型针孔摄像机模型 孔洞OOO和图像plane之间的距离就是焦距fff. i,j,ki,j,ki,j,k是相机的参考系,也叫相机的坐标系. kkk是垂直成像平 ...

  6. Pinhole camera model相机模型

    相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程.相机的成像过程涉及到四个坐标系:世界坐标系.相机坐标系.图像坐标系.像素坐标系以及这四个坐标系的转换. 理想透视模型--针孔成像模型 相机模 ...

  7. 针孔相机投影模型以及畸变模型

    Overview 欢迎访问 持续更新:https://cgabc.xyz/posts/ff73e084/ 世界坐标系 到 像素坐标系 世界坐标系中三维点M=[X,Y,Z]TM=[X,Y,Z]^TM=[ ...

  8. 【多传感融合】优达学城多传感融合学习笔记(一)——针孔相机模型

    针孔相机模型 目录 针孔相机模型 针孔相机成像模型 镜头和光圈 枕形畸变和桶形畸变 图像标定和校准概念 三维坐标系到像素坐标系的转换 图像传感器和拜耳阵列(Bayer Pattern) CCD vs. ...

  9. 从像素坐标到相机坐标_相机标定方法

    在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数.在大多数条件下这些参数(内参.外参.畸 ...

最新文章

  1. 【CLR的执行模型:将源代码编译成托管模块】
  2. 二、HDFS基本架构和shell操作
  3. 聊聊网络安全等级保护“能力验证”:配置核查(Linux系统)
  4. 【算法微解读】浅谈线段树
  5. jasmine里不同it spec之间的测试隔离性
  6. mysql 忘记密码处理方式
  7. python电脑下载了怎么用-利用Python下载:You-Get的安装及使用方法
  8. uml边界类例子_面向对象UML笔记
  9. java获取当月1号 的时间chuo_java获取时间戳的方法
  10. viewpager 获取当前现实的view
  11. 数据库系统概论第五版(王珊)-基础篇(一)
  12. 第一章:网络信息安全概述精讲笔记
  13. PHP 微信公众号消息加解密
  14. UE4 替换文件尝试解决 光照构建失败 Lighting build failed. Swarm failed to kick off
  15. canvas 画图 android,Android 中的Canvas画图
  16. hfish蜜罐搭建及简单使用
  17. PT2264\pt2294(带编码)无线、接收、收发
  18. 1药网发布Q4财报:仍处于持续亏损状态,还要推动子公司上市
  19. 全国计算机考试 mysql_全国计算机等级考试二级MySQL试题及答案
  20. WEB前端 | HTML基础——(5)表格和表单

热门文章

  1. Rust语言——猜数游戏
  2. 05_02_Mybatis||day02_Mybatis第二天||(总结篇,原文很详细)
  3. 健身房管理系统那个好
  4. 扫地机器人哪款好用?
  5. 列[NEW_PWD]长度超出定义
  6. A16Z:熊市里的北极熊
  7. 基于注解方式实现在Tomcat8中实现WebSocket服务器接口的编写
  8. mipsarmaarch64-pwn初探
  9. 防火墙Mangle标记案例--从零开始学RouterOS系列10
  10. Tomcat启动闪退解决