当前位置: 首页 > news >正文

网站降权的表现线上销售渠道

网站降权的表现,线上销售渠道,移动网站建设平台,彩票引流推广方法03、K-means聚类实现步骤与基于K-means聚类的图像压缩#xff08;2#xff09; 工程下载#xff1a;K-means聚类实现步骤与基于K-means聚类的图像压缩 其他#xff1a; 03、K-means聚类实现步骤与基于K-means聚类的图像压缩#xff08;1#xff09; 03、K-means聚类实现…03、K-means聚类实现步骤与基于K-means聚类的图像压缩2 工程下载K-means聚类实现步骤与基于K-means聚类的图像压缩 其他 03、K-means聚类实现步骤与基于K-means聚类的图像压缩1 03、K-means聚类实现步骤与基于K-means聚类的图像压缩2 K-means聚类的图像压缩 开始学习机器学习啦已经把吴恩达的课全部刷完了现在开始熟悉一下复现代码。对这个手写数字实部比较感兴趣作为入门的素材非常合适。 1、K-means聚类图像压缩基本思路 我的想法是这副图像存在许多很大一块区域的颜色相近既然相近我们就用一种颜色替代一大块区域中的各色。我们可以人为的用8、16、24、32种颜色表示整幅图像的颜色也即说明聚类的个数为8、16、24、32。 上述说法是不准确的准确的说法是这副图像虽然很大但是其有些部分颜色相近这些颜色相近的部分不论是否出自同一位置我们都可以用一种颜色进行替代。我们可以使用8、16、24、32种颜色来代替原来图中的所有颜色。 在使用K-means聚类进行图像压缩时聚类的对象仅仅是颜色而已和颜色的所在位置是否相近无关也就是说这种压缩不改变像素的大小只改变色彩的鲜艳程度而已。具体来讲聚类是在三维坐标下进行的三个坐标轴分别为R G B 的具体数值。 下面简单介绍这种压缩算法的压缩效果。对于一张RGB888的彩色图像假设其大小为1920 * 1080那么其存储所需的大小为1920*1080 * 24因为RGB分别用8位来表示因此每个像素点有24位来表示其颜色。 此处有24位来表示颜色可表示的颜色个数为2^24种假设此处使用K16的K-means聚类算法对其进行压缩则代表压缩后的图像只包含K种颜色。 那么对于每个像素点而言则需要log2K4位来进行表示此外还需要K*24的空间来存储对应的24位RGB颜色因此压缩后的总空间为1920 * 1080 * log2K K * 24。 对于一张1920 * 1080 的图像压缩比例和K的对应关系如下所示 2、K-means聚类图像压缩底层实现 此处从K-means聚类的底层原理进行实现不调用库函数 import numpy as np from matplotlib import pyplot as plt# 随机初始化聚类初始优化点 def kMeans_init_centroids(X, K):# 随机重新排序样本的索引randidx np.random.permutation(X.shape[0])# 取前K个样本作为聚类中心centroids X[randidx[:K]]return centroidsdef find_closest_centroids(X, centroids):# 获取聚类中心的数量也即K值K centroids.shape[0]# 初始化一个数组用于存储每个样本所属的聚类中心的索引idx np.zeros(X.shape[0], dtypeint)# 遍历数据集中的每个样本for i in range(X.shape[0]):# 初始化一个列表用于存储当前样本到每个聚类中心的距离distance []# 计算当前样本到每个聚类中心的距离for j in range(centroids.shape[0]):# 使用欧几里得距离公式计算样本i与聚类中心j之间的距离norm_ij np.linalg.norm(X[i] - centroids[j])distance.append(norm_ij)# 找出距离列表中的最小值该最小值对应的索引就是当前样本所属的聚类中心idx[i] np.argmin(distance)# 返回每个样本所属的聚类中心的索引数组return idxdef compute_centroids(X, idx, K):# 获取数据集X的行数m和列数n# m表示样本数量n表示每个样本的特征数量m, n X.shape# 初始化一个K x n的零矩阵用于存储K个聚类中心# K表示聚类数量n表示特征数量centroids np.zeros((K, n))# 遍历每个聚类中心for k in range(K):# 从数据集X中选择属于当前聚类k的所有样本# idx是一个长度为m的数组存储了每个样本所属的聚类中心的索引points X[idx k]# 计算属于当前聚类k的所有样本的平均值得到聚类中心# axis0表示按列计算平均值centroids[k] np.mean(points, axis0)# 返回计算得到的K个聚类中心return centroidsdef run_kMeans(X, initial_centroids, max_iters10):# 获取数据集X的行数m和列数n# m表示样本数量n表示每个样本的特征数量m, n X.shape# 获取初始聚类中心的数量KK initial_centroids.shape[0]# 将初始聚类中心赋值给centroids变量centroids initial_centroids# 将初始聚类中心复制给previous_centroids变量用于后续比较聚类中心是否发生变化previous_centroids centroids# 初始化一个长度为m的零数组用于存储每个样本所属的聚类中心的索引idx np.zeros(m)# 开始运行K-means算法最多迭代max_iters次for i in range(max_iters):# 输出当前迭代进度print(K-Means iteration %d/%d % (i, max_iters - 1))# 调用find_closest_centroids函数为数据集X中的每个样本找到最近的聚类中心并返回索引数组idx find_closest_centroids(X, centroids)# 调用compute_centroids函数根据每个样本所属的聚类中心和索引数组计算新的聚类中心centroids compute_centroids(X, idx, K)# 返回最终的聚类中心和每个样本所属的聚类中心的索引return centroids, idx# Load an image of a bird original_img plt.imread(K_means_data/bird_small.png) # Visualizing the image plt.imshow(original_img) plt.show() print(Shape of original_img is:, original_img.shape)# Divide by 255 so that all values are in the range 0 - 1 # RGB各8位将其归一化至0-1 original_img original_img / 255 # Reshape the image into an m x 3 matrix where m number of pixels # 数组的内容是图像各个点的颜色m x 3 X_img np.reshape(original_img, (original_img.shape[0] * original_img.shape[1], 3))# K就是要使用几种颜色进行表达 K 8 max_iters 10# Using the function you have implemented above. 初始化的是rgb的数值因此是包含三个元素的数组 initial_centroids kMeans_init_centroids(X_img, K)# Run K-Means - this takes a couple of minutes centroids, idx run_kMeans(X_img, initial_centroids, max_iters)# Represent image in terms of indices X_recovered centroids[idx, :]# Reshape recovered image into proper dimensions X_recovered np.reshape(X_recovered, original_img.shape)# Display original image fig, ax plt.subplots(1, 2, figsize(8, 8)) plt.axis(off)ax[0].imshow(original_img * 255) ax[0].set_title(Original) ax[0].set_axis_off()# Display compressed image ax[1].imshow(X_recovered * 255) ax[1].set_title(Compressed with %d colours % K) ax[1].set_axis_off() plt.show() 3、K-means聚类图像压缩库函数实现 此处直接使用from sklearn.cluster import KMeans来进行K-means聚类代码更加简洁了 import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读取图片 from sklearn.cluster import KMeans import numpy as nporiginal_pixel mpimg.imread(K_means_data/bird_small.png) pixel original_pixel.reshape((128 * 128, 3))kmeans KMeans(n_clusters8, random_state0).fit(pixel)newPixel [] for i in kmeans.labels_:newPixel.append(list(kmeans.cluster_centers_[i, :]))newPixel np.array(newPixel) newPixel newPixel.reshape((128, 128, 3))# Display original image fig, ax plt.subplots(1, 2, figsize(8, 8)) plt.axis(off) ax[0].imshow(original_pixel) ax[0].set_title(Original) ax[0].set_axis_off()# Display compressed image ax[1].imshow(newPixel) ax[1].set_title(Compressed with %d colours % kmeans.n_clusters) ax[1].set_axis_off() plt.show() 4、小结 虽说写了那么多但是实际上还是没有输出压缩后的图片文件。压缩后的图片的大小是1920 * 1080 * log2K的此外还需要K * 24位来存储颜色表或许没办法用普通png来表示了那应该怎么生成文件嘞 之后一定填坑。
http://www.pierceye.com/news/86492/

