vision, stereo
Home

Homography

首先简化问题,我们假设有一个相机,其内参矩阵为$K_{3\times 3}$。用它拍了两幅照片,也就是两个view,对应两个相机坐标系,其中一个与世界坐标系重合:

现在考虑在view 1下拍到的图片,看到的某一点P $(u, v)$,$u,v$为像素坐标。那么,$P_{v1}=K^{-1}\begin{bmatrix}u,v,1\end{bmatrix}^T=\begin{bmatrix}x,y,1\end{bmatrix}^T$就表示的是该点在view 1的相机坐标系下的坐标。另外$P_{v1}$的z坐标算出来会是1,也就是说$P_{v1}$落在第一个相机的成像平面上(z=1)。如果要把它转换成齐次坐标下的点,则xyz坐标保持不变,在w坐标上设置为1即可。

因为view 1的相机坐标系和世界坐标系重合,所以$P_{v1}$即为P在世界坐标系下的坐标。

然后我们将该点转换到相机2的坐标系。

我们知道,世界坐标系到相机2的变换矩阵为$\begin{bmatrix}R\mid T\end{bmatrix}_{4\times 4}$

则点P在相机2坐标系下的坐标为 \(\begin{bmatrix}R_{3\times 3}&T_{3\times1}\\0_{1\times3}&1\end{bmatrix}\begin{bmatrix}P_{v1}^T\mid 1\end{bmatrix}^T\)

该计算式和$R\cdot P_{v1}+T$是等价的。

另一方面,我们需要注意到一些东西:

因此实际上,$R\cdot P_{v1}+T=R\cdot P_{v1}-T\cdot \frac{n^T\cdot P_{v1}}{d}$。 虽然点乘没有结合律,但经过笔者验算,此式可成立: \(\begin{align}R\cdot P_{v1}-T\cdot \frac{n^T\cdot P_{v1}}{d}=(R-\frac{T\cdot n^T}{d})_{3\times 3}P_{v1}\notag\end{align}\)

这样,我们就利用平面约束,将原来4x4的$\begin{bmatrix}R\mid T\end{bmatrix}$变换,改写成了3x3的形式。

由此,$\begin{bmatrix}U,V,W\end{bmatrix}^T=K(R-\frac{T\cdot n^T}{d})K^{-1}\begin{bmatrix}u,v,1\end{bmatrix}^T$,$(u,v)=(U/W, V/W)$即为点P在相机2相片上的像素坐标,$K(R-\frac{T\cdot n^T}{d})K^{-1}$即为单应性矩阵。

现在,考虑更复杂一点的情况,即:

这种情况的推导可参照zhuanlan.zhihu.com/p/363830541,最后的结果为:

\[H=KR_2(I-(R_2^TT_2-R_1^TT_1)n_1^TR_1/d)R_1^TK^{-1}\]

其中$n_1$为平面法线在相机1坐标系下的表示。