使用离散余弦变换的图像压缩

此示例说明如何使用离散余弦变换 (DCT) 压缩图像。该示例计算输入图像中 8×8 个数据块的二维 DCT,丢弃(设置为零)每个数据块中 64 个 DCT 系数中除 10 个以外的所有系数,然后使用每个数据块的二维逆 DCT 重构图像。该示例使用变换矩阵计算方法。

在 JPEG 图像压缩算法中使用 DCT。将输入图像分成 8×8 或 16×16 个数据块,并对每个数据块计算二维 DCT。然后对 DCT 系数进行量化、编码和传输。JPEG 接收器(或 JPEG 文件读取器)对量化的 DCT 系数进行解码,计算每个数据块的逆二维 DCT,然后将这些数据块一起放回单个图像中。对于典型图像,许多 DCT 系数的值接近于零。可以丢弃这些系数,而不会严重影响重构图像的质量。

将图像读入工作区,并将其转换为 double 类。

I = imread('cameraman.tif');

I = im2double(I);

计算图像中 8×8 个数据块的二维 DCT。函数 dctmtx 返回 N×N DCT 变换矩阵。

T = dctmtx(8);

dct = @(block_struct) T * block_struct.data * T';

B = blockproc(I,[8 8],dct);

丢弃每个数据块中 64 个 DCT 系数的大部分系数,仅保留 10 个。

mask = [1 1 1 1 0 0 0 0

1 1 1 0 0 0 0 0

1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0];

B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data);

使用每个数据块的二维逆 DCT 重构图像。

invdct = @(block_struct) T' * block_struct.data * T;

I2 = blockproc(B2,[8 8],invdct);

并排显示原始图像和重构图像。尽管几乎 85% 的 DCT 系数被丢弃,导致重构图像的质量有所下降,但它仍是清晰可辨的。

imshow(I)

figure

imshow(I2)

快速余弦变换matlab,离散余弦变换 - MATLAB Simulink - MathWorks 中国相关推荐

  1. 如何建立分类模型matlab,创建简单模型 - MATLAB Simulink - MathWorks 中国

    创建简单模型 您可以使用 Simulink® 来对系统建模,然后仿真该系统的动态行为.本教程中创建简单模型所使用的基本方法也适用于创建更复杂的模型.此示例对简化的汽车运动进行仿真.当踩下油门踏板时,汽 ...

  2. matlab离散傅立叶变换的应用,离散傅里叶变换 - MATLAB Simulink - MathWorks 中国

    离散傅里叶变换 离散傅里叶变换(即 DFT)是数字信号处理的首要工具.该产品的基础是快速傅里叶变换 (FFT),这是一种可减少执行时间的 DFT 计算方法.许多工具箱函数(包括 Z 域频率响应.频谱和 ...

  3. matlab目标支持包安装问题,配置系统目标文件 - MATLAB Simulink - MathWorks 中国

    配置系统目标文件 要对模型进行配置以用于代码生成,请按照选择支持代码生成的求解器和从 STF 浏览器中选择系统目标文件中的步骤进行操作.选择系统目标文件时,其他模型配置参数会相应更改,以满足执行环境的 ...

  4. 如何用MATLAB绘制真值表,编写真值表 - MATLAB Simulink - MathWorks 中国

    编写真值表 在创建新真值表后,您就可以对它进行编写以根据您的设定执行.要编写真值表,您需要添加条件.决策和动作.有关创建真值表的详细信息,请参阅使用真值表对组合逻辑建模. 真值表仅在 Simulink ...

  5. matlab memory 代数环,代数环概念 - MATLAB Simulink - MathWorks 中国

    代数环求解器的工作原理 当模型中包含代数环时,Simulink 在每个时间步使用非线性求解器解算代数环.求解器执行迭代以确定代数约束的解(如果存在).因此,有代数环的模型的运行速度可能比没有代数环的模 ...

  6. matlab lmtool,借用许可证 - MATLAB Simulink - MathWorks 中国

    确定当前借用了哪些许可证 网络许可证管理器提供了可用于在网络配置中监控所借用的许可证状态的工具.您可以使用 LMTOOLS 应用程序或 lmstat 命令. 在 Windows 系统上使用 LMTOO ...

  7. matlab的许可证文件路径,网络许可证文件 - MATLAB Simulink - MathWorks 中国

    在网络许可证文件内 网络许可证文件是一种特殊格式的 ASCII 文本文件,其中包含您有权运行的每个产品的加密产品密码.每个产品密码用于确认适合该产品的密钥数.网络许可证管理器可授予或拒绝对某产品的访问 ...

  8. matlab 数字转化为文字,将文本转换为数值 - MATLAB Simulink - MathWorks 中国

    双精度值 将文本转换为双精度值的推荐方法是使用 str2double 函数.它可以转换字符向量.字符串数组和字符向量元胞数组. 例如,使用单引号创建字符向量,并将其转换为它所表示的数字. X = st ...

  9. 初始化稀疏矩阵 matlab,访问稀疏矩阵 - MATLAB Simulink - MathWorks 中国

    稀疏矩阵运算中的索引 由于稀疏矩阵是以压缩稀疏列格式存储的,因此为稀疏矩阵进行索引的相关成本与为满矩阵进行索引的相关成本不同.在只需更改稀疏矩阵中的若干元素时,这类成本可忽略不计,因此,在这类情况下, ...

最新文章

  1. Code Review工具Jupiter介绍
  2. 权威发布:2020软科中国最好学科排名
  3. 【OpenCV 例程200篇】99. 修正阿尔法均值滤波器
  4. 关于数据库的水平切分和垂直切分的一些概念(转)
  5. 7 练习1 -基础练习
  6. PCA 主成分分析Principal components analysis
  7. 2018: 跑图(深搜)
  8. Global Mapper 将散点数据转为grd或者其他各种格式数据
  9. test韩顺平校内网
  10. 让html 自动换行,怎样让HTML 表格中内容自动换行??
  11. 如何下载NCBI的ftp数据
  12. Date类的getDay()和getDate()方法
  13. 弹性云服务器有什么用
  14. SWUST OJ题目解析(C语言):160促销计算
  15. vue 特殊路由设计
  16. 傲慢与偏见之 - 山寨与创新
  17. STM32学习笔记(八)丨ADC模数转换器(ADC单、双通道转换)
  18. 蓝桥杯:幼儿园买玩具
  19. 程序员之 //是什么意思
  20. 【Follow me】总结

热门文章

  1. C语言用fun函数求平均值,下列给定程序中,函数fun()的功能是:给定n个实数,输出平均值,并统计平均..._考试资料网...
  2. 顶点片元Shader(Unity)
  3. Unity录屏插件Recorder
  4. JavaScript 介绍
  5. android word分页,控制分页
  6. 代码随想录训练营day1
  7. HDU 2448 最短路+KM匹配
  8. CUDA C程序没报错 结果不对 找不到问题 的一种可能的问题hhhh....
  9. RPA技术可行性方案确认-辅助手册
  10. 2019全国大学生软件测试比赛,原创 安恒信息圆满支撑“2019全国大学生软件测试大赛”...