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模块学习 re 正则表达式
May 19 Python
python操作摄像头截图实现远程监控的例子
Mar 25 Python
Python中类的继承代码实例
Oct 28 Python
Python爬取读者并制作成PDF
Mar 10 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
关于Python 3中print函数的换行详解
Aug 08 Python
selenium+python 对输入框的输入处理方法
Oct 11 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
python中类与对象之间的关系详解
Dec 16 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 header示例代码(推荐)
2010/09/08 PHP
php阳历转农历优化版
2016/08/08 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
vue 自定义右键样式的实例代码
2019/11/06 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
Python设计模式之代理模式简单示例
2018/01/09 Python
python构建基础的爬虫教学
2018/12/23 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
Python列表list操作相关知识小结
2020/01/29 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
生产部主管岗位职责
2014/01/06 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
学习考察心得体会
2014/09/04 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
物业公司管理制度
2015/08/05 职场文书
新员工入职感想
2015/08/07 职场文书
初中班干部工作总结
2015/08/10 职场文书
珍爱生命主题班会
2015/08/13 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
部分武汉产收音机展览
2022/04/07 无线电