基于DCT的图像编解码设计

上传人:油条 文档编号:33227478 上传时间:2018-02-14 格式:DOCX 页数:23 大小:526.01KB
返回 下载 相关 举报
基于DCT的图像编解码设计_第1页
第1页 / 共23页
基于DCT的图像编解码设计_第2页
第2页 / 共23页
基于DCT的图像编解码设计_第3页
第3页 / 共23页
基于DCT的图像编解码设计_第4页
第4页 / 共23页
基于DCT的图像编解码设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《基于DCT的图像编解码设计》由会员分享,可在线阅读,更多相关《基于DCT的图像编解码设计(23页珍藏版)》请在金锄头文库上搜索。

1、1. 绪论MATLAB 是由美国 mathworks 公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如 C 、Fortran ) 的编辑模式,代表了当今国际科学计算软件的先进水平。随着信息技术的发展,图像信息被广泛应用于多媒体通信和计算机系统中,但是图像数据的一个显著特点就是信息量大。具有庞大的数据量,如果不经过压缩,不仅超出了计

2、算机的存储和处理能力,而且在现有的通信信道的传输速率下,是无法完成大量多媒体信息实时传输的,因此,为了更有效的存储、处理和传输这些图像数据,必须对其进行压缩,因此有必要对图像压缩编码进行研究。由于组成图像的各像素之间,无论是在水平方向还是在垂直方向上都存在着一定的相关性,因此只要应用某种图像压缩编码方法提取或者减少这种相关性,就可以达到压缩数据的目的。数字图像包含的冗余信息一般有以下儿种: 空问元余、时间冗余、信息;脑冗余、统计冗余、结构冗余、视觉冗余以及知识冗余等。图像压缩算法就是要在保证图像一定的熏建质量的同时,尽可能多的去除这些元余信息.以达到对图像压缩的目的。随着科学技术的发展,图像压

3、缩编码技术越来越引起人们的关注。所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合,从而达到以尽可能少的数据流来表示尽可能多的数据信息。本设计基于 DCT 的 JPEG、PNG、BMP 等格式图像编解码设计算法进行研究,介绍了编码中 DCT 变换、量化、游程编码等模块的原理和数学推导以及各模块的功能分析。最后应用 MATLAB 进行了实验仿真并分析结果得出结论。DCT 变换后具有绝对的去相关性,并且变换后的矩阵从左上角到右下角频率规律的渐高。有损压缩方法利用了人类视觉对图像中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据, 但是所损失的部

4、分对理解原始图像的影响较小,却换来了大得多的压缩比。因此舍弃高频分量保留低频分量的做法,对于图像压缩具有绝对的优势。只要损失的数据不太影响人眼主观接收的效果,就可采用。DCT 变换后的压缩此本设计采用经典的游程编码实现。2. 设计任务2. 1 任务描述基于 DCT 的图像编解码设计(1) 获取图像;( 2) 采用 DCT 实现对图像编解码设计;(3) 分析编解码性能2.2 技术指标(1)可对 JPEG、PNG、BMP 等格式图像进行基于 DCT 的图像编解码。(2) 为了便于分析比较,定义一个量化系数 quotiety,越大压缩率越高。(3) 压缩编码、量化系数统一写入存储文件 compres

5、sed_data.mat,实现可移植解压。( 4 ) 观察压缩后图片大小,简便起见,分析只关心 compressed_data.mat 文件的大小。( 5 ) 实现 DCT 变换和反变换以及 JPEG 标准量化矩阵的量化、反量化。( 6 ) 根据 DCT 量化后矩阵特点,本设计编码采用 Z 字型扫描游程编码、解码。(7) DCT 压缩前后比较,以及不同量化系数比较。3. 设计原理3. 1 原理框图基于 DCT 的图像编码包括三个阶段: DCT 变换、量化、编码。根据 DCT量化后矩阵特点,本设计编码采用 Z 字型扫描游程编码、解码。首先将输入图像颜色空间转换后分解为 8 X 8 大小的数据块,

6、 然后用正向二维 DCT 把每个块转变成 64 个 DCT 系数值,其中 1 个数值是直流(DC)系数,即 8X8 空域图像子块的平均值,其余的 63 个是交流(AC)系数,接下来对 DCT 系数进行量化,最后将变换得到的量化的 DCT 系数进行编码和传送, 这样就完成了图像的压缩过程。图 3- 1 编码过程基于 DCT 的图像编码包括三个阶段: 译码、反量化、IDCT 变换。在解码过程中,形成压缩后的图像格式, 先对己编码的量子化的 DCT 系数进行解码,然后求逆量化并把 DCT 系数转化为 8 X 8 样本像块(使用二维 DCT 反变换),最后将操作完成后的块组合成一个单一的图像。这样,就

7、完成了图像的解压过程。图 3-2 解码过程3.2 程序流程图基于 DCT 的图像编解码设计的 MATLAB 实现的流程图如图 3-3 所示。原始图像数据 DCT 变 量 化 换量化 游程编码 压缩图像数据码表量化表压缩图像数据 游程译码 反量化 IDCT 变 量 化 换原始图像数据码表 量化表图 3-3 程序流程图开始输入图片输入量化系数分成 8*8 像素块,DCT 变换输入量化表,对变换结果量化对量化结果进行扫描编码保存编码结果显示压缩图像打开编码文件反量化反 DCT 变换 输 入 量 化 表 , 对 变 换 结 果 量 化 输 入 量 化 表 , 对 变 换 结 果 量 化 显示恢复图像结

8、束3. 3 离散余弦变换DCT 变换利用傅立叶变换的性质。采用图像边界裙翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT 编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经 DCT 变换以后,DCT 系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT 变换

