-
参考三维重建公开课前两节课
2022B站最好最全的【三维重建】课程!!!北邮教授竟然把三维重建讲的如此通俗易懂,学不会UPZHIJIE 退网下架!!!-人工智能/计算机视觉/三维重建_哔哩哔哩_bilibili
1. 摄像机几何
1.1. 针孔模型&透镜
1.1.1. 针孔相机
-
早期相机: 小孔成像(添加屏障→减少模糊)

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

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

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

-
摄像机坐标系下, 三维点到平面的关系
$$ 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是透镜到焦点的距离

-
近轴折射模型

-
根据折射定律:
$$ f=\frac{R}{2(n-1)} $$- $R$为透镜球面半在, $n$为透镜折射系数
- 近轴折射模型依旧满足小孔成像的数学模型
- 透镜缺点
-
失焦

-
畸变

-
-
1.2. 摄像机几何
1.2.1. 将像平面转换像素平面的过程
-
真实情况下, 成像获得的是离散的像素, 而不是连续的像平面图形
→ 需要修改小孔成像模型
-
偏置: 需要偏移坐标点的位置(像平面中的原点$C'$转换到像素图坐标上时位置是$[C_x, C_y]$)

-
单位转换: 将单位 $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维表示(一一对应)

-
齐次坐标还原欧式坐标: 将最后一维的值除以前面的每一维的值
-
不一一对应, 下面这两个齐次坐标还原后相同
$$ \begin{bmatrix} 1\\ 1\\ 1\end{bmatrix}\begin{bmatrix} 2\\ 2\\ 2\end{bmatrix} $$

-
-
欧式转齐次公式


1.2.3. 解决相机偏斜问题
-
相机工艺问题造成偏斜, $\theta$角夹角

-
带偏斜补正的转换公式
- K有5个自由度(5个可变参数)

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. 世界坐标系与投影矩阵
-
世界坐标系用于方便的描述三维物体的空间信息

$R$: 旋转矩阵 (3, 3); $T$: 平移矩阵 (3, 1)
$\begin{bmatrix} R&T\\ 0&1\end{bmatrix}$: 转换参数 (4, 4)
最终获得$P_w$: 世界坐标系坐标 (4, 1)
-
整理公式获得完整的相机模型

$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$ 的行
- M是透视投影矩阵的充分必要条件
- $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) $$
所以 $\mathrm{r}(\boldsymbol{A})=3$
-
-
满秩和失秩$m\times n$矩阵的秩最大为: m和n中的较小者, 表示为 $min(m,n)$. 有尽可能大的秩的矩阵被称为有满秩; 否则矩阵是**秩不足(**或称为“欠秩”)的.
-
- M是零倾斜透视投影矩阵的充分必要条件
- $Det(A)\not=0$
- $(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$
- M是零倾斜且宽高比为1透视投影矩阵的充分必要条件
- $Det(A)\not=0$
- $(a_1\times a_3)\cdot(a_2\times a_3)=0$
- $(a_1\times a_3)\cdot(a_1\times a_3)=(a_2\times a_3)\cdot(a_2\times a_3)$
- M是透视投影矩阵的充分必要条件
- 令 $M=(A \ b)$ 为 $3\times 4$ 的矩阵, $a_i^T(i=1,2,3)$ 表示为矩阵 $A$ 的行
1.2.6. 投影变换

1.3. 其他摄像机模型
-
各种相机的作用

1.3.1. 弱透视投影相机
-
$\pi$的场景点全都认为在同一个平面(用于处理距离较远的点)

-
放大率$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. 正交投影相机
-
相机中心到像平面无限远的时候
$$ \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. 线性方程组的最小二乘解
-
线性方程组的解

-
当方程组无解 $(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 $$
-
1.4.2. 齐次线性方程组求最小二乘解
-
齐次线性方程组特点: y=0

- 求解方法:
- 矩阵 $A$ 进行奇异值分解 $A=U D V^T$
- $x^*$ 为 $V$ 矩阵的最后一列 (最小奇异值对应的右奇异向量)
- 求解方法:
1.4.3. 非线性方程组求最小二乘解

2. 相机标定
2.1. 透镜相机标定问题
2.1.1. 概念
-
相机标定: 求解相机内外参数矩阵
-
用途: 通过这些参数描述三维世界到二维像素的映射关系
-
公式:

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.
- 这里有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.$表示限制条件
-
求解方法:
- 矩阵 $P$ 进行奇异值分解 $P=U D V^T$
- $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$ 的最后一列(平移矩阵)
-
去掉 $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$
-
两边取模, 旋转向量都模都为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}$ 的模怎么求?
- 由向量模的公式
-
可以获得 $\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|} $$-
这里可以反向推导出一个结论:
$$ (a_1\times a_3)\cdot(a_2\times a_3)=0 $$也就是 $\theta=90^{\circ}$ , 表示像素是垂直的, 零倾斜
-
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. 总结

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

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$ 是畸变模型
-
$k_p$是畸变因子
-
正号表示桶形畸变; 负号表示枕型畸变.
-
图像放大率随光轴距离的增加而减小

建模径向特性
$$ 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$ 就少了两个未知参数, 使用牛顿法与列文伯格-马夸尔特法收敛会更快.