参考:https://blog.csdn.net/James_Ray_Murphy/article/details/79163705

离散余弦变换的特征是将物体信息能量汇聚到低频成分,高频成分接近0,因此被用于语音和图像处理领域。

在图像压缩存储中,可以将原始图像进行二维离散余弦变换,然后存储含有信息的低频部分的数据。在图像还原过程中,通过这些携带信息的低频数据就可以还原原始大小的图像。

# -*- coding: -utf-8 -*-import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('d:/bgs.jpg', 0)  # 读取图片,
img1 = img.astype('float')  # 将uint8转化为float类型
img_dct = cv2.dct(img1)  # 进行离散余弦变换
img_dct_log = np.log(abs(img_dct))  # 进行log处理
img_recor = cv2.idct(img_dct)  # 进行离散余弦反变换
print(img_dct.shape)
zip_len=300
# 图片压缩,只保留100*100的数据
recor_temp = img_dct[0:zip_len, 0:zip_len]
recor_temp2 = np.zeros(img.shape)
recor_temp2[0:zip_len, 0:zip_len] = recor_temp
# 压缩图片恢复
img_recor1 = cv2.idct(recor_temp2)# 显示
plt.subplot(221)
plt.imshow(img)
plt.title('original')plt.subplot(222)
plt.imshow(img_dct_log)
plt.title('dct transformed')plt.subplot(223)
plt.imshow(img_recor)
plt.title('idct transformed')plt.subplot(224)
plt.imshow(img_recor1)
plt.title('idct transformed2')plt.show()
效果图如下:

Python二维离散余弦变换图像压缩应用(基于OpenCV)相关推荐

  1. 二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现

    二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现 实验目标 对一个8x8的矩阵进行DCT和IDCT然后在观察前者和后者的变化 实验准备 理论基础 二维离散余弦变换 F ( u , ...

  2. python如何使用图片做背景_用Python批量给照片换底色,基于opencv模块

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  3. 用Python批量给照片换底色,基于opencv模块

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  4. python二维向量运算模拟_python二维向量运算_[VB.NET][C#]二维向量的基本运算

    前言 在数学中,几何向量是指具有大小和方向的几何对象. 在编程中,向量有着广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 第一节 构造函数 通过创建一个二维向量的类(或结构体),实现向量的表 ...

  5. python画二维散点图-基于python 二维数组及画图的实例详解

    1.二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组 import numpy as np list1=[[1.73,1.68,1.71 ...

  6. python画二维数组散点图_基于python二维数组及画图的实例详解

    基于python二维数组及画图的实例详解 下面小编就为大家分享一篇基于python 二维数组及画图的实例详解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 1.二维数组取值 注:不管 ...

  7. 在OpenCV环境下写的灰度图像二维傅里叶换,幅值计算,频谱平移和将数值归一化到0到255区间的四个函数

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 灰度图像的二维傅里叶变换(cv_gray_fft ...

  8. python给矩阵赋值_解决Python二维数组赋值问题

    解决Python二维数组赋值问题 当我们采用s=[[0]*3]*2初始化一个数组,然后对s[0][0]进行赋值,改变的是第一列所有的值.因为用s = [[0]*3]*2 初始化数组,他表示的是指向这个 ...

  9. python 二维列表_python二维列表

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一:使用 lambda 关键词辅助对二维列表进行排序,lambda的使用方法 ...

最新文章

  1. 自己珍藏一些有趣的Python子程序
  2. C# Socket使用代理 及 Http协议、Socks5协议
  3. 【设计模式】业务代表模式
  4. 编解码技术学习网站汇总
  5. C++ STL 算法精选之查找篇
  6. C++:42---类的内存大小
  7. [NOI2013]树的计数
  8. 在RHEL5下构建Nessus漏洞检测系统
  9. 动手学深度学习Pytorch Task03
  10. Android GsmCellLocation.getCellLocation返回NULL
  11. javase和java区别_javase和java有什么区别
  12. ts 使用infer 推断类型
  13. 2020科目一考试口诀_2020年驾驶员科目一满分口诀
  14. Caché Global
  15. 如何用 R 绘制动态统计图?
  16. 生物化学 电阻抗成像OpenEIT,Dbar算法,数据集等(暂记)
  17. check the manual that corresponds to your MySQL server version for the right syntax to use near
  18. TCP/IP篇(1)--协议模型
  19. 《高效程序员的45 个习惯》读书笔记
  20. 音箱选购必备20秘诀

热门文章

  1. Linux内存管理原理
  2. windows7怎么安装python库_如何在Windows 7安装Python2.7
  3. Design Pattern - Composite(C#)
  4. java jdwp如何关闭_蚀-本机方法中的致命错误:JDWP没有初始化传输,jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197)...
  5. mysql数据库as表恢复_使用flashback database找回被误删除表空间
  6. SpringBoot+tomcat+web
  7. ise怎么更改编辑器_Win7系统时间更改不了的解决方法
  8. 同花顺python_python的解析库pyquery解析并读取同花顺网站的焦点新闻
  9. 四阶龙格库塔法的基本思想_龙格库塔积分算法
  10. 天才安全大佬即将拿股票前被拼多多辞退,原因是不愿意做黑客攻击?