1. 摄像机几何

1.1. 针孔模型&透镜

1.1.1. 针孔相机

  • 早期相机: 小孔成像(添加屏障→减少模糊)

    Untitled

    • 需要研究的是虚拟像平面

      • 虚拟像平面到针孔的距离等于焦距
      • 虚拟像平面的成像大小等于像平面的成像大小, 方向与原物体相同, 研究方便
    • 缩小光圈可以使成像更清晰, 但是通过的光更少(成像更暗)

      Untitled

    • 为了使成像更亮, 可以增加一个透镜

      Untitled

  • 小孔成像系统建立数学模型

    Untitled

  • 摄像机坐标系下, 三维点到平面的关系

    $$ P=\left[\begin{array}{l}x \\y \\z\end{array}\right] \rightarrow P^{\prime}=\left[\begin{array}{l}x^{\prime} \\y^{\prime}\end{array}\right] \quad\left\{\begin{array}{l}x^{\prime}=f \frac{x}{z} \\y^{\prime}=f \frac{y}{z}\end{array}\right. $$

1.1.2. 透镜

  • 这里的f是透镜到焦点的距离

    Untitled

  • 近轴折射模型

    Untitled

    • 根据折射定律:

      $$ f=\frac{R}{2(n-1)} $$
      • $R$为透镜球面半在, $n$为透镜折射系数
    $$ z^{\prime}=f+z_0 $$$$ \begin{cases}x^{\prime}=z^{\prime} \frac{x}{z} \\ y^{\prime}=z^{\prime} \frac{y}{z}\end{cases} $$
    • 近轴折射模型依旧满足小孔成像的数学模型
    • 透镜缺点
      • 失焦

        Untitled

      • 畸变

        Untitled

1.2. 摄像机几何

1.2.1. 将像平面转换像素平面的过程

  • 真实情况下, 成像获得的是离散的像素, 而不是连续的像平面图形

    → 需要修改小孔成像模型

    1. 偏置: 需要偏移坐标点的位置(像平面中的原点$C'$转换到像素图坐标上时位置是$[C_x, C_y]$)

      Untitled

    2. 单位转换: 将单位 $m$ 转换为像素, 转换常数 $k$ ($x$方向) 和 $l$ ($y$方向) 以相机成像元器件参数为准.

      $$ (x, y, z) \rightarrow \left( \underbrace{f \red{k}}_\alpha\frac{x}{z} +c_x, \underbrace{f \red{l}}_\beta\frac{y}{z} +c_y\right) $$
      • 单位: $k,l:pixel/m; f:m$
      • 非方形像素: $\alpha\beta$: $pixel$
  • 合并一下相机成像元器件的参数

    $$ P=(x, y, z) \rightarrow P^{\prime}=\left(\alpha \frac{x}{z}+c_x, \beta \frac{y}{z}+c_y\right) $$
  • 存在一个问题: $P$(三维空间坐标系的点坐标)$\to P'$(像素平面坐标系的点坐标)的变换不是线性变换, 因为$x$的改变会使$z$也改变(如果将$\frac{\alpha}{z}$理解为直线的斜率的话)

1.2.2. 将像平面转换像素平面的过程变为线性变换(齐次坐标系)

  • 欧式坐标变为齐次坐标: 将原本是n维的坐标向量用n+1维表示(一一对应)

    Untitled

  • 齐次坐标还原欧式坐标: 将最后一维的值除以前面的每一维的值

    • 不一一对应, 下面这两个齐次坐标还原后相同

      $$ \begin{bmatrix} 1\\ 1\\ 1\end{bmatrix}\begin{bmatrix} 2\\ 2\\ 2\end{bmatrix} $$

    Untitled

  • 欧式转齐次公式

    Untitled

    Untitled

1.2.3. 解决相机偏斜问题

  • 相机工艺问题造成偏斜, $\theta$角夹角

    Untitled

  • 带偏斜补正的转换公式

    • K有5个自由度(5个可变参数)
    $$ P'=MP=K\begin{bmatrix}I& 0\end{bmatrix}P $$$$ I = \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\end{bmatrix} $$

    Untitled

1.2.4. 规范化相机

  • 规范化相机在现实世界不存在, 三维点坐标等于齐次坐标的前3维

    $$ P^{\prime}=\left[\begin{array}{l}x \\y \\z\end{array}\right]=\underbrace{\left[\begin{array}{llll}1 & 0 & 0 & 0 \\0 & 1 & 0 & 0 \\0 & 0 & 1 & 0\end{array}\right]}_M\left[\begin{array}{l}x \\y \\z \\1\end{array}\right] $$
    • $P^{\prime}$的欧式坐标为

      $$ \left[\begin{array}{l} \frac{x}{z} \\ \frac{y}{z} \end{array}\right] $$

1.2.5. 世界坐标系与投影矩阵

  • 世界坐标系用于方便的描述三维物体的空间信息

    Untitled

    $R$: 旋转矩阵 (3, 3); $T$: 平移矩阵 (3, 1)

    $\begin{bmatrix} R&T\\ 0&1\end{bmatrix}$: 转换参数 (4, 4)

    最终获得$P_w$: 世界坐标系坐标 (4, 1)

  • 整理公式获得完整的相机模型

    Untitled

    $P'$: 像素平面, $P$: 摄像机坐标下点的坐标, $P_w$: 世界坐标系下$P$点的位置.

  • 投影矩阵有11个自由度(内参5个, 外参 $R$ ( $xyz$ 3个), $T$ ( $xyz$ 3个))

  • 计算像素平面坐标 $P'$

    $$ P^{\prime}=M P_w=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] P_w=\left[\begin{array}{l}m_1 P_w \\m_2 P_w \\m_3 P_w\end{array}\right] \rightarrow\left(\frac{m_1 P_w}{m_3 P_w}, \frac{m_2 P_w}{m_3 P_w}\right) $$$$ M=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] $$
  • 定理 (Faugeras, 1993)

    $$ M=K[R T]=\left[\begin{array}{ll}K R & K T\end{array}\right]=\left[\begin{array}{ll}A & b\end{array}\right] \quad A=\left[\begin{array}{c}a_1^T \\a_2^T \\a_3^T\end{array}\right] $$
    • 令 $M=(A \ b)$ 为 $3\times 4$ 的矩阵, $a_i^T(i=1,2,3)$ 表示为矩阵 $A$ 的行
      1. M是透视投影矩阵的充分必要条件
        1. $Det(A)\not=0$ (A是满秩矩阵)
        • 关于秩
          • 秩的概念: 在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目。类似地,行秩是A的线性无关的横行的极大数目。

          • 计算秩的例子:

            根据这个定理,我们得到利用初等变换求矩阵的秩的方法: 用初等行变换把矩阵变成行阶梯形矩阵, 行阶梯形矩阵中非零行的行数就是该矩阵的秩.

            • eg: 求矩阵 $A$ 的秩.

              $$ A=\left(\begin{array}{rrrr}1 & 0 & 0 & 1 \\ 1 & 2 & 0 & -1 \\ 3 & -1 & 0 & 4 \\ 1 & 4 & 5 & 1\end{array}\right) $$

              Untitled

              所以 $\mathrm{r}(\boldsymbol{A})=3$

          • 满秩和失秩$m\times n$矩阵的秩最大为: m和n中的较小者, 表示为 $min(m,n)$. 有尽可能大的秩的矩阵被称为有满秩; 否则矩阵是**秩不足(**或称为“欠秩”)的.

      2. M是零倾斜透视投影矩阵的充分必要条件
        1. $Det(A)\not=0$
        2. $(a_1\times a_3)\cdot(a_2\times a_3)=0$ ($\theta=90^{\circ}$ )
        • 关于矩阵乘法
          • 叉乘的概念: $a\times b = c$, 则$c$垂直于$ab$向量的平面
          • 点乘的概念: 如果$a\cdot b=0$, 则$a$垂直于$b$
      3. M是零倾斜且宽高比为1透视投影矩阵的充分必要条件
        1. $Det(A)\not=0$
        2. $(a_1\times a_3)\cdot(a_2\times a_3)=0$
        3. $(a_1\times a_3)\cdot(a_1\times a_3)=(a_2\times a_3)\cdot(a_2\times a_3)$

1.2.6. 投影变换

Untitled

1.3. 其他摄像机模型

  • 各种相机的作用

    Untitled

1.3.1. 弱透视投影相机

  • $\pi$的场景点全都认为在同一个平面(用于处理距离较远的点)

    Untitled

    • 放大率$m$

      $$ \left\{\begin{array} { l } { x ^ { \prime } = \frac { f ^ { \prime } } { z } x } \\{ y ^ { \prime } = \frac { f ^ { \prime } } { z } y }\end{array} \rightarrow \left\{\begin{array}{l}x^{\prime}=\frac{f^{\prime}}{z_0} x \\y^{\prime}=\frac{f^{\prime}}{z_0} y\end{array}\right.\right. $$
  • 上: 原本的透视关系; 下: 弱透视投影相机的透视关系

    • 透视(世界坐标系下$P_w$点是齐次坐标, 要转换为非齐次)

      $$ \begin{aligned}P^{\prime}= & M P_w=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] P_w=\left[\begin{array}{l}m_1 P_w \\m_2 P_w \\m_3 P_w\end{array}\right] \quad M=\left[\begin{array}{ll}A & b \\v & 1\end{array}\right]=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] \\& \stackrel{\mathbf{E}}{\rightarrow}\left(\frac{m_1 P_w}{m_3 P_w}, \frac{m_2 P_w}{m_3 P_w}\right)\end{aligned} $$
      • $m_i$: 1x4矩阵; $P_w$: 4x1矩阵

      • 投影矩阵

        $$ M=K[R T]=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] $$
        • $K$: 3x3; $R$: 3x3; $T$: 3x1→$[R\ T]$: 3x4
    • 弱透视

      $$ \begin{aligned} P^{\prime}&=M P_w=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] P_w=\left[\begin{array}{c}m_1 P_w \\m_2 P_w \\1\end{array}\right] & M=\left[\begin{array}{ll}A & b \\0 & 1\end{array}\right] = \left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right] \\& \stackrel{\mathbf{E}}{\rightarrow}\underbrace{\left(m_1 P_w, m_2 P_w\right)}_{m_1m_2是放大率} \\ &&=\left[\begin{array}{cccc} m_1 \\ m_2 \\ 0 \quad 0 \quad 0 \quad 1\end{array}\right]\end{aligned} $$
    • $m_1m_2m_3$都是(1, 4), 所以使用弱透视投影模型可以少4个参数, 于是可以加快计算

