OpenCV CV 查找单应性断言错误 - 计数器 => 4



我目前正在完成兴趣点检测器的评估工具。在最后的步骤中我发现了一个令人困惑的错误。

Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )

srcPointsdstPointsvector<Points2f>, CC_3存储匹配的关键点对应的点。到目前为止没有什么特别的-就像在教程中一样。

但是当我使用RANSAC并在范围[0,…], 4],我得到一个断言错误,计数器应该大于或等于4。

问题1:算法是否需要至少四个点来描述什么属于当前模型并创建共识?

问题2:有关于这个的文档吗?(我看了一下文档和教程。)

请注意,我已经看到了这个问题。但是对于RANSAC的行为并没有令人满意的答案。或者我应该接受这个方法至少需要四个点才能找到同形词?

谢谢你的帮助。

单应性不能小于4对点。这是因为只有3个点会导致视角模糊。画一个三角形

a

b        c

在图像1。在图2中,这些点被转换成如下的样子

a

b    c

b和c之间的距离被缩短了一半。不幸的是,你不知道这是因为点c离你更近还是更远。有了第四点,差别就明显了。

a        d

b        c

这是图片1中的一个正方形

     d

a        

b    c    

这里d和c向你旋转

a     
     d
b    c   

而这里它们旋转远离你。

我在openCV文档中没有看到这个要求,但是如果你找到任何关于单应性计算的资源,在你找到这个要求和更严格的证明4点是足够的之前,你不必读得很远。

RANSAC用于在一个较大的集合或对应(即srcPoints.size() >= 4)中选择4对匹配点。这就是为什么你得到一个错误,如果srcPoints.size() <=4 .

你至少需要4个对应,因为一个单应矩阵H有8个自由度,因此需要8个线性方程才能找到一个解。由于每对点生成两个线性方程(使用x和y坐标),您将总共需要至少4个对应。

相关内容

  • 没有找到相关文章

最新更新