码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-02-08 00:20:11      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:result   int   def   相关   res   安装   实例   jpeg   设置   

把像素扔进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:基于聚类的“图像分割”实例编写

标签:result   int   def   相关   res   安装   实例   jpeg   设置   

原文地址:https://www.cnblogs.com/nishida-rin/p/12275057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!