Homography --- 图片与图片间的点对应(DLT)
上一部分我们讲了3d与2d坐标系中点与点的对应关系,那对于两张2d图片之间的点,我们又应该怎么建立关系呢?
答案就是Homography了。
Homography
Homography,译成中文叫“单应性“。这里贴上wiki pedia供大家阅读。
以我个人来说,homography指的是一个视平面到另一个视平面上物体的投影,我们暂且理解为变换观察一个物体的角度。
一个在homography coordinate中的点P
对于这样一个投影过程(homography)来说,对应点和它的投影点(homogeneous point)之间的转换是可逆的,所以才可以运用到两张图片之间的点对应。
假定两张图片上对应的一对点
上一篇文章中,我们把相机矩阵(camera matrix)表示为
其中
可能有人要问了,这个公式和上一篇文章里的不一样啊,其实这里进行了代换,代入上一篇文章中A,B坐标系变换矩阵(translformation matrix)公式可以得到这个结果。
如果能够在世界坐标系中建立这个等式是最理想的:
或:
或:
其中
When is homography the same over point matching?
前面讲过,homography是有局限的。那什么情况下两张图片的点可以用homography联系起来呢?
一共有两种情况,一个是视平面仅进行了旋转(rotation only),另一个是只在同一平面内移动(planar object/surface)。
这两种情况下,对应点的关系可用以下公式表示:
1. Rotation Only
如果两个图片仅仅只是发生了旋转,那么就可以使用homograph了。原因是,这种情况下变换矩阵的第四列值全为0,所以原本3*4的矩阵可以转化成3*3的了。
这一部分没看懂,待补充。
2. Planar Object/Surface
如果在世界坐标系,其中z坐标轴与平面的表面法线对齐,所以变换矩阵的第三列值全为0,所以矩阵也变成了3*3的。
同没看懂,待补充。
如何得到矩阵H ?
让我们回到之前的等式:
变换得到:
以及
两边相乘得到:
假设我们有N个对应的点对,所以可以得到一系列的等式:
q是矩阵
之后便需要使用SVD分解法来求解了。
这种方法被称为DLT—直接线性转换(Direct Linear Transformation-DLT)算法。
Note that DLT is not really used by itself in practice. Instead a robust estimator such as RANSAC is used to improve accuracy.