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合并文本文件示例
Feb 07 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
Django实现表单验证
Sep 08 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
使用Python函数进行模块化的实现
Nov 15 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
Python学习之os模块及用法
Jun 03 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
python 发送get请求接口详解
Nov 17 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
mysql建立外键
2006/11/25 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
索趣科技的答案
2007/02/07 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
Python之eval()函数危险性浅析
2014/07/03 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
python 6种方法实现单例模式
2020/12/15 Python
韩国商务邀请函
2014/01/14 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
师德承诺书2015
2015/04/28 职场文书
光荣之路观后感
2015/06/12 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书