Homography Matrix(单应矩阵)简介
Homography Matrix(单应矩阵)简介
在之前的一篇博客ETH-UCY数据集里,提到H矩阵(homography matrix)的概念。该矩阵可以用于两个平面之间的映射。属于投影(projective group)变换。
因为本人水平有限难免有疏漏,欢迎大家批评指正。
Homogeneous Coordinates
在Homogeneous坐标体系下,一个二维坐标 [ x / w y / w ] \begin{bmatrix} x/w \\ y/w \end{bmatrix} [x/wy/w]可以被表示为一个三维的形式 [ x y w ] \begin{bmatrix} x \\ y \\w\end{bmatrix} xyw 。这边的举例使用的是二维坐标,但任意维都可以构建对应的homogeneous坐标系。
举个例子,二维坐标 [ 2 3 ] \begin{bmatrix} 2 \\ 3 \end{bmatrix} [23] 可以表示为 [ 2 3 1 ] \begin{bmatrix} 2 \\ 3 \\1 \end{bmatrix} 231 ,也可以被表示为 [ 4 6 2 ] \begin{bmatrix} 4 \\ 6\\2 \end{bmatrix} 462 。这两种三维表示在homogeneous坐标系下是一样的,可以理解为在它们处在由三维坐标系原点发出的同一条直线上。
homogeneous坐标系的作用此处就不详谈了。就提一点,使用该坐标系,可以用矩阵乘法的形式实现二维坐标的平移,而仅仅使用二维坐标系是无法通过矩阵乘法完成坐标平移的。而对于旋转,旋转在二维坐标系下可以通过矩阵乘法实现,在homogeneous坐标系下也可以。因此总结为一句话,通过homogeneous坐标系,我们可以完全通过矩阵的乘法,完成二维坐标的平移和旋转。
Homography
单应矩阵(homography matrix)之后就简称H矩阵。
上图是从课堂笔记扒的。H矩阵就可以完成左到右或者右到左的变换。任何同一平面的两张照片都可以使用H矩阵联系起来。
数学推导
那么我们要怎么求解H矩阵呢?本部分就是H矩阵的数学推导过程。
假设我们得到了一组对应点 x = ( x , y ) , x ′ = ( x ′ , y ′ ) \mathbf{x}=(x,y), \mathbf{x'}=(x', y') x=(x,y),x′=(x′,y′)。可以理解为是同一个点在两张照片上的像素坐标,用H矩阵联系起来
x ′ = H x \mathbf{x'} = \mathbf{H}\mathbf{x} x′=Hx
即
[ x ′ y ′ 1 ] = [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] [ x y 1 ] \begin{bmatrix}x'\\y'\\1 \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\\y\\1\end{bmatrix}
x′y′1
=