1.5:基于聚类的“图像分割”实例编写

Posted nishida-rin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.5:基于聚类的“图像分割”实例编写相关的知识,希望对你有一定的参考价值。

把像素扔进K-Means函数里,然后给像素添加不同的灰度并输出。
 

图像分割常用方法:

1. 阈值分割:对图像灰度值进行度量,设置不同类别的阈值,达到分割的目的。
2. 边缘分割:对图像边缘进行检测,即检测图像中灰度值发生跳变的地方,则为一片
区域的边缘。
3. 直方图法:对图像的颜色建立直方图,而直方图的波峰波谷能够表示一块区域的颜
色值的范围,来达到分割的目的。
4. 特定理论:基于聚类分析、小波变换等理论完成图像分割。
 
 

实例描述

目标:

利用K-means聚类算法对图像像素点颜色进行聚类实现简单的图像分割

输出:

同一聚类中的点使用相同颜色标记,不同聚类颜色不同

技术路线:sklearn.cluster.KMeans

 

实验过程

使用算法:Kmeans

实现步骤:

1.建立工程并导入sklearn包
2.加载图片并进行预处理
3.加载Kmeans聚类算法
4.对像素点进行聚类并输出

关于一些相关包的介绍:

  • PIL包:因为本实验涉及图像的加载和创建,因此需要使用到PIL包,如未安装,请下载相关包自行安装。
 1 import numpy as np
 2 import PIL.Image as image
 3 from sklearn.cluster import KMeans
 4  
 5 def loadData(filePath):
 6     f = open(filePath,rb)
 7     data = []
 8     img = image.open(f)
 9     m,n = img.size
10     for i in range(m):
11         for j in range(n):
12             x,y,z = img.getpixel((i,j))
13             data.append([x/256.0,y/256.0,z/256.0])
14     f.close()
15     return np.mat(data),m,n
16  
17 imgData,row,col = loadData(kmeans/bull.jpg)
18 label = KMeans(n_clusters=4).fit_predict(imgData)
19  
20 label = label.reshape([row,col])
21 pic_new = image.new("L", (row, col))
22 for i in range(row):
23     for j in range(col):
24         pic_new.putpixel((i,j), int(256/(label[i][j]+1)))
25 pic_new.save("result-bull-4.jpg", "JPEG")

 

以上是关于1.5:基于聚类的“图像分割”实例编写的主要内容,如果未能解决你的问题,请参考以下文章

基于模糊聚类的图像分割

Python图像处理丨基于K-Means聚类的图像区域分割

图像分割基于蚁群优化模糊聚类的图像分割matlab源码

图像分割基于局部空间信息模糊聚类FLICM算法图像分割matlab源码

OpenCV4.x图像处理实例-YOLO v8图像分割

基于Kmeans聚类算法的图像分割(色彩分割)实战