单映性变换

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里面有工具可以帮我们计算:

1
2
3
[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$的特征向量。

可以参考: