Opencv可重复性结果没有意义吗?

时间:2014-09-23 10:21:06

标签: opencv image-processing feature-detection evaluation sift

我正在尝试通过重复性标准来评估SIFT和SURF检测器。

我发现以下方法可以找到SIFT和SURF的重复性,对应性

 cv::evaluateFeatureDetector(img_1c, img_2c, h12, &key_points_1, &key_points_2, repeatability, corrCounter);

下面列出了一些结果:

Number  Repeatibility   Correspond  Keypoint 1st    Keypoint 2th    
1to2    0.7777778            140        224              180    
1to3    0.7125               114        224              161    
1to4    0.704918              86        224              123    
1to5    0.6853933             61        224               89    
1to6    0.6521739             45        224               69
第一行可重复性的

可以计算为 - > (correnspond)/ min(keypoint1st,keypoint2th)=(140/180)= 0.7777778 但对于其他行,它的值与我用上述公式计算的值不同。

有人能说出为什么会这样吗?

问候。

2 个答案:

答案 0 :(得分:4)

我想我可能在这里找到了问题。

重复率是考虑到提取的关键点总数,两个图像之间的重复点数。 为了测量重复点的数量,必须考虑观察到的场景由于其成像条件的改变而相互不同(在Mikolajczyk数据集的情况下,视点,旋转+比例,模糊等)。

  

在两个图像中都未检测到的关键点可能会破坏   重复性测量因此,只有在共同场景中的点   零件影响重复性。

正在发生的是您正在考虑在第二张图片中检测到的所有关键点以计算重复性,实际上仅应使用单应性中的关键点

希望这有帮助。

答案 1 :(得分:1)

事实上,OpenCV 2.49在evaluation.cpp

中使用了这行代码
repeatability = minCount ? (float)correspondencesCount / minCount : -1;

这是对应的数量除以Keypoint 1stKeypoint 2th的较小数量,所以我猜你的错误可能在其他地方。 您可以在设置img_1c等的地方发布完整的代码并调用该函数并显示结果吗?