《电子线路设计与制作》报告目录1.绪论.............................................................12.设计任务.........................................................22.1任务描述....................................................22.2技术指标....................................................23.设计原理.........................................................33.1原理框图....................................................33.2程序流程图..................................................43.3离散余弦变换................................................53.4量化........................................................63.4Z形游程编码.................................................74.运行结果及分析...................................................84.1不同量化系数图像编解码效果比较..............................84.2不同文件类型图像编解码比较.................................105.总结............................................................126.参考文献.......................................................13附录..............................................................14《信息处理系统综合训练》报告第1页1.绪论MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平[1]。随着信息技术的发展,图像信息被广泛应用于多媒体通信和计算机系统中,但是图像数据的一个显著特点就是信息量大。具有庞大的数据量,如果不经过压缩,不仅超出了计算机的存储和处理能力,而且在现有的通信信道的传输速率下,是无法完成大量多媒体信息实时传输的,因此,为了更有效的存储、处理和传输这些图像数据,必须对其进行压缩,因此有必要对图像压缩编码进行研究。由于组成图像的各像素之间,无论是在水平方向还是在垂直方向上都存在着一定的相关性,因此只要应用某种图像压缩编码方法提取或者减少这种相关性,就可以达到压缩数据的目的。数字图像包含的冗余信息一般有以下几种:空问冗余、时间冗余、信息熵冗余、统计冗余、结构冗余、视觉冗余以及知识冗余等。图像压缩算法就是要在保证图像一定的熏建质量的同时,尽可能多的去除这些冗余信息.以达到对图像压缩的目的。随着科学技术的发展,图像压缩编码技术越来越引起人们的关注。所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合,从而达到以尽可能少的数据流来表示尽可能多的数据信息。本设计基于DCT的JPEG、PNG、BMP等格式图像编解码设计算法进行研究,介绍了编码中DCT变换、量化、游程编码等模块的原理和数学推导以及各模块的功能分析。最后应用MATLAB进行了实验仿真并分析结果得出结论。DCT变换后具有绝对的去相关性,并且变换后的矩阵从左上角到右下角频率规律的渐高。有损压缩方法利用了人类视觉对图像中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响较小,却换来了大得多的压缩比。因此舍弃高频分量保留低频分量的做法对于图像压缩具有绝对的优势。只要损失的数据不太影响人眼主观接收的效果,就可采用。DCT变换后的压缩此本设计采用经典的游程编码实现。《信息处理系统综合训练》报告第2页2.设计任务2.1任务描述基于DCT的图像编解码设计(1)获取图像;(2)采用DCT实现对图像编解码设计;(3)分析编解码性能2.2技术指标(1)可对JPEG、PNG、BMP等格式图像进行基于DCT的图像编解码;(2)为了便于分析比较,定义一个量化系数quotiety,越大压缩率越高。(3)压缩编码、量化系数统一写入存储文件compressed_data.mat,实现可移植解压。(4)观察压缩后图片大小,简便起见,分析只关心compressed_data.mat文件的大小。(5)实现DCT变换和反变换以及JPEG标准量化矩阵的量化、反量化。(6)根据DCT量化后矩阵特点,本设计编码采用Z字型扫描游程编码、解码。(7)DCT压缩前后比较,以及不同量化系数比较《信息处理系统综合训练》报告第3页3.设计原理3.1原理框图基于DCT的图像编码包括三个阶段:DCT变换、量化、编码。根据DCT量化后矩阵特点,本设计编码采用Z字型扫描游程编码、解码。首先将输入图像颜色空间转换后分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。图3-1编码过程基于DCT的图像编码包括三个阶段:译码、反量化、IDCT变换。在解码过程中,形成压缩后的图像格式,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8×8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的解压过程。图3-2解码过程压缩图像数据游程译码反量化IDCT变换恢复图像数据码表原始图像数据DCT变换量化游程编码压缩图像数据量化表码表量化表《信息处理系统综合训练》报告第4页3.2程序流程图基于DCT的图像编解码设计的MATLAB实现的流程图如图3-3所示。图3-3程序流程图输入图片分成8*8像素块,DCT变换输入量化表,对变换结果量化对量化结果进行扫描编码保存编码结果反量化反DCT变换显示恢复图像输入量化系数开始打开编码文件显示压缩图像结束《信息处理系统综合训练》报告第5页3.3离散余弦变换DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。在实验中,先将输入的原始图像分为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)的转置[5]。设计中2维DCT变换函数代码如下:functionXpq=DCT2_function(xmn,M)T=dctmtx(M);%产生二维DCT变换矩阵Xpq=T*xmn*T';设计中2维IDCT变换函数代码如下:functionxmn_resume=IDCT2_function(Xpq_resume,M)T=dctmtx(M);%生成变换矩阵xmn_resume=T'*Xpq_resume*T;%用变化矩阵的乘法代替效率极低的for求和循环《信息处理系统综合训练》报告第6页3.4量化在DCT处理中得到的64个数据中,低频分量包含了图像亮度等主要信息。在从空间域到频域的变换中,图像中的缓慢变化比快速变化更易引起人眼的注意,所以在重建图像时,低频分量的重要性高于高频分量。因而在编码时可以忽略高频分量,即减小非“0”系数的幅度以及增加“0”值系数的数目,从而达到压缩的目的,这也是量化的根据和目的,也是图像质量下降的最主要原因。在JPEG标准中,用具有64个独立元素的量化表来规定DCT域中相应的64个系数的量化精度,使得对某个系数的具体量化阶取决于人眼对该频率分量的视觉敏感程度。理论上,对不同的空间分辨率、数据精度等情况,应该有不同的量化表。不过,一般采用下图所示的量化表,可取得较好的视觉效果。量化化就是用DCT变换后的系数除以量化表中相对应的量化阶后四舍五入取整。由于量化表中左上角的值较小,而右下角的值较大,因而起到了保持低频分量、抑制高频分量的作用。为了便于分析比较,定义一个量化系数quotiety,越大压缩率越高。量化系数quotiety:程序中是将JPEG标准量化矩阵*quotiety作为真正的量化矩阵。quotiety取值为大于1的任意实数。本设计中利用函数integral_function.m和deintegral_function实现量化和反量化。图3-4灰度值量化表量化会产生误差,上表是综合大量的图像测试的实验结果,对于大部分图像都有很好的结果[3]。表中可以看出,高频部分对应的量化值大,目的就是将高频部分编程接近于0,以便以后处理。JPEG可以在压缩比和图像质量间作取舍。方法就是改变量化系数。如果量化值放大,则有更多的系数值为0,提高了压缩比。1611101624405161121214192658605514131624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399《信息处理系统综合训练》报告第7页3.4Z形扫描游程编码DCT系数量化后,构成一个稀疏矩阵,用Z(Zigzag)形扫描将其变成一维数列,将有利于游程编码。Z形扫描的顺序如图3-4。图3-5Z形扫描顺序图游程编码是一种统计编码,该编码属于无损压缩编码,是栅格数据压缩的重要编码方法。游程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。只在各行或者各列数据的代码发