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字典序问题实例
Sep 26 Python
为python设置socket代理的方法
Jan 14 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
Python自定义简单图轴简单实例
Jan 08 Python
python实现抖音视频批量下载
Jun 20 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
django中的数据库迁移的实现
Mar 16 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
python pyhs2 的安装操作
Apr 07 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
PHP编程函数安全篇
2013/01/08 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
社区志愿者活动总结
2014/06/26 职场文书
四风问题对照检查材料
2014/09/22 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
社区低保工作总结2015
2015/07/23 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
求职信如何撰写?
2019/05/22 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js