在图像矢量上使用k-means

时间:2013-06-26 16:00:34

标签: opencv image-processing computer-vision k-means

在图像矢量上使用k-means时,我有一个唠叨的疑问。我有一个RGB图像,我已经转换为HSV空间。基本上我想单独在H向量上执行k-means。这是一个214乘300的向量。

我有两个问题:

1.在将样品送入kmeans命令之前,我应该将样品重塑为64200 * 1向量吗?

2.如何找到每个聚类的中心(我聚集成4个聚类,因此我需要4个位置,每个位置代表每个聚类的中心。)

1 个答案:

答案 0 :(得分:0)

  1. 是的,您应该将矩阵重新整形为1xN向量,其中N对应于您正在聚类的色调值的数量。每个都被视为要聚类的单个数据点。

  2. 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());

  3. 如您所见,kmeans()调用的最后一个参数是包含聚类中心的矩阵。