输入图像的n个sift特征点,聚合得到k个集合,每个集合的聚类质心就是视觉单词。
前面已经提到每个sift特征点是一个128维的向量,最终得到的每个视觉单词也是一个128维的向量。
第一步:任意选择k个sift特征点作为初始聚类质心。
第二步:对于每个sift特征点,计算它们与k个聚类质心的欧式距离,找到最小的那个聚类质心,将该特征点放入此聚类质心集合中。
第三步:对于每个聚类质心集合,用所有元素均值来更新质心。
第四步:比较更新前后聚类质心集合是否相近(距离小于某阈值),相近则完成聚类,否则返回步骤2,如果迭代次数太多聚类失败。
k数值的选择和k个sift特征点的随机性影响了算法精度。