9、在图像压缩中非常有用,是有损图像压缩国际标准 JPEG 的核心。从原理上讲可以对整 l 幅图像进行 DCT 变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为 8*8 或 16*16 块,然后再对每个图像块进行二维 DCT 变换,接着再对 DCT 系数进行量化、编码和传输;接收者通过对量化的 DCT 系数进行解码,并对每个图像块进行的二维 DCT 反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数 DCT 系数值都接近于 0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用 DCT 进行图像压

10、缩确实可以节约大量的存储空间。在实验中,先将输入的原始图像分为 8*8 的小块,然后再对每个块进行二维 DCT 变换。二维离散余弦变换可以写成矩阵式(F(u,v)=(A)(f(x,y)(A)(f(x,y)=(A)(F(u,v)(A)式中, (f(x,y)是空间域数据阵列, (F(u,v)是变换系数阵列, (A)是系数阵列,变换矩阵(A)是(A) 的转置。设计中 2 维 DCT 变换函数代码如下:function Xpq=DCT2_function(xmn,M)T=dctmtx(M); %产生二维 DCT 变换矩阵Xpq=T*xmn*T;设计中 2 维 IDCT 变换函数代码如下:functio

11、n xmn_resume=IDCL_function(Xpq_resume,M)T=dctmtx(M); %生成变换矩阵xmn_resume=T*Xpq_resume*T; %用变化矩阵的乘法代替效率极低的for 求和循环3.4 量化在 DCT 处理中得到的 64 个数据中,低频分量包含了图像亮度等主要信息。在从空间域到频域的变换中,图像中的缓慢变化比快速变化更易引起人眼的注意, 所以在重建图像时,低频分量的重要性高于高频分量。因而在编码时可以忽略高频分量,即减小非 0系数的 l 幅度以及增加 0 值系数的数目,从而达到压缩的目的,这也是量化的根据和目的,也是图像质量下降的最主要原因。在 JP

12、EG 标准中,用具有 64 个独立元素的量化表来规定 DCT 域中相应的64 个系数的量化精度,使得对某个系数的具体量化阶取决于人眼对该频率分量的视觉敏感程度。理论上, 对不同的空间分辨率、数据精度等情况,应该有不同的量化衰。不过, 一般采用下图所示的量化表,可取得较好的视觉效果。量化化就是用 DCT 变换后的系数除以量化表中相对应的量化阶后四舍五入取整。由于量化表中左上角的值较小,而右下角的值较大, 因而起到了保持低频分量、抑制高频分量的作用。为了便于分析比较,定义一个量化系数 quotiety,量化系数越大,压缩率越高。量化系数 quotiety 在程序中是将 JPEG 标准量化矩阵*qu

13、otiety 作为真正的量化矩阵。quotiety 取值为大于 1 的任意实数。本设计中利用函数integral_function.m 和 deintegral_function 实现量化和反量化。16 11 10 16 24 40 51 6112 12 14 19 26 58 60 5514 13 16 24 40 57 69 5614 17 22 29 51 87 80 6218 22 37 56 68 109 103 7724 35 55 64 81 104 113 9249 64 78 87 103 121 120 10172 92 95 98 112 100 103 99图 3-4

14、灰皮值量化表量化会产生误差,上表是综合大量的图像测试的实验结果,对于大部分图像都有很好的结果匀。表中可以看出,高频部分对应的量化值大,目的就是将高频部分编程接近于 0,以便以后处理。JPEG 可以在压缩比和图像质量问作取舍。方法就是改变量化系数。如果量化值放大,则有更多的系数值为 0,提高了压缩比。3.5 Z 形扫描游程编码DCT 系数量化后,构成一个稀疏矩阵,用 Z CZigzag) 形扫描将其变成一维数列,将有利于游程编码。Z 形扫描的顺序如图 3-4。图 3-5 Z 形扫描顺序图游程编码是一种统计编码,该编码属于无损压缩编码,是栅格数据压缩的重要编码方法。游程编码的基本原理是: 用一个符

15、号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。只在各行或者各列数据的代码发生变化时,一次记录该代码及相同代码重复的个数,从而实现数据的压缩。游程编码运算简单,适用于机器存储容量小,数据需大量压缩,而又要避免复杂的编码和解码运算,增加处理和操作时间的情况。本设计中利用两个函数Run_length_coding_function.m 和 Run_length_decoding_function.m 分别实现 Z 字形游程的编码解码。由于 DCT 变换后右下角频率高,左上角频率分量低。而人眼对高频成分识别小,对低频成分识别大。量化后 0 主要集中在右下方,于是 Z 字形扫描对于游

16、程编码才有利。主要思路是将原矩阵的每个元素变化为用两个元素a,b表示, a 表示在这个元素之前 0 的个数, b 表示这个元素是什么。当发现之后的多有元素都是 0 的时候用 0 , 0作为结束标志。这样, 只要矩阵中 0 的个数超过一半,编码后数据量就比原来小。由于在 8*8 中连续出现不为 0 的相同元素的儿率极小, 因此运用游程编码的思想时只考虑出现的 0 的个数。4. 运行结果及分析4. 1 不同量化系数图像编解码效果比较量化系数 quotiety: 程序中是将 Jpeg 标准量化矩阵* quotiety 作为真正的量化矩阵。quotiety 取值为大于 1 的任意实数。下面以 jpg 格式图像为标准,取不同的量化系数 quotiety 进行比较, 原始图像大小为 84.8KB: 像像像像图 4-1 原始图像像像像像像图 4-2 quotiety=1 时恢复图像此时压缩编码文件为 compressed_data 大小为 2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号