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中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
python requests 测试代理ip是否生效
Jul 25 Python
对Python中内置异常层次结构详解
Oct 18 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python日志处理模块logging用法解析
May 19 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
python利用线程实现多任务
Sep 18 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(8) php 数组
2010/03/05 PHP
PHP代码优化的53个细节
2014/03/03 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
使用python为mysql实现restful接口
2018/01/05 Python
pyhton列表转换为数组的实例
2018/04/04 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
python连接mysql有哪些方法
2020/06/24 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
成品仓管员工作职责
2013/12/29 职场文书
商业活动邀请函
2014/02/04 职场文书
青春寄语大全
2014/04/09 职场文书
销售助理岗位职责
2015/02/11 职场文书
专家推荐信怎么写
2015/03/25 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
报案材料怎么写
2015/05/25 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书