我是图像处理的新手,我想提取图像功能以进行一些分类。我在理解管道时遇到了问题。
据我所知,我有一个图像,我对它们运行SIFT算法。这为我提供了一组每个图像的描述符,数量各不相同,固定长度为128.
然后我继续对它们进行聚类,因为无法对不同数量的特征应用算法。为此,我将所有图像的所有描述符叠加起来,并运行具有所需簇数的k均值算法。我得到的是k个长度为128的特征。
这是我感到困惑的地方,所以我现在有了这些新的描述符,我该怎么办?如果它们代表所有图像,我不明白如何将它们插入分类器?每个图像是否都有自己独立的特征才能输入分类器?
我确信我不明白这个概念,但有人可以澄清一下我得到一个k * 128大小的矩阵后会发生什么吗?例如,SVM分类器的用途是什么?这个k如何意味着训练分类器的结果足够了?
谢谢!
编辑:我可能对关键点和描述符感到困惑,对图像处理感到遗憾!答案 0 :(得分:3)
你应该研究一下被称为“视觉词袋”的图像分类/图像检索方法 - 它非常相关。一袋视觉词是固定长度的特征向量 v ,它总结了图像中特征的出现。这使用了所谓的代码簿(也称为文本检索中的历史用途的字典),在您的情况下,它是根据您的K-means聚类构建的。要为给定图像制作 v ,最简单的方法是为 v [j]指定最接近第j个聚类质心的SIFT描述符的比例。这意味着 V 的长度为K,因此它与图像中检测到的SIFT要素的数量无关。
具体地说,假设你已经完成K意味着群集K = 100.让我们使用 c 来表示 ith 群集中心。对于SIFT,这将是大小为128的向量。现在,对于给定的输入图像,您将此向量 v (大小为100)并使用零初始化。然后,您从图像中提取要素及其相应的描述符。假设有N个描述符,我们将其称为 d 0, d 2,..., d (N-1),其中 d j是第j 描述符。对于每个 d j,您计算它与群集中心之间的向量距离 c 0, c 2,... c < /强> 99。然后,您将聚类索引 k 与 d j的距离最小,并增加: v [k] + = 1。请注意,此过程可以非常好地并行化,特别是在GPU上。使用例如近似最近邻居替换该过程也可以更快。 FLANN库。{