实验原理
聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括数学,计算机科学,统计学,生物学和经济学。
实验数据

实验步骤
- 题目:使用聚类算法进行图片压缩
现在我们获得了一张图片flower.jpg,我们希望使用聚类算法对图像进行压缩,其核心思想是通过聚类将颜色表示数量减少。例如,传统RGB,每个通道0~255(8 bits),则可以表示16777216 (24 bits)种颜色,通过聚类可以减少到16种颜色。- STEP1:完成compress_image函数,该函数实现图片压缩功能,思想是将每个像素作为一个元素进行聚类,然后使用每个类别的质心数值替换原像素数据,以此减少其颜色个数。
该函数参数img是图片传入的接口,因此我们需要知道变量img的数据结构,请自行查看。- 问题一:代码实现,将img结构进行转换即每个像素作为一个元素,使之能符合聚类算法数据输入的要求。完成后创建KMeans聚类模型并进行训练。
- 问题二:代码实现,分别获取每个数据聚类后的label,以及每个label的质心的值cluster_centers_.squeeze。
- 问题三:使用质心的数值代替原数据的label值,那么我们将获得一个新的图像。
提示,使用numpy的choose函数进行进行质心值的代替,reshape函数回复原图片的数据结构,并返回结果。
- STEP2:创建plot_image函数打印图片。
- STEP3:读入图片,设置压缩率,实现压缩。
完整代码
1、导包
import numpy as np
import imageio
from sklearn import cluster
import matplotlib.pyplot as plt
2、定义compress_image函数,压缩图片
# step1
# 定义compress_image函数,压缩图片
def compress_image(img,num_clusters):
X = img.reshape((-1,1))
print("\nX的数据:\n",X

该文介绍了一个利用聚类算法(KMeans)对图像进行压缩的实验。首先,通过将图片像素转化为一维数组,然后应用KMeans进行聚类。接着,用聚类中心替换像素值以减少颜色数量,实现图像压缩。最后,展示了如何读取和显示图像,以及处理压缩过程中的数据范围问题。
最低0.47元/天 解锁文章
4095

被折叠的 条评论
为什么被折叠?



