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 相关文章推荐
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Python生成密码库功能示例
May 23 Python
Django开发的简易留言板案例详解
Dec 04 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
python实现LRU热点缓存及原理
Oct 29 Python
python中with用法讲解
Feb 07 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 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循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
Javascript 继承实现例子
2009/08/12 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
详解Python中import机制
2020/09/11 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
性能测试工程师的面试题
2015/02/20 面试题
大学生个人求职信范文
2013/09/21 职场文书
印刷工程专业应届生求职信
2013/09/29 职场文书
大二自我鉴定
2014/01/31 职场文书
内衣营销方案
2014/03/15 职场文书
热门专业求职信
2014/05/24 职场文书
交通安全标语
2014/06/06 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
贷款收入证明范本
2015/06/12 职场文书
初中英语教学反思范文
2016/02/15 职场文书