在图像矢量上使用k-means时,我有一个唠叨的疑问。我有一个RGB图像,我已经转换为HSV空间。基本上我想单独在H向量上执行k-means。这是一个214乘300的向量。
我有两个问题:
1.在将样品送入kmeans命令之前,我应该将样品重塑为64200 * 1向量吗?
2.如何找到每个聚类的中心(我聚集成4个聚类,因此我需要4个位置,每个位置代表每个聚类的中心。)
答案 0 :(得分:0)
是的,您应该将矩阵重新整形为1xN
向量,其中N
对应于您正在聚类的色调值的数量。每个都被视为要聚类的单个数据点。
k-means的很大一部分是找到正确的聚类中心。这种情况适合您,不需要先验设置。如果要初始化具有良好中心的群集,请查看k-means++,但在运行k-means之前不必查找群集中心。要在聚类之后获得计算的聚类中心,您只需要查看从k-means调用提供的输出数组。签名如下:
double kmeans(InputArray data,int K,InputOutputArray bestLabels,TermCriteria criteria,int attempts,int flags,OutputArray centers = noArray());
如您所见,kmeans()调用的最后一个参数是包含聚类中心的矩阵。