机器学习算法基础--K-means应用实战--图像分割

目录

1.项目内容介绍

2.项目关键代码 

3.项目效果展示

1.项目内容介绍

本项目是将一张图片进行k-means分类,根据色彩k进行分类,最后比较和原图的效果。
题目还是比较简单的,我们只要通过k-means聚类,一类就是一种色彩得出聚类之后的图像,就是根据色彩分割出来的图像。
最后我们设定[50,20,10,8,6,4,2]个聚类簇,我们画出8张图片,对应比较还原的效果即可。

2.项目关键代码 

import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans 
from matplotlib.image import imread

image = imread(r"C:\Users\Zeng Zhong Yan\Desktop\py.vs\数学建模\Figure\HeayMap_Rain Figure.png")
X = image.reshape(-1,3)#化成二维数组

segmented_imgs = []#创建空列表用于存储切割之后的图像
n_colors = (50,20,10,8,6,4,2)
#根据不同的color进行k-means聚类
for n_cluster in n_colors:
    kmeans = KMeans(n_clusters = n_cluster,random_state=42,n_init='auto').fit(X)
    #根据KMeans算法的聚类结果,将每个像素点的颜色映射到最接近的聚类中心,形成分割后的图像
    segmented_img = kmeans.cluster_centers_[kmeans.labels_]
    #将分割后的图像添加到segmented_imgs列表中,并将其重新排列成与原始图像相同的形状
    segmented_imgs.append(segmented_img.reshape(image.shape))
                          
#绘制可视化图片
plt.figure(figsize=(18,6),dpi=500)
plt.subplot(241)
plt.imshow(image)
plt.title('Original image')

for idx,n_clusters in enumerate(n_colors):
    plt.subplot(242+idx)
    plt.imshow(segmented_imgs[idx])#在子图中显示分割后的图像
    plt.title('{}colors'.format(n_clusters))

plt.savefig(r"C:\Users\Zeng Zhong Yan\Desktop\py.vs\MachineLearning\图像分割.png",dpi=500)
plt.show()

3.项目效果展示

 

你可能感兴趣的:(机器学习算法基础,机器学习,算法,kmeans)