OpenCV RHO 单应性方法不适用于透视变换

Pab*_*blo 5 c++ computer-vision homography perspective opencv3.0

我试图将新的 RHO 单应性算法与透视变换结合使用,但似乎 RHO 计算的单应性矩阵大小错误,因此与该方法不兼容。

见下面的代码:

H = findHomography(obj_points, scn_points, RHO, 1.0);
perspectiveTransform(obj_corners, scene_corners, H);
Run Code Online (Sandbox Code Playgroud)

以下断言失败:

error: (-215) scn + 1 == m.cols in function perspectiveTransform
Run Code Online (Sandbox Code Playgroud)

有什么线索吗?它与 RANSAC 完美配合。

Pab*_*blo 2

我找到了解决方案:

对于 RHO,我必须检查单应矩阵以确保它不为空。给 findHomography 提供 4 个或更多点不足以使用此方法获得单应矩阵。

尽管要计算大约 50 个匹配项,但它仅在 40-50% 的情况下检索非空矩阵。

  • RHO 的(其中一位)作者在这里发言。我很乐意在 Pastebin 中看到您的测试用例!您的许多点是否位于同一列或同一行?另外,您是否事先对输入点执行任何类型的标准化?我相信当点以这种方式进行预处理时,我们的算法实际上会变得更糟。为什么我还不清楚;我们针对纯粹的速度进行了优化(基于廉价但数值稳定性较差的算法编写我们自己的数值求解器),并认识到我们可能会失去准确性。 (2认同)