我在 Blender 中有一个校准的(虚拟)相机,可以查看大致平面的物体。我从第一个相机姿势 P0 制作图像并将相机移动到新姿势 P1。所以我有两个视图的 4x4 相机矩阵,我可以从中计算相机之间的转换,如下所示。我也知道内在矩阵 K。使用这些,我想将 P0 图像中的点映射到从 P1 看到的新图像(当然,我有要比较的基本事实,因为我可以在相机完成后在 Blender 中渲染移至 P1)。如果我只在 P0 和 P1 之间旋转相机,我可以完美地计算单应性。但是如果有平移,则计算出的单应矩阵不会考虑到这一点。理论说,在计算出 M10 之后,对于平面场景,应该删除最后一行和最后一列。但是,当我检查 M10 时,我看到翻译值在最右边的列中,我将其删除以获得 3x3 单应矩阵 H10。然后,如果没有旋转,H10 等于单位矩阵。这里出了什么问题?
编辑:我知道这些图像是通过单应性相关的,因为给定来自 P0 和 P1 的两个图像,我可以找到一个单应性(通过特征匹配),它可以完美地将 P0 的图像映射到 P1 的图像,即使存在平移相机运动。