繁体   English   中英

使用MATLAB查找细长簇

[英]Finding elongated clusters using MATLAB

让我解释一下我要做的事情。 我在RGB空间中绘制了图像的点/像素。 我想要做的是在这个空间找到细长的簇。 我对聚类技术还是比较陌生的,也许我没有正确地做事,我正在尝试使用MATLAB内置的k-means聚类进行聚类,但看起来好像这不是这种情况下的最佳方法。

我需要做的是找到“颜色簇”。

这是我在图像上应用K-means后得到的结果。 在此输入图像描述

它应该是这样的:

在此输入图像描述

对于这样的图像:

在此输入图像描述

有人能告诉我哪里出错了,我能做些什么来改善我的成绩?


注意:对于低分辨率图像,对不起,这些是我最好的。

您是否试图复制本文的结果 我会说他们做了他们做的事情。

但是,我将补充,因为当前答案存在一些问题。

1)是的,你的星团不是球形的 - 这是k-means的假设。 DBSCAN和MeanShift是处理此类数据的两种常用方法,因为它们可以处理非球形数据。 但是,您的数据似乎有一个大的中央丛,在几个有限的方向向外扩散。

对于DBSCAN,这意味着它会将所有内容放入一个集群中,或者所有内容都是它自己的集群。 由于DBSCAN具有均匀密度的假设,并且要求群集以一定的余量分开。

MeanShift可能会有困难,因为一切看起来都来自一个中心肿块 - 因此这将是点将移向的密度最高的区域,并汇聚到一个大的聚类。

我的建议是改变色彩空间。 RGB存在问题 ,大多数算法所做的假设可能都不会很好。 您应该使用的聚类算法可能会在不同的特征空间中发生变化,但希望它会使问题更容易处理。

看看基于密度的聚类算法,例如DBSCAN和MeanShift。 如果您要进行分割,则可能需要向矢量添加像素坐标。

k-means基本上假设簇近似为球形。 在你的情况下,他们绝对不是。 尝试使用非球形协方差矩阵将高斯拟合到每个聚类。 基本上,您将遵循与k-means相同的期望最大化(EM)步骤,唯一的例外是您将对协方差矩阵进行建模和拟合。

这是算法的大纲

  1. init:将每个点随机分配给k簇中的一个。
  2. 对于每个聚类估计均值和协方差
  3. 对于每个点估计其属于每个群集的可能性
    请注意,这种可能性不仅基于到中心的距离(平均值),而且还基于由协方差矩阵编码的簇的形状。
  4. 重复阶段2和3直到收敛或直到超过预定义的迭代次数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM