ios - 查找立体图像中匹配关键点的距离

标签 ios opencv computer-vision triangulation

我目前正在从 iOS 设备上的相机中提取帧。我使用 ORB 从这些帧中查找关键点及其描述符。然后,我使用 BFMatcher 查找图像上关键点之间的匹配项。

从这里我希望计算从相机到这些点的距离。我使用的所有点都是平面的(现在我使用墙上的销钉进行测试)。在此阶段没有必要考虑非平面表面,因此这应该会让事情变得容易。

我目前有:

  • 要点
  • 关键点描述符
  • 关键点之间的匹配
  • 基本矩阵
  • 基本矩阵
  • 两个摄像头的投影矩阵(尽管我不确定如何测试第二个摄像头是否正确)

我认为我必须以某种形式使用三角测量,但我不确定它是如何工作的。我知道我必须将来自每个摄像机的光线(由摄像机投影矩阵定义?)穿过每个关键点并找到它们相交(或最接近相交)的点。正如我假设的那样,在 3D 空间中,每条光线相交的可能性极小。另外,我的关键点匹配通常非常好,因为我做了一些基本的过滤,但有时关键点是错误的,所以我需要考虑到这一点。

在此之前我使用 Matlab 校准了相机,因此我有焦距、主点和畸变。然而,我从图像中提取的所有点都是二维的。据推测,为此有必要以 3D 形式表示这些点,但我不确定如何表示。

或者我是否采取了完全错误的方法?

显然,这将为场景中的每个点完成,但我只是画了一个点。平面(正方形)将始终处于相同的位置,但相机位置会因帧而异。关键点将位于相同的位置,但并非每帧都会拾取每个点。

最佳答案

参见 Hartley-Sturm 著名的 paper关于最佳三角测量,以及 Kanatani's variant :

关于ios - 查找立体图像中匹配关键点的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13676574/

相关文章:

ios - 终止前一个函数后调用下一个函数

python - OpenCV 实时流视频捕获速度很慢。如何丢帧或与实时同步?

c# - Microsoft 认知服务视觉 API 确实检测代码中的任何字符

opencv - 使用冲浪检测器查找相同银行面额之间的相似性

ios - API 调用的本地通知

ios - JsonEncoder 总是返回空数组

ios - 无法从源工具包生成 Swift 表示错误无法加载模块 : GoogleSignin

python - 图像分割中的轮廓补全

c++ - OpenCV 如何处理 Mat 作为指针来加速代码?

matlab - 'Digit Classification Using HOG Features' matlab 示例仅在 2014 版本中可用吗?