【问题标题】:3D Triangulation similar to Hawkeye类似于鹰眼的 3D 三角测量
【发布时间】:2014-04-09 00:20:25
【问题描述】:

如果以前有人问过这个问题,请原谅我,但我想知道从哪里开始实现立体视觉以将 2D 坐标转换为 3D 坐标。我正在尝试在 3D 中跟踪像鹰眼这样的球。我有两个高速摄像机,我能够在每个摄像机中检测到球。我知道我需要校准相机,同步它们并运行一些算法来消除镜头失真等。但是,我不知道下一步是将 2D 坐标转换为世界 3D 坐标。

有谁知道如何进行三角测量谁可以帮助我?此外,相机不会相互平行,而是在不同的角度,所以不知何故,我需要知道每个相机的 3D 坐标位置。

我们将不胜感激。

非常感谢

【问题讨论】:

  • 看看这里的小介绍:multimedia.ceti.gr/index.php/3d-laser-scanning-explained 它主要是指激光扫描,但三角测量的概念是相同的......您可能还需要在使用时检查立体视觉资源两个摄像头
  • 你的问题很不清楚。您是在寻找三角剖分过程背后的理论,还是想在 OpenCV 中应用它?
  • 我想知道实际情况(使用 OpenCV 或任何其他代码或库),而不仅仅是理论上,我如何使用简单的两个摄像头设置进行三角测量以找到球的 3D 位置.

标签: opencv image-processing 3d triangulation stereo-3d


【解决方案1】:

要将两个已校准相机的 2D 转换为 3D,您可以使用以下公式: z = 焦点*基线/视差 x = z*u/焦距 y = z*v/焦点

在哪里 焦距 - 相机的焦距(以像素为单位) u = column-Cx, Cx~image_width/2 但校准会给你更精确的值 v = -row+Cy, Cy~image_height/2 基线 - 相机之间的水平距离 disparity - 两幅图像中球的水平位置差异

严格来说,您只需要在处理密集立体声时进行校正。对于稀疏立体声,您只需要校准。

【讨论】:

  • 太好了,谢谢。一点背景,我正在尝试制作一个可以检测足球越界的系统。如果我将两台摄像机聚焦在目标上,它们是否必须平行,或者它们之间可以是任何角度/距离吗?另外,如何准确找出三角测量过程所需的相机位置?
  • 您不需要使用并行相机,但您可能会求解更复杂的方程组。与距离相比,相机间隔应该足够大,因此,例如,如果相机是平行的并且 d=f*B/z,您必须确保在您的目标所在的距离处有几个视差像素。至于相机校准 - 您将需要相机的内在和外在参数来解决三角测量问题。这意味着当您有 4 个方程(图像中的 2 个摄像头 x 2d 坐标)时,求解 3D 点(3 个未知数)的针孔摄像头方程。
  • 正如上面的帖子所说,您可以将投影矩阵中的内在和外在参数结合起来,并使用 triangulatePoints() 来获得解决方案。
【解决方案2】:

我最近找到了fragment of 'Learning OpenCV' book。它似乎是关于 opencv 背后的理论和实现的一个很好的知识来源。虽然,书中的 API 已经过时,但总体机制仍然是最新的。总而言之,他们建议:

  1. 消除失真(如果您有校准过的相机,您已经可以做到这一点)
  2. 调整相机之间的距离和角度
  3. 在两张图片上找到相同的特征
  4. 考虑到图像上对象的位置,通过简单的计算来估计深度。

【讨论】:

  • 《学习 OpenCV》这本书正在引导@Vlad 的答案。你可以在这里找到完整的书:link
猜你喜欢
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 2019-11-14
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多