【问题标题】:modified k-mean algorithm for an image clustering用于图像聚类的改进 k 均值算法
【发布时间】:2014-09-11 11:19:39
【问题描述】:

我正在尝试为图像聚类实现修改后的 k_mean 算法,即非常类似于 k-mean。差异仅在于新中心计算。

实际上我已经初始化了集群中心,计算了像素和中心之间的距离,现在基于最小距离我必须将像素分配给集群,但这里的问题是如何将像素分配和存储到集群,我将如何知道哪个像素属于哪个簇进行新的中心计算?

【问题讨论】:

  • 你在这里问一个编程问题吗?如果是这样,您需要提供更多详细信息。如果您要问一个统计问题(与 k-means 聚类理论相关的问题),您应该在 Cross Validated 上提问。
  • 对不起,我忘记了我的错误。是的,这是一个编程问题,我需要 matlab 的帮助。
  • 现在,这不是一个好的编程问题,因为您大致要求的是如何进行 k-means 聚类的指南,这对于这里来说太宽泛了。如果您需要代码方面的帮助,请提供一些示例数据来说明您需要帮助的地方,并说明您想要弄清楚的内容以及它需要适应的编程框架。
  • 好的,实际上这些是我对 RGB 图像聚类的修改 k-mean 所遵循的步骤:步骤 1-定义 D 维数据集,步骤 2-定义簇的数量“k”,第 3 步 - 定义聚类度量“M”,而度量 M 不稳定“计算每个 k 的距离 dkj = ||xj – zk||2,其中 1 ≤ k ≤ K 和 1 ≤ j ≤ N,并确定对于 1 ≤ k ≤ K,根据到 zk 的最小距离计算新 K 个子集的成员;对于 1 ≤ k ≤ K 计算新中心 zk "计算'M'
  • 簇内平方和是算法收敛的度量标准,我将图像像素作为聚类数据,我随机选择簇数为 10,我计算了像素之间的距离和定义了初始聚类中心。现在,我需要帮助根据我计算出的最小距离将像素分配给集群,我也想知道我如何知道哪个像素属于哪个集群

标签: matlab k-means


【解决方案1】:

重申您已经说过的内容,您想运行 k-means,其中您的训练示例是像素,每个像素具有 3 个特征(RedGreen蓝色)。我会顺便提一下,虽然看起来你已经决定了,通过首先将 RGB 数据从 0 归一化到 1.0 而不是 0 到 16 或 0 到 255 来定义距离范数,这样你就可以比较结果与颜色深度无关。

您应该将像素排序为 1..m,并将它们存储在 m x 3 矩阵X(见下文)m = 宽度 x 高度。如何将每个像素分配给 X 行(如果由您决定),因此将图像位置 (x,y) 处的像素任意设置为行 y*width + x。

现在您只需要使用一个额外的 m x 1 索引向量 idx 来跟踪哪个像素属于哪个质心。

idx = zeros(size(X,1), 1);

for i = 1:size(X,1)
   minNormSq = 0;
   for j = 1:K
      normSq = sum((X(i,:) .- centroids(j,:)).^2);
      if j == 1 || normSq < minNormSq
         minNormSq = normSq;
         idx(i) = j;
      end
   end
end

稍后您可以assign a array to a boolean condition 计算新的质心值。

for j = 1:K
   inclusion = (idx == j);
   centroids(j,:) = inclusion'*X;
   centroids(j,:) = centroids(j,:)/sum(inclusion);
end

【讨论】:

  • 感谢这段代码对我有用,但请告诉我第二段的最后一行是什么意思?实际上我正在将图像矩阵重塑为 [1.....m] 的矩阵,其中 m 是 row*col 这是错误的????如果我不会将它存储在 m*3 矩阵中,请帮助
  • @lavi 通常训练集存储在 1 个大矩阵中以帮助向量化,其中样本是行,特征是列。所以在这个问题中 X 将是 m x 3。没有要求您以任何特定顺序分配像素,您只需保持一致即可。
  • 这是我为获得大小为 m*3 的 X 所做的工作 im=imread('D:\l.jpg'); [行列 fet]=size(im); im1=双(im); m=行col; X=reshape(im1,m,fet);这样好吗???当我为您告诉我的内容编写代码时,将图像位置 (x,y) 处的像素任意设置为行 ywidth + x 代码无法显示错误,因此请在整形后告诉我这是否需要编码??
猜你喜欢
  • 2015-06-03
  • 2014-04-25
  • 2014-09-16
  • 2017-06-08
  • 2016-03-10
  • 2017-12-09
  • 1970-01-01
  • 2017-09-24
相关资源
最近更新 更多