机器学习之无监督学习:基于聚类的整图分割

news/2024/5/20 6:03:04 标签: 机器学习, 图像处理, 聚类, python, 图像识别

前置准备

详情请见我的上一篇博客

基于聚类的图像分割

实现机理

  • 图像分割:利用图像的灰度、颜色、纹理、形状等特征,把图像分为若干个互不重叠的区域,并使这些特征在同一区域内呈现相似性,在不同的区域内存在较明显的差异性。
  • 常用方法:
    1.阈值分割:对图像灰度值进行测量,设置不同种类的阈值,达到分割的目的。
    2.边缘分割:对图像边缘进行检测,检测图像中灰度值发生跳变的地方,即为一片区域的边缘。
    3.直方图法:对图像的颜色建立直方图,而直方图的波峰波谷能够表示一块区域的颜色值的范围,来达到聚类分析的目的。
    4.特定理论:基于聚类分析、小波变换等理论完成图像分割。

效果图

  • 原图
    在这里插入图片描述
  • 效果图
    在这里插入图片描述

源代码

python">import numpy as np
import PIL.Image as image
from sklearn.cluster import KMeans

def loadData(filePath): #读取文件
    f = open(filePath, 'rb') #二进制方式打开图片文件
    data = []
    img = image.open(f)
    m,n = img.size
    for i in range(m):
        for j in range(n):
            x, y, z = img.getpixel((i, j))
            data.append([x/256.0, y/256.0, z/256.0])
    f.close()
    return np.mat(data), m, n

imgData,row,col = loadData('picture.jpg')
label = KMeans(n_clusters=4).fit_predict(imgData) #KMeans方法创建实例,聚类中心个数为4

label = label.reshape([row,col]) #获得数据标签
pic_new = image.new("L", (row, col))
for i in range(row):
    for j in range(col):
        pic_new.putpixel((i, j), int(256/(label[i][j] + 1)))
pic_new.save("result-picture-4.jpg", "JPEG") #输出结果


注:本文是博主机器学习课程的心得总结,不支持任何商用且不支持转载!如果你也对机器学习有一定的兴趣和理解,欢迎随时找博主交流~


http://www.niftyadmin.cn/n/1638313.html

相关文章

蓦然回首

回首 已太多 蓦然 已错过 倒退 已早 前进 已久 渴望 变成只 美丽的蝴蝶 自在飞翔 但是谁又知道 我究竟能飞向哪里? 一时的迷失 我无语了 转载于:https://www.cnblogs.com/clsoho/archive/2008/04/27/1624301.html

类成员的访问控制权限

1、class 前为什么必须要有public ? public只是class的一种修饰词,表示公开的类,既所有的类都可引入使用 2、类成员的访问控制权限

Ihttphandler 与ihttpmodule

1. ihttpModule:粘合剂,侦听application事件或用户自定义事件2. ihttphandler: 可以自定义对特定资源进行处理3. ihttpHandlerfactory: 可以用来进行再自定义ihttpmodule 或标准ihttpmodule之间进行选择ihttpHandler拦截httpRequestihttpModule是事件侦听…

Android布局文件的命名空间

转载自http://blog.sina.com.cn/s/blog_a28e3dd90102uxmc.html Android的xmlns,这个是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间 。 首先是命名空间 Namespace这个概念,我们在学习C和C#的…

机器学习之有监督学习:分类

前置准备 详情请见我的上一篇博客 基本分类模型 K近邻分类器(KNN) 主要参数: 使用方法: 决策树 主要参数: 使用方法: 朴素贝叶斯 主要参数: 使用方法: 人体运动状态信息评级 实现机理 注…

DataGrid中labelFunction实例学习.

DataGrid中labelFunction实例学习. 示例&#xff1a; 代码&#xff1a;<?xml version"1.0" encoding"utf-8"?><mx:Application xmlns:mx"http://www.adobe.com/2006/mxml"layout"vertical"><mx:Script><![CDA…

第一行代码--android学习笔记1-----活动的基本用法

1、手动创建活动 &#xff08;1&#xff09;public表示公开的类&#xff0c;所有的类都可引入使用。 &#xff08;2&#xff09;class FirstActivity extends Activity表示FirstActivity类继承自Activity 类。 &#xff08;3&#xff09;Override表示下边的方法是继承父类的…

机器学习之有监督学习:回归

前置准备 详情请见我的上一篇博客 线性回归 多项式回归 房价与房屋尺寸的关系实例 线性回归法 实现机理 根据已知的房屋成交价和房屋尺寸进行线性回归&#xff0c;程序所需数据文件点此下载&#xff08;提取码&#xff1a;BigG&#xff09; 效果图 源代码 #线性回归.py …