为什么单应性需要 4 个点,而基本矩阵计算需要 7/8 个点?

信息处理 计算机视觉 立体视觉 单应性
2022-01-09 09:01:05

抱歉,如果这是一个微不足道的问题,但我在其他地方找不到合适的答案。

我最近在 CV 课程中学习了单应矩阵和基本矩阵。我了解这些矩阵是如何计算的以及公式是如何得出的。我也明白单应矩阵和基本矩阵都有 8 个自由度。

但我无法理解为什么我们需要 4 个点对应来找到单应性,而 8 个点来计算基本矩阵。

需要的对应数量不应该直观地相同吗?

2个回答

这是因为在基本矩阵的情况下,每个对应点仅与一个约束相关(即,它将一个点映射到其他图像中的一条线)。因此需要 8 个对应点。

但是在单应性的情况下,每个对应解决了两个约束。因此,只有 4 个对应点就足够了。

考虑自由度的数量和约束的数量。

一方面,矩阵H包含 9 个条目,但仅按比例定义。因此,二维投影变换的总自由度为 8。

另一方面,每个点到点的对应关系考虑两个约束,因为对于第一幅图像中的每个点x_i,第二幅图像中的点的两个自由度必须对应于映射点H*x_i一个 2D 点对(x,y)组件有两个自由度,每个自由度都可以单独指定。

或者,该点被指定为齐次 3 向量,它也有 2 个自由度,因为比例是任意的。因此,有必要指定四个点对应H完全约束。

经验法则

  • 约束的数量必须等于或超过变换的自由度数。

例子

在 2D 中,每个对应点或线在 上生成两个约束H,在 3D 中,每个对应点或平面生成三个约束。

因此,在 2D 中,四个点或四条线的对应关系足以计算H,因为4×2=88 是单应性的自由度数。在 3D 中,单应性有 15 个自由度,需要五个点或五个平面。对于平面仿射变换(6 个自由度),只需要三个对应的点或线,依此类推。