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遍历文件夹并删除特定格式文件的示例
Mar 05 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
Jun 08 Python
Python常用算法学习基础教程
Apr 13 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
python的dict判断key是否存在的方法
Dec 09 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 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_SELF的安全问题
2009/09/05 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
python编写简单爬虫资料汇总
2016/03/22 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python 合并拼接字符串的方法
2020/07/28 Python
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
进程的查看和调度分别使用什么命令
2015/03/25 面试题
演讲比赛获奖感言
2014/02/02 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
文明市民先进事迹
2014/05/15 职场文书
大学生作弊检讨书
2014/09/11 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python