抱歉,如果这是一个微不足道的问题,但我在其他地方找不到合适的答案。
我最近在 CV 课程中学习了单应矩阵和基本矩阵。我了解这些矩阵是如何计算的以及公式是如何得出的。我也明白单应矩阵和基本矩阵都有 8 个自由度。
但我无法理解为什么我们需要 4 个点对应来找到单应性,而 8 个点来计算基本矩阵。
需要的对应数量不应该直观地相同吗?
抱歉,如果这是一个微不足道的问题,但我在其他地方找不到合适的答案。
我最近在 CV 课程中学习了单应矩阵和基本矩阵。我了解这些矩阵是如何计算的以及公式是如何得出的。我也明白单应矩阵和基本矩阵都有 8 个自由度。
但我无法理解为什么我们需要 4 个点对应来找到单应性,而 8 个点来计算基本矩阵。
需要的对应数量不应该直观地相同吗?
这是因为在基本矩阵的情况下,每个对应点仅与一个约束相关(即,它将一个点映射到其他图像中的一条线)。因此需要 8 个对应点。
但是在单应性的情况下,每个对应解决了两个约束。因此,只有 4 个对应点就足够了。
考虑自由度的数量和约束的数量。
一方面,矩阵H
包含 9 个条目,但仅按比例定义。因此,二维投影变换的总自由度为 8。
另一方面,每个点到点的对应关系考虑两个约束,因为对于第一幅图像中的每个点x_i
,第二幅图像中的点的两个自由度必须对应于映射点H*x_i
。一个 2D 点对(x,y)
组件有两个自由度,每个自由度都可以单独指定。
或者,该点被指定为齐次 3 向量,它也有 2 个自由度,因为比例是任意的。因此,有必要指定四个点对应以H
完全约束。
在 2D 中,每个对应点或线在 上生成两个约束H
,在 3D 中,每个对应点或平面生成三个约束。
因此,在 2D 中,四个点或四条线的对应关系足以计算H
,因为4×2=8
8 是单应性的自由度数。在 3D 中,单应性有 15 个自由度,需要五个点或五个平面。对于平面仿射变换(6 个自由度),只需要三个对应的点或线,依此类推。