zoukankan      html  css  js  c++  java
  • 第九次作业——K-means算法应用:图片压缩

    一.读取一张示例图片或自己准备的图片,观察图片存放数据特点。

    根据图片的分辨率,可适当降低分辨率。

    再用k均值聚类算法,将图片中所有的颜色值做聚类。

    然后用聚类中心的颜色代替原来的颜色值。

    形成新的图片。

    观察原始图片与新图片所占用内存的大小。

    将原始图片与新图片保存成文件,观察文件的大小。

    #读取一张示例图片或自己准备的图片,观察图片存放数据特点
    from sklearn.datasets import load_sample_image 
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    import numpy as np
    
    #读取图片
    china = load_sample_image("china.jpg")
    plt.imshow(china)
    plt.show()
    print(china.shape)#观察图片存放数据特点
    china
    
    #根据图片的分辨率,可适当降低分辨率
    image = china[::3, ::3] 
    X = image .reshape(-1,3)
    plt.imshow(image)
    plt.show()
    print(image.shape,X.shape)
    
    #再用k均值聚类算法,将图片中所有的颜色值做聚类。
    n_colors =64 #(256,256,256)
    model = KMeans(n_colors) 
    
    #每个点的颜色分类,0-63
    labels = model.fit_predict(X)
    
     #64个聚类中心,颜色值
    colors = model.cluster_centers_ 
    
     #用聚类中心的颜色代替原来的颜色值
    new_image=colors[labels] 
    
    #形成新的照片
    new_image=new_image.reshape(image.shape) 
    plt.imshow(new_image.astype(np.uint8))
    plt.show()
    
    #观察原始图片与新图片所占用内存的大小,将原始图片与新图片保存成文件,观察文件的大小。
    import matplotlib.image as img
    img.imsave('F:\china.jpg',china)
    img.imsave('F:\china_zip.jpg',image)

    运行结果

    二.理解贝叶斯定理:

    • M桶:7红3黄
    • N桶:1红9黄
    • 现在:拿出了一个红球
    • 试问:这个红球是M、N桶拿出来的概率分别是多少?

  • 相关阅读:
    字符编码 进制转换
    Android工具HierarchyViewer 代码导读(1) 功能实现演示
    jQuery中的bind(), live(), on(), delegate()
    [转]ActionScript3.0中XML处理方法
    Pane和Panel的区别
    [转]在命令行中编译运行Java Applet
    [转]关于五险一金,你知道多少?
    [转]ActionScript3.0对象深复制
    [转]用Flashbug调试Flash
    [转]用EditPlus搭建简易的Java开发环境
  • 原文地址:https://www.cnblogs.com/didi-l/p/9921664.html
Copyright © 2011-2022 走看看