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压缩和解压缩zip文件
Feb 14 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
python中的decorator的作用详解
Jul 26 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
浅谈Python 递归算法指归
Aug 22 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
yolov5返回坐标的方法实例
Mar 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
Terran历史背景
2020/03/14 星际争霸
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
下载给定网页上图片的方法
2014/02/18 Python
Python中的类与对象之描述符详解
2015/03/27 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
Viking比利时:购买办公用品
2019/10/30 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
证婚人经典证婚词
2014/01/09 职场文书
老龄工作先进事迹
2014/08/15 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
内乡县衙导游词
2015/02/05 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
Golang Web 框架Iris安装部署
2022/08/14 Python