【问题标题】:image segmentation of RGB image by K means clustering in python用K对RGB图像进行图像分割意味着python中的聚类
【发布时间】:2015-09-18 04:38:13
【问题描述】:

我想使用 k 方法对土地覆盖的 RGB 图像(卫星图像)进行分割,以这样一种方式进行聚类,即图像的不同区域用不同的颜色标记,并且如果可能的话,会创建分隔不同区域的边界。

是否可以通过 K-means 聚类来实现这一点? 我一直在互联网上搜索,许多教程都是通过 k 表示聚类但仅在将图像转换为灰度之后进行的。我只想用 RGB 图像来做。有什么资料可以帮助我开始吗? 请提出一些建议。

【问题讨论】:

  • 这个问题对于 SO 来说可能太宽泛了。以目前的形式,它相当模糊。您要识别的区域是否具有近似相似的颜色? FWIW,k-means 聚类用于对 RGB 图像执行颜色量化。但是,标准 k-means 可能不适合您的任务,因为您需要提前指定 k(区域数)。也许像growing self-organizing map 这样的不同方法会更好。
  • 感谢您的帮助。为了澄清我的问题,我想对土地覆盖的卫星图像进行图像分割,作为 GIS 的应用程序,因此这些区域具有不同的颜色、强度和纹理。至于 K 均值聚类,我查阅了我的项目土地覆盖分类的文献,发现使用 K 均值聚类算法进行图像分割得到了最好的结果。现在请在这种情况下提出建议。

标签: python image k-means


【解决方案1】:

我想这与 RachJain 无关,但如果将来有人需要: sklearn KMean 算法的简单使用将给出想要的结果:

from sklearn.cluster import KMeans
pic = np.float64(misc.imread(filepath)/255)
kmeans = KMeans(n_clusters=13, random_state=0).fit(pic)
pic2show = kmeans.cluster_centers_[kmeans.labels_]
plt.imshow(pic2show)

【讨论】:

  • 太棒了!谢谢!
【解决方案2】:

他们将图像转换为灰度是什么意思?该公式计算点到质心的欧几里得距离。因此使用 R、G、B 值。阅读这份学生报告,了解使用不同颜色空间(RGB 或 HSV)的比较:http://www.cs.bgu.ac.il/~ben-shahar/Teaching/Computational-Vision/StudentProjects/ICBV121/ICBV-2012-1-OfirNijinsky-AvivPeled/report.pdf

【讨论】:

  • 当我说他们首先将其转换为灰度时,这里是指向 link的链接
  • 没有转成灰度,scipy.misc.lena()函数得到的图像本身是灰度的。查找图形切割 - 它们可能更适合卫星图像。
猜你喜欢
  • 1970-01-01
  • 2016-05-11
  • 2017-05-29
  • 1970-01-01
  • 2017-08-28
  • 2020-02-10
  • 1970-01-01
  • 2013-06-04
  • 2017-05-23
相关资源
最近更新 更多