本文未指明图片来源为 Multiple View Geometry in Computer Vision 。
读 Multiple View Geometry in Computer Vision 所做笔记。
第 9 章 《对极几何与基础矩阵》,Epipolar Geometry and the Fundamental Matrix。
对极几何研究的对象是双视图几何,即两张相邻影像的位姿关系。
基础矩阵可以看做是将点投影(转换)为直线,将左影像上的一个点投影到右影像上形成一条核线。
假设有一空间平面 \(\pi\),将 \(\pi\) 上的点 $ X $ 投影到左右影像上,可以得到这个三维点在两张影像上的像 $ x, x^{\prime} \(,将空间平面上所有的点都进行投影,能够得到左右影像上所有点的对应关系,这种对应关系可以使用单应矩阵(homography matrix, page 87)\) H_{\pi} $ 描述:
\[ x^{\prime} = H_{\pi}x \]
右影像上的核线 $ l^{\prime} $ 可以由两个点——右影像上的核点 $ e^{\prime} $ 与右影像上的任意一点 $ x^{\prime} $ ——确定:
\[ l^{\prime} = e^{\prime} \times x^{\prime} = [e^{\prime}]_{\times}x^{\prime}\]
将 $ x^{\prime} = H_{\pi}x $ 代入:
\[ l^{\prime} = [e^{\prime}]_{\times}H_{\pi}x = Fx \]
这样就得到了基础矩阵的定义:
\[ F = [e^{\prime}]_{\times}H_{\pi}\]
因为 $ x^{\prime} $ 在右核线 $ l^{\prime} $ 上,所以点积为 \(0\) :
\[ {x^{\prime}}^{T}l^{\prime} = {x^{\prime}}^{T}Fx = 0 \]
空间中三维点 $ X $ 反向投影到左影像上得到点 $ x $,这个过程可以用投影矩阵 $ PX = x $ 进行描述。
现在想办法将 $ X $ 用 $ x $ 表示,$ P $ 是一个 4x3 的矩阵,不可逆。使用 $ P $ 的伪逆:$ P^{+} = P^{T}{(PP^{T})}^{-1} $,得
\[ X = P^{+}x \]
对于左影像 $ X $ 是对应一条直线上的所有点,可以使用下面的方程表示这一条直线:
\[ X(\lambda) = P^{+}x + \lambda C \]
现在将这一条直线投影到右影像上,即可得到右影像的核线。投影的方式是在 $ X(\lambda) $ 上找到两个点,将这两点分别投影到右影像上,投影后的两个点确定右影像上的核线。
取 $ \lambda $ 为0,得到直线上的第一个点 $ P^{+}x $ ,取 \(\lambda\) 为 $ \infty $ 得到直线上的第二个点 \(C\) (即左影像的成像中心)。将这个两个点分别投影到右影像上,得到 $ P^{\prime}P^{+}x $ 与 \(P^{\prime}C\) 。$ P^{\prime}C = e^{\prime} $,左影像成像中心在右影像上的成像是核点。这两个点叉乘即可得到右影像上的核线:
\[ l^{\prime} = (P^{\prime}C)\times(P^{\prime}P^{+}x) = [e^{\prime}]_{\times}P^{\prime}P^{+}x = Fx\]
所以 $ F = [e^{\prime}]_{\times}P^{\prime}P^{+} $。
一张截图说明一切:
两张影像上核线的对应关系可以看作是中心投影,投影中心 $ p $ 位于核线上。
求左核线 $ l $ 对应的右核线 $ l^{\prime} $ 是现在左核线上找一点 $ x $ 使用基础矩阵通过 $ l^{\prime} = Fx $ 计算得到。 $ x $ 是任意的,只需要其在 $ l $ 上就行。可以通过做核线 $ l $ 与另一条不经过核点直线的交点计算得到 $ x $ 。假设另外一条直线为 $ k $,那么 $ l $ 与 $ k $ 的交点为 $ [k]_{\times}l $ ,所以右核线的计算方法如下:
\[ l^{\prime} = F[k]_{\times}l \]
直线 $ k $ 选择为 $ e $ 能够简化计算,直线 $ e $ 肯定不会通过核点 $ e $ ($ e^{T} e \neq 0$),所以对应核线的计算公式整理如下:
\[ l^{\prime} = F[e]_{\times}l \]
\[ l = F^{T}[e^{\prime}]_{\times}l^{\prime} \]
在仅有位移的情况下,左右相机的内参也一致,左右相机的投影矩阵可以写成 $ P = K[I | 0], P^{\prime} = K[I | t] $, 由
\[ F=[e^{\prime}]_{\times}K^{\prime}RK^{-1} \]
可以得到
\[ F = [e^{\prime}]_{\times} \]
计算两张影像上影像坐标的对应关系。
$ x= PX = K[I | 0]X $ 左影像的投影关系,现在反求空间点 $ X $ 的坐标,$ (X, Y, Z)^{T} = ZK^{-1}x $,其中 $ Z $ 是标量,表示 $ X $ 的深度。将 $ X $ 的坐标计算结果带入右影像的投影关系 $ x^{\prime} = P^{\prime}X = K[I | t]X $,可以得到 $ x^{\prime} $ 与 $ x $ 的关系:
\[ x^{\prime} = x + Kt/Z \]
当两张影像相对位姿含有旋转与位移时,先将左影像进行旋转,与右影像对齐(具有相同的姿态)。于是将问题简化为上述的位移问题。
将一张影像仅做旋转,相当于将影像进行一次平行投影(投影点在无穷远处),如下图:
这个平行投影可以使用单应矩阵 $ H_{\infty} $ 表示,$ H_{\infty} $ 通过两张影像的投影矩阵计算得到。
\[ x = K^{\prime}[I | 0]X \]
\[ x^{\prime} = K[R | 0]X = KRK^{-1}K[I | 0]X = KRK^{-1}x \]
将上式的 $ x^{\prime} $ 替换 $ x^{\prime} = x + Kt/Z $ 中的 $ x $,即可得到最后的结果:
\[ x^{\prime} = KRK^{-1}x + Kt/Z \]
转载于:https://www.cnblogs.com/JingeTU/p/6390915.html
相关资源:计算机视觉中的多视图几何(中文版)