我注意到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 ...
请注意,这些是2个不同图像的描述符。
我有两个问题:
答案 0 :(得分:1)
免责声明,我不是OpenCV或VLFeat的专家,但我认为我知道答案。
VLFeat可以生成整数和浮点描述符。要生成整数描述符,请使用vl_sift函数,并为了生成浮点描述符,请使用带有 FloatDescriptors 参数的vl_dsift函数。
由于性能原因,VLFeat可能使用整数描述符。使用整数计算通常比使用浮点数更快。但是,它可能以牺牲精度为代价。尽管如此,在计算机视觉的情况下,较小的精度可能不是那么重要。在integer k-means algorithm的描述中,您甚至可以阅读"虽然这是某些应用的限制,但它适用于聚类图像描述符,其中通常不需要非常高的精度"。
至于k-means算法。整数描述符有一个版本(vl_ikmeans),浮点描述符有一个版本(vl_kmeans)]。使用OpenCV只需使用后者。