相关文章:

  • 制作网站的网站h5制作方法和步骤
  • 杭州中小企业网站建设小黄豆crm
  • 网站与域名的区别wordpress安装插件需要ftp
  • 温州网站建设最新报价11号在线 网站开发
  • 北京建设执业注册中心网站小程序商城功能
  • 网站建设部分费用会计科目做街舞网站的素材
  • 网站开发合同范本下载网站做邮箱
  • 广东广州快速网站制作企业招聘网站免费平台
  • 网站建设与推广员岗位职责网站建设 赚钱吗
  • 北京建站免费模板个人备案 做网站
  • 重庆专业的网站建设公司哪家好北京建筑设计网站
  • 深圳建设工程价格信息网站衡水做外贸网站建设
  • 抖音网站表白怎么做网站建设mrd文档模板
  • 小区网站建设方案怎么写最近最火的电商平台是哪个
  • 云服务器做视频网站Wordpress插件授权破解
  • 做性视频网站有哪些大数据和网站建设
  • 免费做淘客cms网站app下载地址
  • 网站建设中 敬请期待wordpress的留言功能
  • windows 2008 搭建网站做响应式网站的价格
  • 宠物网站建设策划书网站建设技巧饣金手指排名27
  • 经过学习网站开发后的心得体会网络公司是做什么
  • 中核华兴建设有限公司网站安阳县人口
  • 网站建设一般字体多大wordpress如何添加一级目录
  • 做站群的网站要备案吗简述制作h5的基本流程
  • 线上网站设计培训今天的新闻联播文字版
  • php如何做网站装饰设计软件
  • wordpress网站搬迁wordpress 机械
  • 网站建设栏目管理泰安中推网络科技有限公司
  • 为什么做这个网站反馈问题沈阳城市建设学院网站
  • 视频运营管理网站苏州网站建设与网络营销