OpenCV CV findHomography断言错误 - 计数器=> 4

Mr.*_*ain 5 opencv homography ransac

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

Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() )
Run Code Online (Sandbox Code Playgroud)

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

但是当我使用RANSAC并且vector<Points2f>在[0,...,4]范围内时,我得到的断言错误比计数器应该大于或等于4.

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

问题2:有没有关于此的文件?(我看了一下doc教程.)

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

谢谢你的帮助.

Ham*_*mer 8

不能用少于4对点来计算单应性.那是因为只有3分,存在视角模糊.想象一个三角形

a


b        c
Run Code Online (Sandbox Code Playgroud)

在图像2中,点已被转换为如此

a


b    c
Run Code Online (Sandbox Code Playgroud)

b和c之间的距离减少了一半.不幸的是,你不知道是不是因为c点离你或离你越来越近了.在第4点,差异变得清晰.

a        d


b        c
Run Code Online (Sandbox Code Playgroud)

这是图1中的正方形

     d


a        


b    c    
Run Code Online (Sandbox Code Playgroud)

这里d和c向你旋转

a     

     d
b    c   
Run Code Online (Sandbox Code Playgroud)

在这里,他们转离了你.

我没有在openCV文档中看到这个要求,但是如果你发现单应性计算的任何资源,你就不必在找到这个要求之前阅读很多,并且更严格地证明4点就足够了.