我目前正在从 ios 设备上的相机中提取帧。从这些帧中,我使用 ORB 来查找关键点及其描述符。然后我使用 BFMatcher 来查找图像上关键点之间的匹配。
从这里我希望计算从相机到这些点的距离。我使用的所有点都是平面的(现在我使用墙上的别针进行测试)。在这个阶段没有必要考虑非平面表面,所以这应该很容易。
我目前有:
- 关键点
- 关键点描述符
- 关键点之间的匹配
- 基本矩阵
- 基本矩阵
- 两个摄像头的投影矩阵(虽然我不确定如何测试第二个摄像头是否正确)
我想我必须以某种形式使用三角测量,但不确定它是如何工作的。我知道我必须将来自每个相机的光线(由相机投影矩阵定义?)通过每个关键点并找到它们相交的点(或最接近相交的点)。正如我在 3D 空间中假设的那样,每条射线相交的可能性极小。此外,我的关键点匹配通常非常好,因为我做了一些基本的过滤,但有时关键点是错误的,所以我需要考虑这一点。
在此之前,我使用 Matlab 校准了相机,所以我有焦距、主点和失真。但是,我从图像中提取的所有点都是 2D 的。据推测,有必要在 3D 中表示这些点,但我不确定如何。
还是我完全采取了错误的方法?
显然,这将针对场景中的每个点完成,但我只画了一个点。平面(正方形)将始终处于相同位置,但相机位置会因帧而异。关键点将位于同一位置,但并非每帧都拾取每个点。