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 httplib模块使用实例
Apr 11 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
python pygame实现滚动横版射击游戏城市之战
Nov 25 Python
Python之Class&amp;Object用法详解
Dec 25 Python
python爬虫实现获取下一页代码
Mar 13 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
Python基础知识之变量的详解
Apr 14 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 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
一个显示天气预报的程序
2006/10/09 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
详解JS面向对象编程
2016/01/24 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
Three.js基础学习教程
2017/11/16 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
python获取糗百图片代码实例
2013/12/18 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
python实现多进程通信实例分析
2019/09/01 Python
浅析Python 条件控制语句
2020/07/15 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
软件工程专业推荐信
2013/10/28 职场文书
文言文形式的学生求职信
2013/12/03 职场文书
争论的故事教学反思
2014/02/06 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技