【问题标题】:Calculate Camera Position from Homography Decomposition从单应性分解计算相机位置
【发布时间】:2016-10-17 17:36:35
【问题描述】:

我有一个位置已知的参考图像 A,我想计算相机在图像 B 处的相对位置(即 tx、ty、tz 以米为单位)。图像是使用同一台相机拍摄的,因此相机矩阵保持不变。我正在使用 SIFT 来检测和计算两个图像中的关键点和描述符,并将它们与 FLANN 匹配。从那里我可以得到我用 cv::decomposeHomography(..) 分解的单应矩阵。此功能基于本文:PDF。 文中指出,平移矩阵由平面深度d*归一化。

为了得到正确的翻译,我需要知道平面深度。有没有办法在不知道图像中找到的对象的大小的情况下得到这个?

【问题讨论】:

  • 你能解释一下“欧式单应性”和“射影单应性”的区别吗?您计算了其中的哪些,cv::decomposeHomography(..) 中假定了哪些?
  • 射影单应性 G 是图像空间中的单应性,欧几里得单应性 H 是欧几里得空间中的单应性(即世界坐标)。这些可以通过 H = CamMatrix^1 * G * CamMatrix 计算。我从 cv::findHomography G 得到射影单应性。我假设 cv::decomposeHomography(...) 需要射影单应性,因为它需要 CamMatrix。我说的对吗?
  • decomposeHomography 的翻译矩阵的输出是同质的吗?

标签: c++ opencv computer-vision homography decomposition


【解决方案1】:

使用单应性分解计算的 3D 平移只能计算到未知的比例因子。这是仅使用图像中的表观运动从单目图像计算 3D 几何的经典问题。由于这个原因,通常将单目图像的 3D 重建称为度量重建(而不是解析尺度的欧几里得重建)。要解决比例因子,需要更多信息,例如了解平面上某个点的深度或相机在图像之间移动的距离。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2019-02-11
    • 2013-01-04
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多