筛选描述符值:opencv vs vlfeat



我正在尝试比较opencv和vlfeat的筛选实现。

我注意到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个不同图像的描述符。

我有两个问题:

  1. 为什么他们有两个不同的值?
  2. 如果我需要使用vlfeat(然后是vlad编码)的k-means openCV表示,我需要更改这些值吗?

免责声明,我不是OpenCV或VLFEAT的专家,但我认为我知道答案。

vlfeat可以同时生成整数和浮点描述符。要生成整数描述符,请使用VL_SIFT函数,并为了生成float描述符,使用vl_dsift函数与 floatDescriptors parameter。

出于性能原因,

vlfeat可能使用整数描述符。使用整数的计算通常比使用浮子要快。但是,这可能是以精度为代价的。但是,在计算机视觉的情况下,较小的精度可能并不那么重要。在整数K-均值算法的描述中,您甚至可以阅读"这是限制某些应用程序的限制,它对聚类图像描述符非常有效,而在这些应用程序中,通常不必要的精度非常高"。

>

关于K-均值算法。有一个用于整数描述符的版本(vl_ikmeans)和float描述符的版本(vl_kmeans)]。使用OpenCV,只需使用后者。

最新更新