让我解释一下我要做的事情。 我在RGB空间中绘制了图像的点/像素。 我想要做的是在这个空间找到细长的簇。我对集群技术相当新,也许我没有正确地做事,我正在尝试使用MATLAB内置的k-means聚类进行聚类,但看起来好像这不是最好的方法。
我需要做的是找到“颜色簇”。
这是我在图像上应用K-means后得到的结果。
这应该是这样的:
对于这样的图像:
有人可以告诉我哪里出错了,我能做些什么来改善我的成绩?
注意:对于低分辨率图像,对不起,这些是我最好的。
答案 0 :(得分:2)
Are you trying to replicate the results of this paper?我会说他们做了他们做的事情。
但是,我会补充,因为目前的答案存在一些问题。
1)是的,你的星团不是球形的 - 这是k-means的假设。 DBSCAN和MeanShift是处理此类数据的两种常用方法,因为它们可以处理非球形数据。但是,您的数据似乎有一个大的中央丛,在几个有限的方向向外扩散。
对于DBSCAN,这意味着它会将所有内容放入一个群集中,或者所有内容都是自己的群集。由于DBSCAN具有均匀密度的假设,并且要求群集以一定的余量分开。
MeanShift可能会遇到困难,因为一切似乎都是来自一个中心肿块 - 因此这将是点将移向的最高密度区域,并汇聚到一个大型聚类。
我的建议是改变色彩空间。 RGB has issues,大多数算法所做的假设可能都不会很好。您应该使用的聚类算法可能会在不同的特征空间中发生变化,但希望它会使问题更容易处理。
答案 1 :(得分:1)
查看density-based聚类算法,例如DBSCAN和MeanShift。如果您要进行分割,可能需要在向量中添加像素坐标。
答案 2 :(得分:1)
k-means基本上假设簇近似为球形。在你的情况下,他们绝对不是。尝试使用非球形协方差矩阵将高斯拟合到每个聚类。 基本上,您将遵循与k-means相同的期望最大化(EM)步骤,唯一的例外是您将对协方差矩阵进行建模和拟合。
以下是算法的概要
k
个群集中的一个。