2022-10-10 更新
- 这个公式与经典的 homography 的区别就在于用世界坐标系到两个相机分别的旋转、平移替代掉了两个相机之间的旋转、平移。
原文
ECCV2018 的一篇 oral 论文 MVSNet: Depth Inference for Unstructured Multi-view Stereo 开启了用 深度学习做 MVS 的先河,但是在该篇论文的 3.2 Cost Volume 部分,却有一个关于 homography 的错误公式,令人匪夷所思的是,在它的Github 开源代码 的相关部分,代码却是按照正确的公式来写的。该论文的错误公式影响了后面的许多论文,比如 CVPR 2020的一篇 oral 论文Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching 。本文会推导正确公式,并且解释 MVSNet 论文 Github 开源代码中相关代码为什么表示了正确了公式。


首先,在 图1 公式中有个明显的错误,就是等式最右边的项 K 1 T K_{1}^{T} K1T, 内参矩阵的转置毫无意义,论文中想要表达的是内参矩阵的逆,应该是 K 1 − 1 K_{1}^{-1} K1−1。
为了推导出正确的公式,本文需要做两个准备
准备1 推导出关于两个视图的R, t
首先,对于数据集中的所有视图(image),共用一个公共的世界(大地)坐标系。在准备数据集的时候,每个视图都会做 calibration,都会得到从世界坐标系到每个视图的相机坐标系下需要做的旋转( 3 × 3 3\times3 3×3旋转矩阵)和平移( 3 × 1 3\times1 3×1平移向量)。论文中是多视图,且有对于每个 3d scene,指定第一张 image 为 reference image。在本文中,只需推导两个视图的情况。针对多视图的公式,只需要固定 reference image的视图,另外一个视图更换成其他的视图即可。

设世界坐标系 W W W 任意一点 P P P,则 P P P 首先经过 R 1 , t 1 R_{1},t_{1} R1,t1 到 相机坐标系 C C C 下,然后经过 R , t R,t R,t 到相机坐标系 C ′ C^{'} C′ 下,最后经过 R 2 , t 2 R_{2},t_{2} R2,t2的逆作用又重新回到世界坐标系 W W W 下的点 P P P, 即
[ R 2 t 2 0 1 × 3 1 ] − 1 [ R t 0 1 × 3 1 ] [ R 1 t 1 0 1 × 3 1 ] P = P (1) \begin{bmatrix} R_{2}&t_{2}\\ \bold{0}_{1\times3}&1\\ \end{bmatrix}^{-1} \begin{bmatrix} R&t\\ \bold{0}_{1\times3}&1\\ \end{bmatrix} \begin{bmatrix} R_{1}&t_{1}\\ \bold{0}_{1\times3}&1\\ \end{bmatrix}P=P\tag{1} [R201×3t21]−1[R01×3t1][R101×3t11]P=P(1)
其中 P P P 为 4 × 1 4\times1 4×1 的齐次坐标。由于式(1)对世界坐标系 W W W 下任意的 点都成立, 故
[ R 2 t 2 0 1 × 3 1 ] − 1 [ R t 0 1 × 3 1 ] [ R 1 t 1 0 1 × 3 1 ] = I (2) \begin{bmatrix} R_{2}&t_{2}\\ \bold{0}_{1\times3}&1\\ \end{bmatrix}^{-1} \begin{bmatrix} R&t\\ \bold{0}_{1\times3}&1\\ \end{bmatrix} \begin{bmatrix} R_{1}&t_{1}\\ \bold{0}_{1\times3}&1\\ \end{bmatrix} = I\tag{2} [R201×3t2

本文分析了ECCV2018 MVSNet论文中关于Homography的错误公式,并提供了正确的推导过程。错误公式影响了后续的CVPR2020 CascadeCostVolume论文。作者详细阐述了从世界坐标系到不同相机坐标的转换,以及Homography矩阵的正确构建方式。源代码分析显示,开源实现遵循了正确的公式。
最低0.47元/天 解锁文章
1402