1.3.2. 正交投影相机

  • 相机中心到像平面无限远的时候

    Untitled

    $$ \left\{\begin{array} { l } { \mathrm { x } ^ { \prime } = \frac { f ^ { \prime } } { z } x } \\{ y ^ { \prime } = \frac { f ^ { \prime } } { z } y }\end{array} \rightarrow \left\{\begin{array}{l}x^{\prime}=x \\y^{\prime}=y\end{array}\right.\right. $$

1.4. 线性方程组的最小二乘解

1.4.1. 线性方程组的最小二乘解

  • 线性方程组的解

    Untitled

  • 当方程组无解 $(p>q)$ 的时候, 需要找最小二乘解

    $$ E(x) \stackrel{\text { def }}{=} \sum_{i=1}^p\left(a_{i 1} x_1+a_{i 2} x_2+\cdots a_{i q} x_q-y_i\right)^2=\|\boldsymbol{A} \boldsymbol{x}-\boldsymbol{y}\|^2 $$
    • 线性方程组的最小二乘解

      $$ \boldsymbol{x}^*=\underset{\boldsymbol{x}}{\operatorname{argmin}}\|\boldsymbol{A} \boldsymbol{x}-\boldsymbol{y}\|^2 $$

      Untitled

1.4.2. 齐次线性方程组求最小二乘解

  • 齐次线性方程组特点: y=0

    Untitled

    • 求解方法:
      1. 矩阵 $A$ 进行奇异值分解 $A=U D V^T$
      2. $x^*$ 为 $V$ 矩阵的最后一列 (最小奇异值对应的右奇异向量)

1.4.3. 非线性方程组求最小二乘解

Untitled

2. 相机标定

2.1. 透镜相机标定问题

2.1.1. 概念

  • 相机标定: 求解相机内外参数矩阵

  • 用途: 通过这些参数描述三维世界到二维像素的映射关系

  • 公式:

    Untitled

2.1.2. 求解相机内外参矩阵$M$

相机的内外参构成了投影矩阵. 而投影矩阵有11个未知量组成.

  • 由1.3.1透视公式推导得出像素点公式

    $$ p_i=\left[\begin{array}{l}u_i \\v_i\end{array}\right]=\left[\begin{array}{l}\frac{m_1 P_i}{m_3 P_i} \\\frac{m_2 P_i}{m_3 P_i}\end{array}\right] $$$$ \begin{aligned}& u_i=\frac{m_1 P_i}{m_3 P_i} \quad \rightarrow \quad u_i\left(m_3 P_i\right)=m_1 P_i \quad \rightarrow \quad m_1 P_i-u_i\left(m_3 P_i\right)=0 \\& v_i=\frac{m_2 P_i}{m_3 P_i} \quad \rightarrow \quad v_i\left(m_3 P_i\right)=m_2 P_i \quad \rightarrow \quad m_2 P_i-v_i\left(m_3 P_i\right)=0\end{aligned} $$
    • 由于一个点可以获得两个方程, 所以做内参外参标定的时候有11个未知量, 需要至少6个点.
  • 当获取了超过6个点的像素坐标信息之后, 就可以应用超定齐次线性方程组(p>q → 方程组的数量大于线性方程的未知参数的数量)求最小二乘解

  • 所有方程组合可得:

    $$ \left\{\begin{array}{c}-u_1\left(m_3 P_1\right)+m_1 P_1=0 \\-v_1\left(m_3 P_1\right)+m_2 P_1=0 \\\vdots \\-u_n\left(m_3 P_n\right)+m_1 P_n=0 \\-v_n\left(m_3 P_n\right)+m_2 P_n=0\end{array}\right. $$

    简化得

    $$ Pm=0 $$

    详细拆分, 由于最终$Pm$矩阵相乘之后是一个实数, 实数转置等于本身, 所以可以加转置符号.

    另外, $P$ 中的$P_n$是三维坐标, $u_n,v_n$ 是二维坐标, 都是已知的, 所以 $P$ 是线性变换.

    $$ P \stackrel{\text { def }}{=}\left(\begin{array}{ccc}P_1^T & 0^T & -u_1 P_1^T \\0^T & P_1^T & -v_1 P_1^T \\& \vdots & \\P_n^T & 0^T & -u_n P_n^T \\0^T & P_n^T & -v_n P_n^T\end{array}\right)_{2 n \times 12} $$
    • 这里有12列是因为: $P_n^T$的尺寸是1x4.
    $$ m \stackrel{\text { def }}{=}\left(\begin{array}{c}\mathrm{m}_1^T \\\mathrm{~m}_2^T \\\mathrm{~m}_3^T\end{array}\right)_{12 \times 1} $$
    • 这里有12行是因为: $m_i^T$的尺寸是4x1.
  • 求 $Pm=0$ 的最小二乘解, 最终要获得的11个未知参数都在矩阵 $m$ 里面

    $$ \begin{aligned}& \min _{\boldsymbol{m}}\|\boldsymbol{P} \boldsymbol{m}\| \\& \text { s.t. }\|\boldsymbol{m}\|=1\end{aligned} $$
    • $s.t.$表示限制条件

    • 求解方法:

      1. 矩阵 $P$ 进行奇异值分解 $P=U D V^T$
      2. $x^*$ 为 $V$ 矩阵的最后一列 (最小奇异值对应的右奇异向量)
    • 于是 $P \rightarrow U_{2 n \times 12} D_{12 \times 12} V_{12 \times 12}^T$

      结论: $m$ 为 $P$ 矩阵最小奇异值的右奇异向量, 且 $\|m\|=1$

      $$ \boldsymbol{m} \stackrel{\text { def }}{=}\left(\begin{array}{l}m_1^T \\m_2^T \\m_3^T\end{array}\right) \Longrightarrow M=\left[\begin{array}{l}m_1 \\m_2 \\m_3\end{array}\right]=\left[\begin{array}{ll}A & b\end{array}\right] $$
      • 由于 $m$ 的尺寸: 12x1, 变换成矩阵 $M$ (3x4), 就获得了相机的内外参矩阵$M$.
  • 另外, 还需要求一个矩阵系数$\rho$

    • 先看矩阵投影公式

      $$ \boldsymbol{p}^{\prime}=M P=K[R T] P  $$
    • 内参矩阵

      $$ \begin{aligned} & K=\left[\begin{array}{ccc} \alpha & -\alpha \cot \theta & u_0 \\ 0 & \frac{\beta}{\sin \theta} & v_0 \\ 0 & 0 & 1 \end{array}\right] \\ & \end{aligned} $$
    • 外参矩阵

      $$ R=\left[\begin{array}{l}r_1^T \\r_2^T \\r_3^T\end{array}\right] T=\left[\begin{array}{l}t_x \\t_y \\t_z\end{array}\right] $$
      • 其中, $r_i^T$ 是单位向量, 表示旋转角度, 其中两两点乘为0, 两两叉乘得到第三个向量. 因为这3个向量互相垂直.
    • 合并获得$\rho M$的公式

      $$ \rho \mathrm{M}=\left(\begin{array}{cc}\alpha r_1^T-\alpha \cot \theta r_2^T+u_0 r_3^T & \alpha t_x-\alpha \cot \theta t_y+u_0 t_z \\\frac{\beta}{\sin \theta} r_2^T+v_0 r_3^T & \frac{\beta}{\sin \theta} t_y+v_0 t_z \\r_3^T & t_z\end{array}\right) $$
    • $\rho$ 为一个比例系数, 表示 $M$ 与真实相机之间的关系.

2.1.3. 获得相机内参 $\rho,u_0,v_0$

  • 可以将$M$先分解

    $$ \rho[A\quad b]=K[R\quad T] $$
    • $A$ 是 $M$ 的前3个元素(旋转矩阵), $b$ 是 $M$ 的最后一列(平移矩阵)
    $$ A=\left[\begin{array}{l}a_1{ }^T \\a_2{ }^T \\a_3{ }^T\end{array}\right] \quad \mathbf{b}=\left[\begin{array}{l}b_1 \\b_2 \\b_3\end{array}\right] $$
  • 去掉 $b$

    $$ \rho A=\rho\left(\begin{array}{c}a_1^T \\a_2^T \\a_3^T\end{array}\right)=\left(\begin{array}{c}\alpha r_1^T-\alpha \cot \theta r_2^T+u_0 r_3^T \\\frac{\beta}{\sin \theta} r_2^T+v_0 r_3^T \\r_3^T\end{array}\right)=K R \quad\quad \text{(213a)} $$
  • 看第3行, $\rho a_3^T=r_3^T$, 两边都取模. 由于旋转向量模为1. 由于$\rho$ 是系数, 脱离模之后无法知道正负, 所以

    $$ \rho=\frac{ \pm 1}{\left|a_3\right|} \quad\quad \text{(213b)} $$
  • 由于旋转向量的原理, 各旋转向量互相垂直, 所以 $r_1\cdot r_3=0$; $r_2\cdot r_3=0$; $r_3\cdot r_3=1$. 由公式 $213a$ 的第1行点乘第3行可得

    $$ \rho a_1^T \cdot \rho a_3^T=(\alpha r_1^T-\alpha \cot \theta r_2^T+u_0 r_3^T) \cdot r_3^T=u_0 $$$$ u_0=\rho^2 (a_1\cdot a_3) \quad\quad \text{(213c)} $$
  • 同理

    $$ v_0=\rho^2(a_2\cdot a_3) \quad\quad \text{(213d)} $$
  • 由于这里的 $a_1,a_2,a_3$ 都是已知的(因为 $M$ 已知), 所以由公式 $213b, 213c, 213d$ 可以获得相机的内参 $\rho,u_0,v_0$.

2.1.4. 获得相机内参 $\theta$

  • 对于公式 $213a$ 使用叉乘
  • 各旋转向量互相垂直, 所以 $r_1\times r_3=r_2$; $r_2\times r_3=r_1$; $r_3\times r_3=0$
$$ \left\{\begin{array}{c}\rho^2\left(a_1 \times a_3\right)&=&\alpha r_2-\alpha \cot \theta r_1 \\ \rho^2\left(a_2 \times a_3\right)&=&\frac{\beta}{\sin \theta} r_1\end{array}\right. \quad\quad \text{(214e)} $$
  • 两边取模, 旋转向量都模都为1

    $$ \left\{\begin{array}{l}\rho^2\left|a_1 \times a_3\right|=\frac{|\alpha|}{\sin \theta} \\\rho^2\left|a_2 \times a_3\right|=\frac{|\beta|}{\sin \theta}\end{array}\right. \quad\quad \text{(214f)} $$
  • $\alpha r_{2}-\alpha \cot \theta r_{1}$ 的模怎么求?

    • 由向量模的公式
    $$ |\vec{a} |=\sqrt{\vec{a}^T\cdot \vec{a}} $$
    • 可以获得 $\alpha r_{2}-\alpha \cot \theta r_{1}$ 的模

      $$ \begin{array}{l}\left(\alpha r_{2}-\alpha \cot \theta r_{1}\right)^{T} \cdot\left(\alpha r_{2}-\alpha \cot \theta r_{1}\right)=\alpha^{2}+(\alpha \cot \theta)^{2} \\=\alpha^{2}\left(1+\left(\frac{\cos \theta}{\sin \theta}\right)^{2}\right)=\left(\frac{\alpha}{\sin \theta}\right)^{2}\end{array} $$
  • 公式 $214e$ 相互点乘可得

    $$ \begin{aligned} \rho^2\left(a_1 \times a_3\right) \cdot \rho^2\left(a_2 \times a_3\right)=&\alpha r_2 \cdot \frac{\beta}{\sin \theta} r_1-\alpha \cot \theta r_1 \cdot \frac{\beta}{\sin \theta} r_1 \\ =&0-\frac{\alpha \beta \cdot \cos \theta}{\sin ^2 \theta}\end{aligned} \quad\quad \text{(214g)} $$
  • 公式 $214f$ 相互点乘可得

    $$ \rho^2\left|a_1 \times a_3\right| \cdot \rho^2\left|a_2 \times a_3\right|=\frac{\alpha \beta}{\sin ^2 \theta} \quad\quad \text{(214h)} $$
  • 公式 $214g,214h$相除可得

    $$ \cos \theta=-\frac{\left(a_1 \times a_3\right) \cdot\left(a_2 \times a_3\right)}{\left|a_1 \times a_3\right|\left|a_2 \times a_3\right|}  $$

2.1.5. 获得相机内参 $\alpha,\beta$

  • 由公式 $214f$ 可得

    $$ \begin{aligned}\alpha & =\rho^{2}\left|a_{1} \times a_{3}\right| \sin \theta \\\beta & =\rho^{2}\left|a_{2} \times a_{3}\right| \sin \theta\end{aligned} $$
    • 如果 $\alpha=\beta$, 那么

      $$ |a_1\times a_3|=|a_2\times a_3| $$
      • 由向量性质: 向量模的平方等于向量的平方.

        $$ b^2=b\cdot b=|b|\cdot |b|\cos0^{\circ}=|b|² $$

        可得:

        $$ (a_1\times a_3)\cdot(a_1\times a_3)=(a_2\times a_3)\cdot(a_2\times a_3) $$

2.1.6. 获得相机外参 $r_1,r_2,r_3(R)$

  • $r_1$ 可以由公式 $214e, 214f$ 的第2行相除获得

    $$ r_1=\frac{(a_2\times a_3)}{|a_2 \times a_3|} $$
  • $r_3$ 可以由公式 $214a$ 的第3行和 $214b$ 获得

    $$ r_3=\rho a_3=\pm \frac{a_3}{|a_3|} $$
  • $r_2$

    $$ r_2=r_1\times r_3 $$

2.1.7. 获得相机外参 $T$

  • 还是先分解 $M$矩阵

    $$ \rho[A\quad b]=K[R\quad T] $$
  • 这次去掉旋转矩阵

    $$ \rho b=KT $$
  • 两边同乘$K^{-1}$

    $$ T=\rho K^{-1}b $$
  • 由于 $b$ 可以直接从 $M$ 中获得; $K$ 是内参矩阵已知; $\rho$ 也已知. 平移矩阵就算出来了.

2.1.8. 总结

Untitled

2.2. 径向畸变相机标定

径向畸变: 图像像素点以畸变中心为中心点, 沿着径向产生的位置偏差, 从而导致图像中所成的像发生形变.

Untitled

2.2.1. 畸变相机模型

$$ \overbrace{\red{\left[\begin{array}{ccc}\frac{1}{\lambda} & 0 & 0 \\\bar{\lambda} & \frac{1}{\lambda} & 0 \\0 & 0 & 1\end{array}\right]}}^{S_\lambda(失真系数)} M P_i \rightarrow\left[\begin{array}{l}u_i \\v_i\end{array}\right]=p_i \quad\quad \text{(22a)} $$
  • $\lambda$ 是畸变模型
$$ \lambda=\underbrace{1 \pm \sum_{p=1}^3 \red{k_p} d^{2 p}}_{\text {多项式函数 }} $$
  • $k_p$是畸变因子

  • 正号表示桶形畸变; 负号表示枕型畸变.

  • 图像放大率随光轴距离的增加而减小

    Untitled

    建模径向特性

    $$ d^2=u^2+v^2 $$

2.2.2. 求解失真系数

$$ \red{\overbrace{\left[\begin{array}{ccc}\frac{1}{\lambda} & 0 & 0 \\\bar{\lambda} & \frac{1}{\lambda} & 0 \\0 & 0 & 1\end{array}\right]}^{Q} M} P_i \rightarrow\left[\begin{array}{l}u_i \\v_i\end{array}\right]=p_i $$$$ Q=\left[\begin{array}{l}q_1 \\q_2 \\q_3\end{array}\right] $$$$ p_i=\left[\begin{array}{l}u_i \\v_i\end{array}\right]=\left[\begin{array}{l}\frac{q_1 p_i}{q_3 p_i} \\\frac{q_2 p_i}{q_3 p_i}\end{array}\right] \quad\quad \text{(222a)} $$
  • 获得方程组, 但这不是线性方程组. 因为 $q$ 包含了 $\lambda$, $\lambda$ 随着坐标变化在变化.

    $$ \left\{\begin{array}{l}u_i q_3 P_i=q_1 P_i \\v_i q_3 P_i=q_2 P_i\end{array}\right. $$$$ \left\{\begin{array}{l}u_i q_3 P_i-q_1 P_i=0 \\v_i q_3 P_i-q_2 P_i=0\end{array}\right. $$$$ \left\{\begin{array}{l}f_1(k_1, k_2, k_3, \boldsymbol{m}_1, \boldsymbol{m}_{\mathbf{2}}, \boldsymbol{m}_{\mathbf{3}})=0 \\f_2(\underbrace{k_1, k_2, k_3}_{畸变因子} , \underbrace{\boldsymbol{m}_1, \boldsymbol{m}_{\mathbf{2}}, \boldsymbol{m}_3}_{投影矩阵})=0\end{array}\right. $$
  • 增加采样点

    $$ \left\{\begin{array}{c}f_1\left(k_1, k_2, k_3, \boldsymbol{m}_1, \boldsymbol{m}_2, \boldsymbol{m}_{\mathbf{3}}\right)=0 \\f_2\left(k_1, k_2, k_3, \boldsymbol{m}_1, \boldsymbol{m}_{\mathbf{2}}, \boldsymbol{m}_{\mathbf{3}}\right)=0 \\\vdots \\f_{2 n}\left(k_1, k_2, k_3, \boldsymbol{m}_1, \boldsymbol{m}_2, \boldsymbol{m}_{\mathbf{3}}\right)=0\end{array}\right. $$
  • 最小二乘解

    $$ \begin{aligned}& \text { 令 } \boldsymbol{x}^{\boldsymbol{T}}=\left(k_1, k_2, k_3, \boldsymbol{m}_1, \boldsymbol{m}_2, \boldsymbol{m}_{\mathbf{3}}\right) \\& \boldsymbol{x}^*=\arg \min _{\boldsymbol{x}}\|\boldsymbol{f}(\boldsymbol{x})\|^2\end{aligned} $$
  • 牛顿法与列文伯格-马夸尔特法 (L-M方法)

    • 从初始解开始迭代,若初始解与实际相距较远,可能会很慢
    • 估计解可能是初始解的函数 (由于局部最小值)
    • 牛顿法需要计算一阶导矩阵J (雅可比矩阵) ,二阶导矩阵 H (海塞矩阵)
    • L-M算法不用计算H

2.2.3. 求解线性部分

  • 由公式 $222a$ 可得

    $$ p_i=\left[\begin{array}{l}u_i \\v_i\end{array}\right]=\frac{1}{\lambda}\left[\begin{array}{l}\frac{m_1p_i}{m_3p_i} \\ \frac{m_2p_i}{m_3p_i}\end{array}\right]=\left[\begin{array}{l}\frac{1}{\lambda}\frac{m_1p_i}{m_3p_i} \\ \frac{1}{\lambda}\frac{m_2p_i}{m_3p_i}\end{array}\right] $$$$ \frac{u_{i}}{v_{i}}=\frac{\frac{1}{\lambda} \frac{\left(m_{1} P_{i}\right)}{\left(m_{3} p_{i}\right)}}{\frac{1}{\lambda} \frac{\left(m_{2} p_{i}\right)}{\left(m_{3} p_{i}\right)}}=\frac{m_{1} p_{i}}{m_{2} p_{i}} $$$$ \left\{\begin{array}{c}v_{1}\left(m_{1} P_{1}\right)-u_{1}\left(m_{2} P_{1}\right)=0 \\v_{i}\left(m_{1} P_{i}\right)-u_{i}\left(m_{2} P_{i}\right)=0 \\\vdots \\v_{n}\left(m_{1} P_{n}\right)-u_{n}\left(m_{2} P_{n}\right)=0\end{array}\right. $$
    • 简化可得

      $$ Ln=0 $$$$ L \stackrel{\text { def }}{=}\left(\begin{array}{cc}v_1 P_1^T & -u_1 P_1^T \\v_2 P_2^T & -u_2 P_2^T \\\vdots & \vdots \\v_n P_n^T & -u_n P_n^T\end{array}\right) $$
  • 就可以使用多个点通过奇异值分解(SVD)求得$m_1,m_2$

    $$ n=\left[\begin{array}{l}m_1^T\\m_2^T\end{array}\right] $$
  • 之后再计算公式 $222a$ 就少了两个未知参数, 使用牛顿法与列文伯格-马夸尔特法收敛会更快.