python SVD压缩图像的实现代码


Posted in Python onNovember 05, 2019

前言

利用SVD是可以对图像进行压缩的,其核心原因在于,图像的像素之间具有高度的相关性。

代码

# -*- coding: utf-8 -*-
'''
author@cclplus
date:2019/11/3
'''
import cv2
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
#转为u8类型
def restore1(u, sigma, v, k):
  m = len(u)
  n = len(v)
  a = np.zeros((m, n))
  a = np.dot(u[:, :k], np.diag(sigma[:k])).dot(v[:k, :])
  a[a < 0] = 0
  a[a > 255] = 255
  return np.rint(a).astype('uint8')
def SVD(frame,K=10):
  a = np.array(frame)
  #由于是彩色图像,所以3通道。a的最内层数组为三个数,分别表示RGB,用来表示一个像素
  u_r, sigma_r, v_r = np.linalg.svd(a[:, :, 0])
  u_g, sigma_g, v_g = np.linalg.svd(a[:, :, 1])
  u_b, sigma_b, v_b = np.linalg.svd(a[:, :, 2])
  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 = np.stack((R, G, B), axis = 2)
  return I
   

if __name__ == "__main__":
  mpl.rcParams['font.sans-serif'] = [u'simHei']
  mpl.rcParams['axes.unicode_minus'] = False
  frame = cv2.imread("./liuyifei.bmp")
  I = SVD(frame,40)
  plt.imshow(I)
  cv2.imwrite("out.bmp",I)

原图

python SVD压缩图像的实现代码

取二十个特征值

python SVD压缩图像的实现代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python和php通信乱码问题解决方法
Apr 15 Python
Python入门篇之字典
Oct 17 Python
常用python编程模板汇总
Feb 12 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
Python语言的变量认识及操作方法
Feb 11 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
pywinauto自动化操作记事本
Aug 26 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Python页面加载的等待方式总结
Feb 28 Python
Python的collections模块真的很好用
Mar 01 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 #Python
python中for循环变量作用域及用法详解
Nov 05 #Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 #Python
pytorch torch.expand和torch.repeat的区别详解
Nov 05 #Python
Python socket模块ftp传输文件过程解析
Nov 05 #Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 #Python
Python socket模块方法实现详解
Nov 05 #Python
You might like
php不使用插件导出excel的简单方法
2014/03/04 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
Python中的闭包实例详解
2014/08/29 Python
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
详解Django中的form库的使用
2015/07/18 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
团工委书记自荐书范文
2013/12/17 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python