【发布时间】: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