【问题标题】:reprojectImageTo3D - Where do I get QreprojectImageTo3D - 我在哪里得到 Q
【发布时间】:2014-04-17 01:14:26
【问题描述】:

我在没有 NDK 的 Android 上使用 OpenCV 时遇到了一些问题。
目前我正在我的大学做一个项目,我的厨师告诉我,在从 2D 图像重建 3D 对象时,我应该避免相机校准。

到目前为止,我有 2 张 2D 图像,并拥有所有特征点、匹配项、good_matches、基本矩阵和齐次矩阵。此外,我还使用 StereoBM 计算了视差图。下一步应该是从所有这些值中获取 3D 点云。

我上网查了一下发现

Calib3d.reprojectImageTo3D(disparity, _3dImage, Q, false);

使用这种方法,我应该能够重新创建 3D 点云......目前的问题是,我没有 Matrix Q。 我想我会从方法中得到这个

stereoRectify(...);

但由于我应该避免在这种特定情况下使用 cameraCalibration,所以我不能使用这种方法。另一种选择

stereoRectifyUncalibrated(...);

不提供Q...

有人可以帮助我并告诉我如何以更简单的方式获得 Q 或点云吗? 谢谢

【问题讨论】:

  • 几个问题: 1. 您的 2 张图像是从同一个相机(例如移动后)还是从两个不同的相机获取的? 2. 相机校准不适用有充分的理由吗? 3. 您需要哪种 3D 重建:投影、欧几里得或按比例缩放?另外,请注意 StereoBM 在图像校正后调用时会产生最佳结果..
  • 1.两张图像来自同一个相机,2. 没有校准......是的,因为我的厨师这么说......我看不出一个很好的理由...... 3. 我需要一个点云......尽可能准确......从这些图像生成。感谢 StereoBM 之前的纠正提示。

标签: java android opencv 3d-reconstruction disparity-mapping


【解决方案1】:

回答您的问题reprojectImageTo3D 所需的Q 矩阵表示从像素位置和相关视差(即[u; v; disp; 1] 的形式)到相应3D 点@ 的映射987654326@。不幸的是,如果不知道相机的内在函数(矩阵K)和外在函数(两个相机姿势之间的旋转和平移),您就无法得出这种关系。

相机校准是估计这些的常用方法。您的厨师说这不是一种选择,但是有几种不同的技术(例如使用棋盘,或通过autocalibration)具有不同的要求和可能性。因此,准确调查校准不适用的原因可能有助于找到适合您应用的方法。

如果您真的无法估计内在函数,则可能的解决方案是捆绑调整,使用的不仅仅是 2 张图像。然而,如果没有内在函数,3D 重建可能不会很有用。这就引出了我的第二点。

3D 重建有多种类型,主要类型有:投影、度量和欧几里得。 (有关这方面的更多详细信息,请参阅 Hartley & Zisserman,第 2 版的“计算机视觉中的多视图几何”中的第 10.2 页第 264 节)

  • Euclidian 重建是大多数人所说的“3D 重建”,尽管不一定是他们需要的:场景模型仅通过 3D 旋转与真实模型相关联和 3D 平移(即 3D 坐标系的变化)。因此,场景中的正交角度在这​​样的模型中是正交的,场景中 1 米的距离对应于模型中的 1 米。为了获得这样的欧几里得 3D 重建,您需要知道至少一些相机的内在特性以及场景中两个给定点之间的真实距离。

  • metricsimilarity 重建在大多数情况下已经足够好,它指的是场景的 3D 模型,它通过相似性与真实模型相关联变换,换言之,通过 3D 旋转和 3D 平移(即 3D 坐标系的变化)以及整体缩放。为了获得这样的度量重建,您需要知道至少一些相机的内在函数。

  • 如果您不了解场景或相机的内在特性,您将获得 投影 重建。这样的 3D 模型相对于观察到的场景不是按比例缩放的,场景中正交的角度在模型中可能不会正交。

因此,如果您想要准确的重建,了解(某些)相机的内在参数至关重要。

【讨论】:

  • 使用solvePnPRansac时,imgpoints是否需要标准化?因为函数确实需要校准矩阵和失真系数?
  • @West1234 这与这个问题/答案无关。请参阅 OpenCV 文档here
  • 感谢我已经彻底阅读了文档,您似乎对 opencv 有很好的了解,所以我想问一下。我的问题是使用 PNP 确定我的相机姿势,因为我在一个视频帧一个视频帧中移动通过走廊视频.. 结果很糟糕..也许这是一种退化的情况,因为对于相机光线不共线的其他场景结果很好。我正在研究在 PNP 过程中仅使用壁点而不是所有点,因为壁处的光线相交角比直线前进更好。
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多