使用 vl_sift 函数在 matlab 中进行 SIFT

SIFT in matlab using vl_sift function

我正在使用 vl_sift(来自 vl_feat 站点)函数来查找 SIFT 描述符,它为我提供了一个图像的大小为 128*1 的描述符,第二个图像的大小为 128*2。我知道 128 背后的原因,但我不明白为什么列不断变化(有时是 1,有时是 2),它必须相同,对吗?谁能解释一下这些列代表什么? 谢谢

SIFT 提取任意数量的描述符,每个大小为 128。提取的描述符数量不会是一个固定的数字,因为它取决于有多少点是 "strong enough" 是一个好的描述符。 SIFT算法中每个描述子有128个"features",其他的(比如SURF,64个特征)会有不同。

在您的例子中,您在第一张图片中获得了一个特征,在第二张图片中获得了 2 个特征。那是非常非常很少的特征,也许你的图片太小了?

从关键点提取特征。在 SIFT 案例中,它们是类似 blob 的结构。换句话说,vl_sift 函数寻找关键点并从每个关键点中提取一个 128 维的描述符。

您有各种尺寸(128*1 或 128*2 等...),因为在一张图像中 vl_sift 找到一个关键点,在另一张图像中找到 2 个关键点。这就是为什么你有不同的维度。