单映性变换
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 |
|
这样,最后一个参数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$的特征向量。
可以参考:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!