特征值分解和奇异值分解

这篇文章详细介绍了奇异值分解和特征值分解的内容https://www.cnblogs.com/endlesscoding/p/10033527.html

下面的图也能看出图片能压缩的原理在哪,主要是三个矩阵的大小是如何变小的

 

 

下面上压缩图像的代码:

复制代码
 1 import numpy as np
 2 from scipy import ndimage
 3 import matplotlib.pyplot as plt
 4 
 5 
 6 def pic_compress(k, pic_array):
 7     u, sigma, vt = np.linalg.svd(pic_array)
 8     sig = np.eye(k) * sigma[: k]
 9     new_pic = np.dot(np.dot(u[:, :k], sig), vt[:k, :])  # 还原图像
10     size = u.shape[0] * k + sig.shape[0] * sig.shape[1] + k * vt.shape[1]  # 压缩后大小
11     return new_pic, size
12 
13 
14 filename = "./Data/pic1.jpg"
15 ori_img = np.array(ndimage.imread(filename, flatten=True))
16 new_img, size = pic_compress(30, ori_img)
17 print("original size:" + str(ori_img.shape[0] * ori_img.shape[1]))
18 print("compress size:" + str(size))
19 fig, ax = plt.subplots(1, 2)
20 ax[0].imshow(ori_img)
21 ax[0].set_title("before compress")
22 ax[1].imshow(new_img)
23 ax[1].set_title("after compress")
24 plt.show()
复制代码

 

 

posted @   你的雷哥  阅读(354)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
历史上的今天:
2019-08-13 吴恩达深度学习测试题与编程题及答案汇总
2019-08-13 吴恩达《深度学习》第一门课(2)神经网络的编程基础
2019-08-13 吴恩达《深度学习》第一门课(1)深度学习引言
2018-08-13 爬取网页
点击右上角即可分享
微信分享提示