[DA45] 使用K-Means进行简单图像分割

本文介绍了如何运用K-Means算法进行图像分割。通过加载和规范化图像数据,利用K-Means进行聚类,最终将聚类结果转化为彩色图像,展示不同颜色代表的不同区域。通过调整聚类数量,可以实现对图像更细致的分割。

        聚类的一个常用场景是对图像进行分割. 

        图像分割就是利用图像自身的信息, 比如颜色、纹理、形状等特征进行划分, 将图像分割成不同的区域, 划分出来的每个区域就相当于是对图像中的像素进行了聚类. 单个区域内的像素之间的相似度大, 不同区域间的像素差异性大. 这个特性正好符合聚类的特性, 所以可以把图像分割看成是将图像中的信息进行聚类.

        本例通过使用python图像处理标准库PIL获取图片每个像素的三个通道值数据并进行标准化, 再使用K-Means算法对数据进行聚类, 最后输出聚类后重构的图像.

        首先我们选取一张图片, 为了节省时间我使用了最近很人气旺的漫威超级反派图片(Thanos.jpg), 大小为58.4kb.

原图

        之后我们定义一个函数, 函数的主要功能为  加载图片数据并获取图像的尺寸和通道数,然后基于图像中每个通道的数值进行数据规范化, 最后返回规范化后的特征值、图像宽度和高度. 由于图片的颜色通道值为0~255, 我们使用值 (n + 1) / 256.0 使规范化数据处于(0, 1] 区间内, 用以之后的聚类分析.

    相关代码:

# 定义函数: 加载图像, 并进行规范化
def load_data(filepath):
    f = open(filepath, 'rb')
    data = []
    # 得到图像的像素值
    img = image.open(f)
    # 得到图像的尺寸
    width, height = img.size
    for i in range(width):
        for j in range(height):
            # 得到点(i, j)的三个通道值
            c1, c2, c3 = img.getpixel((i, j))
            data.append([(c1+1)/256.0, (c2+1)/256.0, (c3+1)/256.0])
    f.close()
    return np.mat(data), width, height

        调用函数, 传入图片路径, 返回规范化数据n_data, 宽度width, 高度height. 然后使用K-Means算法进行聚类,  设置聚类中心数为4, 得到包含4个类别的label数组, 然后利用已知的width和height把聚类结果转化为图像尺寸的矩阵.

    相关代码:

# 加载图像,得到规范化的结果n_data和图像尺寸
n_data, width, height = load_data('./Thanos.jpg')

# 用K-Means对图像进行聚类
kmeans = KMeans(n_clusters=4)
label = kmeans.fit_predict(n_data)
# 将图像聚类结果,转化成图像尺寸的矩阵
label = label.reshape([width, height])

        使用skimage 中的label2rgb 函数来将 label 分类标识转化为颜色数值, 因为我们的颜色值范围是[0, 255],  所以还需要乘以 255 进行转化,  再转化为整数类型.  最后使用fromarray函数生成图片.

        代码中使用了label_color.transpose(1, 0, 2), 是因为之前生成的图片是颠倒的, 我们通过transpose函数使矩阵的第一维(0)和第二维(1)进行了互换.

    相关代码:

# 将聚类标识矩阵转化为不同颜色的矩阵
label_color = (color.label2rgb(label) * 255).astype(np.uint8)
label_color = label_color.transpose(1, 0, 2)
images = image.fromarray(label_color)
images.save('mark_color2.jpg')

    得到图片:

        从图中可以看出, 图片中的颜色区域被分成了四个类别, 分别用红、黄、蓝、紫四种颜色表示.

        因为图片是通过K-Means做的聚类可视化, 我们也可以将每个像素点的RGB值设置为其对应簇质心点的RGB值, 也就是簇内的点的特征均为质心点的特征. 因为聚类前使用的标准化后的数据, 我们通过int(c1 * 256) - 1公式求得实际通道值, 代码实现如下:

# 创建个新图像img,用来保存图像聚类压缩后的结果
img = image.new('RGB', (width, height))
for x in range(width):
    for y in range(height):
        # 提取 (x, y) 点对应的聚类中心的通道值
        c1 = kmeans.cluster_centers_[label[x, y], 0]
        c2 = kmeans.cluster_centers_[label[x, y], 1]
        c3 = kmeans.cluster_centers_[label[x, y], 2]
        img.putpixel((x, y), (int(c1*256)-1, int(c2*256)-1, int(c3*256)-1))

