在 matlab 中对 SURF 和 SIFT 描述符的组合运行 k-means
Posted
技术标签:
【中文标题】在 matlab 中对 SURF 和 SIFT 描述符的组合运行 k-means【英文标题】:run k-means on combination of SURF and SIFT descriptors in matlab 【发布时间】:2019-06-01 12:24:39 【问题描述】:如何在 MATLAB 中结合 SURF 和 SIFT 描述符,其中 SIFT 为 128D,SURF 为 64D,它们的描述符数量不同,另一点是 SURF 描述符的值非常小于 SIFT,其中一些是负的,而所有筛选描述符都是正的;然后在它们的组合上运行k-means? 有一个相关的讨论here,但我无法理解,答案是针对 OpenCv
感谢任何帮助
【问题讨论】:
这两个向量(大小为128D + 64D = 192D的向量)拼接有什么问题?请详细说明您的问题。 为什么要对维度求和?,我想我应该将 SIFT 的矩阵(命名为 M)与 SURF 的矩阵(命名为 N)连接起来。所以我有一个类似 [128*m, 64*n] 的串联,其中 m 是筛选描述符的数量,n 是冲浪描述符的数量。所以最终的矩阵不是192D!。我不知道您如何在 matlab 中将它们连接起来,以及为什么它的新一角是 192。我想我应该在 surf 矩阵下方添加 ad 64*n 矩阵以使其成为 128D,然后将其与 sift 水平连接并得到一个 128D 的新矩阵! .我很困惑:D,你能用matlab代码解释一下吗? 【参考方案1】:解决方案可以将这两个描述符的结果转换为统一的大小,然后轻松地将它们连接起来。例如,使用 PCA 将它们都转换为 32D 维度的 SIFT(32 * m
为 M_prime
)和 SURF(32*n
为 N_prime
)并像这样连接它们:combined_feature_vectors = [M_prime N_prime]
。因此,您有大小为 32 的 + n` 描述符。
您可以通过对每个算法的特征进行归一化来解决 SURF 值小的问题。
【讨论】:
谢谢,我会尝试的,是的,我对它们进行了标准化,但它们的值之间仍然存在一点距离,例如 sift 是 0.01 , surf 是 -0.001 。不,我会尝试他们,看看我是否能得到一个好的结果 我将筛分硬币减少到 64,然后将它们合并。但我没有得到批准的结果。我读过它,如果我将它们结合起来,我应该会得到更好的结果。还是谢谢以上是关于在 matlab 中对 SURF 和 SIFT 描述符的组合运行 k-means的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB教程案例26图像特征点提取算法matlab仿真与分析——sift,surf,kaze,corner,BRISK等