单映性变换
3D 坐标转换到 2D 坐标
在单应性下,我们可以将 3D 中的点从相机 1 到相机 2 的变换写为:
$ X_2=HX_1 \longrightarrow X_1,X_2 \in R^3 $
在图像平面中,使用齐次坐标,公式如下:
$ λ_1x_1=X_1$
$λ_2x_2=X_2 $
$\therefore λ_2 x_2 = Hλ_1x_1 $
这意味着在一定范围内,X2等于 HX1。X2到 HX1是图像平面中的点之间的直接映射。如果确定这些点都在一副图像(对于通过纯旋转相关的相机,每个场景点可以被认为是躺在无限平面上) 所在的平面中,则可以直接校正图像,而不需要恢复和操纵 3D 坐标。
单映性计算
为了计算 H,我们从等式 x2=Hx1开始,在齐次坐标中我们得到以下约束:
$$
\begin{bmatrix}x_2\\ y_2 \\ z_2 \end{bmatrix}=\begin{bmatrix}H_{11} & H_{12} & H_{13}\\ H_{21} & H_{22} & H_{23}\\ H_{31} & H_{32} & H_{33} \end{bmatrix}=\begin{bmatrix}x_1 \\ y_1 \\ z_1\end{bmatrix}\Leftrightarrow x_2=Hx_1
$$
在齐次坐标中 $(x_2’= x_2/z_2$ 和 $y_2’ = y_2/z_2)$:
$$
\begin{aligned} x_{2}^{\prime} &=\frac{H_{11} x_{1}+H_{12} y_{1}+H_{13} z_{1}}{H_{31} x_{1}+H_{32} y_{1}+H_{33} z_{1}} \ y_{2}^{\prime} &=\frac{H_{21} x_{1}+H_{22} y_{1}+H_{23} z_{1}}{H_{31} x_{1}+H_{32} y_{1}+H_{33} z_{1}} \end{aligned}
$$
为了习惯一般情况,令$z_1=1$并重新排列:
$$
\begin{array}{l}{x_{2}^{\prime}\left(H_{31} x_{1}+H_{32} y_{1}+H_{33}\right)=H_{11} x_{1}+H_{12} y_{1}+H_{13}} \\ {y_{2}^{\prime}\left(H_{31} x_{1}+H_{32} y_{1}+H_{33}\right)=H_{21} x_{1}+H_{22} y_{1}+H_{23}}\end{array}
$$
我们想求解 H.即使这些非齐次方程涉及非线性坐标,但是 H 的系数呈线性。 因此整理上面的方程得到:
$$
\begin{matrix}
a^T_xh = 0\\ a^T_yh = 0
\end{matrix}
$$
其中参数含义:
$$
\begin{matrix}
h=(H_{11},H_{12},H_{13},H_{21},H_{22},H_{23},H_{31},H_{32},H_{33})^T\\ a_x=(-x_1,-y_1,-1,0,0,0,x’_2x_1,x’_2y_1,x’_2)^T \\ a_y = (0,0,0,-x_1,-y_1,-1,y’_2x_1,y’_2y_1,y’_2)^T
\end{matrix}
$$
对这个系数矩阵做奇异值分解,在 matlab 里面有工具可以帮我们计算:
[U,D,V]=svd(A);
h=V(:,end);
H=[h(1) h(2) h(3);h(4) h(5) h(6);h(7) h(8) h(9)];
这样,最后一个参数 V 的最后一列的九个值就组成了 homography matrix。
给定一组对应点,我们可以形成以下线性方程组:
$$ Ah=0 $$
其中参数含义:
$$
A=\begin{pmatrix}
a_{x_1}^T\\
a_{y_1}^T\\
…\\
a_{x_N}^T\\
a_{y_N}^T
\end{pmatrix}
$$
方程 Ah=0 可以用齐次线性最小二乘法来解决,将在接下来的部分进行描述。
齐次线性最小二乘法
我们会经常遇到这样形式的问题:$$Ah=0$$这是典型的齐次线性最小二乘法的问题,它跟非齐次线性最小二乘法
$$ Ah=b $$
在这种情况下,我们使用 A 的伪逆或求解求解 x。但是这不适用于 Ah=0。因此,我们使用奇异值分解(SVD)的方法来解决 Ah=0 的问题。
首先,计算 A 的 SVD:
$$
A=U\sum V^T=\sum _{i=1}^{9}\sigma _iu_iv_i^T
$$
奇异值 $\sigma_i$ 将按降序排序,因此 $\sigma_9$ 将是最小的。
$\sigma_9$ 的值有三种情况:
- 如果单应性是确定的,则$\sigma_9$,并且存在适合该点的单应性。
- 如果单映性是超定的,则$\sigma_9$ ,这里$\sigma_9$表示“残余”或拟合优度。
- 我们不处理单映性未定的情况。
从 SVD 中,我们取对应于最小奇异值的“右奇异向量”(V 的一列)值$\sigma_9$。 解 h 包含最佳拟合点的单应性矩阵的系数。我们将 h 重构成矩阵 H,并形成等式$x_{2}=Hx_{1}$。
齐次线性最小二乘的推导
从 Ah=0 开始,总和平方的误差可以写为:
$$
f(h)=\frac{1}{2}(Ah-0)^T(Ah-0) \\
f(h)=\frac{1}{2}(Ah)^T(Ah) \\
f(h)=\frac{1}{2}h^TA^TAh
$$
取 f 相对于 h 的导数并且将结果设置为零,得到:
$$
\frac{d}{dh}f=0=\frac{1}{2}(A^TA+(A^TA)^T)h \\
0 = A^TAh
$$
观察 $A^T$ A 的特征向量分解,我们看到 h 应该等于特征值为零的 $A^T$A 的特征向量(或者,在存在噪声的情况下,特征值最接近零)。
该结果与使用 SVD 获得的结果相同。这从很容易理解,假设具有 SVD 分解的矩阵 $A=UΣV^T$,V 的列对应于 $A^TA$ 的特征向量。
可以参考:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论