OpenCV: 寻找单应性矩阵的RANSAC置信度参数

10
OpenCV函数findhomography()可以在两个图像的匹配点之间找到同构变换。(详见Definition)
为了找到匹配的点子集,可以使用RANSAC。
问题在于:与OpenCV中使用RANSAC的其他函数(例如findfundamentalMat(详见Definition))不同,置信度的RANSAC参数不能被更改。只能将重投影阈值作为参数传递。
我查看了OpenCV源代码,对于findhomography(),置信度被硬编码为0.995。
出于我的目的,我需要增加这个值。有没有一种方法可以在不更改OpenCV源代码本身的情况下实现这一点?
这样硬编码是否有原因?

PS:我在下一个子版本中添加了一个更改在1557号工单下的请求


1
两个定义链接现在都失效了! - jtlz2
2个回答

5

你不是第一个需要在OpenCV中更改硬编码变量或函数的人。实际上,我们正在改变许多OpenCV函数,以使它们在移动电话上更快,更高效。 如果您想更改RANSAC,请创建该类的副本并使用不同的名称。

class  CvModelEstimator2
{

}

在你的代码中,根据需要进行修改。你也可以改变RANSAC的最大迭代次数,默认值非常高,会使应用程序变得非常慢。


4

硬编码的原因是对于大多数用户来说,这是一个非常好的选择。

也许你是第一个感觉需要更多东西的人。但这就是OpenCV开放的原因-拿走代码,修改它,制作一个补丁并提议给OpenCV开发团队-不管你喜欢什么。

而且,你确定这就是你需要的吗?通常,更紧密的重投影阈值会起到作用。如果出现问题,它们可能在其他地方-某些选择不当的点,点匹配的太大的拟合误差等。


1
你是对的:我可以自己修改并参与开发。事实上,这就是我在本地 Subversion 中所做的,而且运行良好。 - user834985

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接