img.save('new_4.jpg')

        

n_clusters=4的图像

        上图中对应的颜色即为四个簇质心点的颜色.

        我们可以设置不同的聚类数来得到相应的切割图像, 当设置n_clusters=16 时, 以上两种方法对应的图如下:

16类颜色替换图
16类簇质心色图

        可以看出, 随聚类类别的增加, 各像素之间的差异划分增强, 图像被切割得越细密, 且簇质心色图越来越清晰, 愈加接近于原图像.

 

 

完整代码见: https://github.com/Vincentchu9527/pic_cut_01

红外成像法纺织品水分传输性能无损检测与数字化评估 (大论文标题) 第一章 绪论 1.1 纺织品水分传输性能与人体热湿舒适性的关系 1.2 研究痛点:传统检测方法(称重法/MMT)的局限性(破坏性、接触干扰、无法实时监测) 1.3 红外热成像技术在纺织品检测中的研究进展 1.4 本文创新点:  - 提出 “红外热成像+AI分割+多参数融合” 的数字化评估框架  - 实现 水平/垂直双模态 水分传输特性的无损检测  - 建立 结构与性能的量化关联模型(如微管道网络、蜂窝结构效应) 1.5 论文结构安排(对应下方章节逻辑图) 第二章 红外热成像实验系统与图像处理基础 2.1 红外热成像系统搭建  - 硬件:红外热像仪(Hikvision TB-4117-3等)、恒温恒湿环境控制  - 软件:图像采集流程(如300秒视频→900帧序列) 2.2 核心图像处理链路:  - 温度-灰度线性转换模型(第三章基础)  - 预处理:高斯滤波降噪、CLAHE增强对比度  - 双模式分割引擎:   • SAM模型(用于水平扩散的通用分割)   • K-Means聚类(用于垂直芯吸的定向分割) 2.3 实验样本与测试协议(运动面料/针织面料/多材质织物) 第三章 水平方向水分传输的数字化表征(对应SCI第一章) 3.1 基于SAM的润湿区域动态分割- SAM模型在织物复杂纹理中的鲁棒性验证 3.2 水平传输六维指标提取与物理意义:  - WT(润湿时间)、MWA(最大润湿面积)、MWR(最大润湿速率)  - AIP(面积拐点)、MeWR(平均润湿速率)、RWR(快速润湿速率) 3.3 PCA降维与主导因子分析  - 时间效率(WT) 与 空间容量(MWA) 贡献82.74%方差 3.4 热力图可视化与性能分级(如运动面料的快速排汗能力评估) 第四章 垂直方向水分传输的数字化表征(对应SCI第二章) 4.1 垂直芯吸过程的动态阶段划分  - 快速芯吸期 vs. 慢速芯吸期(灰度-温度映射可视化) 4.2 八项几何与强度指标构建:  - 芯吸高度、扩散面积、平均灰度梯度等 4.3 基于雷达图的多维度综合评价  - 案例:蓝针织面料纵行方向得分1.45(蜂窝结构“微管道”效应) 4.4 结构-性能关联机制:  - 线圈密度 → 水分通道数量  - 蜂窝网眼 → 通道互联性 → 芯吸性能提升 第五章 双模态水分传输的综合数字化评估(对应SCI第三章) 5.1 水平+垂直双向测试协议设计 5.2 四元评价体系构建:  - 芯吸速率(动态过程)  - 水分分布指数(空间均匀性)  - 方向不对称系数(双向差异量化)  - 时间积分灰度(总量累积) 5.3 多材质织物性能对比:  - 棉/涤纶/混纺面料的双向传输特性差异 5.4 方法优势验证:  - 与传统称重法/目测法的相关性分析  - 实时性、无损性、多参数定量化案例 第六章 总结与展望 6.1 结论:  - 红外热成像+AI分割实现非接触式水分监测  - 水平/垂直双模态量化指标体系  - 结构特征(密度/网眼)与传输性能的数字化关联模型 6.2 创新点重申:  - SAM/K-Means双引擎分割 → 突破织物光学干扰  - 方向不对称系数 → 双向传输均衡性评价  - 雷达图/PCA/四元体系 → 多维度综合评估 6.3 应用展望:  - 运动服装“汗液管理图谱”数据库构建  - 医用敷料渗透性能在线检测标准  - 结合深度学习预测织物设计参数
最新发布
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值