我正在尝试比较OpenCV和VLFeat的SIFT实现。
我注意到VLFeat的描述符值是整数,如:
0 0 0 0 0 0 0 0 0 0 0 17 45 20 26 0 1 ...
而对于OpenCV:
0.0391555 0 0 0.0998274 0.235747 0 0 0.0276871 0.156622 ...
注意,这些是两个不同图像的描述符。
我有两个问题:
发布于 2016-12-09 08:15:16
免责声明,我不是OpenCV或VLFeat方面的专家,但我认为我知道答案。
VLFeat可以同时生成整数和浮点描述符。为了生成整数描述符,使用筛函数,为了生成浮点描述符,使用带有FloatDescriptors参数的dsift函数。
VLFeat可能出于性能原因使用整数描述符。使用整数计算通常比使用浮点数快。然而,它可能以牺牲精确性为代价。尽管如此,在计算机视觉的情况下,较小的精度可能并不是那么重要。在对整数k-均值算法的描述中,您甚至可以读到“虽然这对某些应用程序来说是有限的,但是它对于聚类图像描述符很有效,在这种情况下,非常高的精度通常是不必要的”。
关于k均值算法。整数描述符有一个版本(伊基姆),浮点描述符有版本(金丝)。对于OpenCV,只需使用后者。
https://stackoverflow.com/questions/41038881
复制相似问题