Doo*_*bot 1 c++ opencv visual-studio-2012
使用时findHomography():
Mat H = findHomography( obj, scene, cv::RANSAC , 3, hom_mask, 2000, 0.995 );
Run Code Online (Sandbox Code Playgroud)
有时,对于某些图像,生成的H矩阵保持为空(H是UINT8,1x0x0).然而,两个图像之间显然存在匹配(并且看起来好像检测到良好的关键点匹配),并且只是片刻之前,具有相似关键点响应的两个相似图像,生成相关矩阵.输入参数"obj"和"场景"都是Point2f包含各种坐标的矢量.
这是一个常见的问题吗?或者你认为某个小虫可能潜伏在某个地方?就个人而言,我已经处理了数百个存在匹配的图像,虽然我看到有时匹配不佳,但这是我第一次得到一个空矩阵......
编辑:这就是说,即使我的眼睛认为图像对中应该有一个匹配,我意识到它可能会混淆图像的某些部分与另一个,并且可能确实没有"好"的匹配.
所以我的问题是:findHomography()当它无法找到合适的Homography时如何表现?它是返回一个空矩阵还是总是给出单应性,尽管它很差?我只是想知道我是否遇到标准行为或者我自己的代码中是否存在错误.
嗯,你看,cv::findHomography()函数可以从2.4.5版本开始返回空单应矩阵(0 cols x 0行).根据一些观点,这似乎只有在cv::RANSAC传递旗帜时才会发生.
请参阅此处报告的问题:
这可能是因为我们投入了Levenberg-Marquardt求解器的新实验版本,这种解决方案效果不佳(可能是由于一些错误)
我建议在任何地方使用之前检查计算出的单应性:
cv::Mat h = cv::findHomography(...)
if (!h.empty())
{
// Use it
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |