2015-07-01 57 views
0

我想要使用k均值聚类来分割用于土地覆盖的RGB图像(卫星图像),使得图像的不同区域用不同的颜色标记,并且如果可能的话创建分隔不同区域的边界。RGB图像的RGB图像分割意味着python中的聚类

K-means聚类可以实现吗? 我一直在搜索整个互联网和许多教程通过k意味着群集,但只有在将图像转换为灰度后。我只想用RGB图像来做。有什么资料可以帮助我开始? 请提出建议。

+0

这个问题对于SO来说可能太宽泛了。而且目前的形式很模糊。您想要区分大致相似颜色的区域吗? FWIW,k-means聚类_can_可用于对RGB图像执行颜色量化。然而,标准k-means可能不适合你的任务,因为你需要提前指定'k'(地区的数量)。也许像[生成自组织映射](https://en.wikipedia.org/wiki/Growing_self-organizing_map)这种不同的方法会更好。 –

+0

谢谢你的帮助。为了澄清我的问题,我想对地表卫星影像进行图像分割作为GIS的一个应用,因此这些区域具有不同的颜色,强度和纹理。对于K均值聚类,我已经通过了我的项目的土地覆盖分类文献,发现用K均值聚类算法得到的最好结果用于图像分割。现在请建议在这方面提出一些建议。 – RachJain

回答

0

你是什么意思,他们将图像转换为灰度?该公式计算一个点与质心的欧几里得距离。因此使用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

+0

当我说他们先把它转换成灰度,这里是一个链接到[链接](http://scikit-learn.org/stable/auto_examples/cluster/plot_lena_segmentation.html) – RachJain

+0

它没有转换为灰度,图像它本身通过函数scipy.misc.lena()获得灰度。查看图形切割 - 它们可能更适合卫星图像。 – riddler

0

我想这是不相关的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)