子图像上的SIFT描述符并不总结为整个图像上的那些?

时间:2011-10-28 04:02:05

标签: computer-vision sift

我在OpenCV 2.3中使用SIFT检测器和提取器,并发现在子图像上检测到的关键点数量并不总计到整个图像上的关键点数量。

具体来说,如果我在图像A上使用SIFT检测器,检测器会检测到N个SIFT关键点。 如果我将A分成四个子区域A_1,A_2,A_3,A_4并分别在这些区域上运行检测器,则检测器相应地检测N_1,N_2,N_3,N_4个SIFT关键点。 令人惊讶的是,N_1 + N_2 + N_3 + N_4不等于N!

这种现象对SIFT算法是否正确?或者这是由于OpenCV 2.3的实施不佳?

1 个答案:

答案 0 :(得分:2)

SIFT探测器在图像上使用一组高斯滤波器。这些滤镜的结果在图像子区域的边缘附近不会相同。如果您将查看关键点位置,您将看到大多数更改的点是图像子区域附近的点。

此外,在SIFT算法中存在关键点非最大值抑制阶段,其中关键点强度与最强关键点进行比较并且如果为弱则丢弃。在完整图像中,将使用全局最大值,而在基于区域的使用中,每个点将使用理智子区域的最大值进行测试,从而导致较小的差异。