Python机器学习案例:梵高的《星空》图片压缩

01 案例背景

本案例将奇异值分解用于处理图像压缩任务。要压缩的图片如图所示,是梵高的作品《星空》。

02 实现代码

Python实现代码如下所示:

 from PIL import Imageimport os
from numpy import *import matplotlib as mplimport matplotlib.pyplot as pltif __name__ == '__main__':
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False
A = Image.open('starry_night.jpg')
a = array(A) #转换成矩阵#由于是彩色图像,所以3通道。a的最内层数组为三个数,分别表示RGB,用来表示一个像素
u_r, sigma_r, v_r = linalg.svd(a[:, :, 0])
u_g, sigma_g, v_g = linalg.svd(a[:, :, 1])
u_b, sigma_b, v_b = linalg.svd(a[:, :, 2])
def restore1(u, sigma, v, k):m = len(u)n = len(v)a = zeros((m, n))
#重构图像
a = dot(u[:, :k], diag(sigma[:k])).dot(v[:k, :])
#上述语句等价于如下形式
#for i in range(k):
# ui = u[:, i].reshape(m, 1)
# vi = v[i].reshape(1, n)
# a += sigma[i] * dot(ui, vi)
a[a < 0] = 0
a[a > 255] = 255
return rint(a).astype('uint8')plt.figure(facecolor = 'w', figsize = (10, 10))#保留的奇异值个数依次为:1,2,...,12K = 12
for k in range(1, K + 1):print(k)R = restore1(u_r, sigma_r, v_r, k)G = restore1(u_g, sigma_g, v_g, k)
B = restore1(u_b, sigma_b, v_b, k)
I = stack((R, G, B), axis = 2)
#现实重构后的图片
plt.subplot(3, 4, k)
plt.imshow(I)
plt.axis('off')
plt.title(u'奇异值个数:%d' % k)
plt.suptitle(u'SVD与图像分解', fontsize = 20)
plt.tight_layout(0.1, rect = (0, 0, 1, 0.92))
plt.show()

03 运行结果

运行以上代码的输出结果如图所示。

到这里这个简单的实力就完成啦!

Python机器学习案例|梵高的《星空》图片压缩相关推荐

  1. python的星空绘制教程_星空系列教程-《教你绘制梵高的星空》

    引言 <星空>是印象派大师梵高的代表作,画中呈现两种线条风格,一是弯曲的长线,二是破碎的短线,二者交互运用,在静止的画布中呈现出仿佛流动着的星空的神奇景象.很多人说这是脱离现实世界的梵高的 ...

  2. python随机函数random、画、星轨_教你绘制梵高的星空

    我是极影AX摄影师Joyous周游 引言intro 有人觉得后期很麻烦,很复杂!请大家记住我传授的后期内功心法:"他山之石可以攻玉,能用工具用工具!"这一期教大家如何两个插件配合使 ...

  3. 手绘与码绘的比较——实战之梵高《星空》

    手绘与码绘的比较--实战之梵高<星空> 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近博主的老师在交互媒体设计课上布置了一个作业,是关于"运动"主题的作品创 ...

  4. python机器学习案例-支持向量机建模及评估(完整代码+实现效果)

    实现功能: python机器学习案例-支持向量机建模及评估. 实现代码: # 导入需要的库 from warnings import simplefilter simplefilter(action= ...

  5. java高清无损图片压缩

    Java高清无损图片压缩 (本文禁止转载,如需转载请联系本人:微信/QQ同号:969987665) 简单介绍 thumbnailator-0.4.5.jar 官方下载网址 语法使用(超级简单的,再也没 ...

  6. 算法可视化:把难懂的代码画进梵高的星空

    转自:大数据文摘 | bigdatadigest O'ReillyData获转载授权 独立心灵的力量被高估了--真正的力量源自于 外部能提高认知能力的帮助. --唐纳德 本文重点研究算法.然而,这里讨 ...

  7. python机器学习案例系列教程——推荐系统

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 主流的推荐系统算法大致分为两类: 基于用户行为数据的协同过滤算法 基于内容数据的过滤算法 大致而言,基于内容数据的算法适用于cold ...

  8. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法称为集成(Ensemble)学习或分类器组合(Classifier C ...

  9. python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性函数.线性回归 参考:http://blog.csdn.net/luanpeng825485697/article/details ...

最新文章

  1. Spark SQL基本操作以及函数的使用
  2. linux 路由表设置 之 route 指令详解
  3. Semaphore及其用法
  4. (pytorch-深度学习)实现稠密连接网络(DenseNet)
  5. python调用窗口找到文件,使用Python在Mac OS X中查找当前活动窗口
  6. Ubuntu16.04--code::blocks16.01 的代码拷贝到Windows 8.1--visual studio 2013 注意事项
  7. python闭包两种写法_浅析Python闭包
  8. bootstrap-multiselect.js如何动态更新select里的数据
  9. 一些特殊的电脑快捷键
  10. EASYSIZE备份
  11. 高速野蛮生长的单片机嵌入式行业,各个岗位的需求也随之增大
  12. Ableton Live 10 mac 破解版永久激活方法
  13. jemalloc 使用
  14. winserver2012设置开机自启动
  15. 【贪玩巴斯】传感器与检测技术 (一)「金属传感器三大重要传感器——电感、电容与振弦式」2021-09-28
  16. kappa一致性检验教程_R语言中的试验一致性检验分析 kappa检验和McNemar检验
  17. CLH(Craig, Landin, and Hagersten locks)机制
  18. PDF编辑方法,怎么删除PDF中的一页
  19. mysql varchar字段自动忽略尾部空格
  20. 方队 - 启发式合并 - 主席树

热门文章

  1. 关于电脑打开热点不能上网问题
  2. FFmpeg入门详解之112:RTP/RTCP协议讲解
  3. Fundamentals of Power Electronics 中文版译文
  4. php fundamentals,HZNUOJ--Programming Fundamentals
  5. 统计报表指的是什么?有什么专业的报表制作软件?
  6. Error: JAVA_HOME is not set
  7. 全志Linux下载工具,全志 Allwinner A20 机顶盒刷入原生 Debian
  8. 2023php站群程序,asp+php动态寄生虫站群程序
  9. ROS使用IDE Eclipse
  10. 一台服务器同时配置内外网地址