《通信工程应用技术综合训练与实习》1课程设计任务书学生姓名:王晓飞专业班级:通信1001班指导教师:魏洪涛工作单位:信息工程学院题目:通信工程应用技术综合训练与实习初始条件:MATLAB软件平台设计任务与要求:图像通信之前需要进行数据量压缩,编程实现JPEG图像压缩标准的主要环节,完成压缩和解压过程,计算压缩比。要求:将彩色图像进行颜色空间转换、对不同的颜色分量进行不同的采样、对于3个分量进行8×8的DCT变换、对DCT系数矩阵按照JPEG推荐的量化表进行量化;对量化后的系数进行Z形扫描,最后进行熵编码,形成码流,计算比特数,和压缩比。解压从量化后的DCT系数表开始逆向进行。时间安排:序号设计内容所用时间1根据设计任务,分析电路原理,确定实验方案2天2根据实验条件进行电路的测试,并对结果进行分析7天3撰写课程设计报告1天合计2周指导教师签名:年月日系主任(或责任教师)签名:年月日《通信工程应用技术综合训练与实习》2目录摘要...................................................31概述.................................................51.1图像压缩编码技术.......................................51.2离散余弦变换(DCT).....................................51.3MATLAB及其图像处理工具箱................................62基于DCT的图像压缩编码算法...........................62.1基于DCT的图像压缩编码算法的过程...........................62.2基于DCT的JPEG图像压缩编码步骤...........................72.2.1颜色空间的转换和采样.................................72.2.2二维离散余弦变换....................................82.2.3DCT系数的量化......................................92.2.4量化系数的编排....................................102.2.5DC系数的编码......................................112.2.6AC系数的编码......................................112.2.7组成位数据流......................................123基于DCT图像压缩的MATLAB实现.......................134matlab仿真结果......................................145心得体会............................................15参考文献..............................................17附录.................................................18《通信工程应用技术综合训练与实习》3摘要随着科学技术的发展,图像压缩技术越来越引起人们的关注,本论文研究了基于DCT变换的JPEG图像压缩编码算法。首先说明了图像压缩在现代通信中的必要性和可行性以及MATLAB图像处理工具箱的相关知识,然后重点介绍了JPEG压缩编码的具体过程和方法,详细介绍了编码中DCT变换、量化、熵编码和霍夫曼编码等模块的原理。最后分析了图像经过不同压缩比时,图像质量的变化情况。基于DCT变换的JPEG图像压缩方法简单、方便,既能保证有较高的压缩比,又能保证有较好的图像质量,是一种非常有用的图像压缩方法。关键词:图像压缩技术DCT变换JPEG图像MATLAB图像处理工具箱《通信工程应用技术综合训练与实习》4AbstractWiththedevelopmentofscienceandtechnology,imagecompressiontechnologyhasdrawnincreasingattention,thisthesisDCT-basedJPEGimagecompressionalgorithm.TheoutsetthattheimagecompressioninthemoderncommunicationsandthenecessityandfeasibilityofMATLABimageprocessingtoolboxofknowledge,andthenfocusesonthespecificprocessofJPEGcompressionandmethodsdescribedindetailintheDCTtransformcoding,quantization,entropycodingandtheprincipleofHuffmancodingandothermodules.Finallyafteradifferentcompressionratiooftheimage,theimagequalitychanges.DCT-basedJPEGimagecompressionmethodissimple,convenient,andcanguaranteeahighercompressionratio,butalsoensuresbetterimagequality,isaveryusefulimagecompressionmethod.Keywords:imagecompressiontechnology,DCTtransform,JPEGimage,MATLABImageProcessingToolbox《通信工程应用技术综合训练与实习》51概述1.1图像压缩编码技术[3]所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合,从而达到以尽可能少的数据流(代码)来表示尽可能多的数据信息。在众多的图像压缩编码标准中,JPEG(JointPhotographicExpertsGroup)格式是一种称为联合图像专家组的图像压缩格式,它适用于不同类型、不同分辨率的彩色和黑白静止图像。1.2离散余弦变换(DCT)在JPEG图像压缩算法中,有一种是以离散余弦变换(DCT,DiscreteCosineTransform)为基础的有损压缩算法。DCT变换利用傅立叶变换的性质,采用图像边界褶翻将图像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小,而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心[5]。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换,最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。在实验中,先将输入的原始lena图像分为8*8块,然后再对每个块进行二维DCT变换。MATLAB图像处理上具箱中提供的二维DCT变换及DCT反变换函数如下:dct2实现图像的二维离散余弦变换,其语法格式为:a、B=dct2(A)返回图像A的二维离散余弦变换值,其大小与A相同且各元素为离《通信工程应用技术综合训练与实习》6散余弦变换的系数B(k1,k2)。b、B=dct2(A,m,n)或B=dct2(A,[m,n])如果m和n比图像A大,在对图像进行二维离散余弦变换之前,先将图像A补零至m*n如果m和n比图像A小。则进行变换之前,将图像A剪切。idct2可以实现图像的二维离散余弦反变换,其语法格式为:B=idct2(A);B=idct2(A,m,n)或B=idct2(A,[m,n])(1.2.2-1)1.3MATLAB及其图像处理工具箱MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,而且还具有可扩展性特征。MATLAB中的数字图像是以矩阵形式表示的,矩阵运算的语法对MATLAB中的数字图像同样适用,这意味着MATLAB强大的矩阵运算能力对用于图像处理非常有利。图像处理工具箱(ImageProcessingToolbox)提供了一套全方位的参照标准算法和图形工具,用于进行图像处理、分析、可视化和算法开发。可进行图像压缩、空间转换、图像增强、特征检测、降噪、图像分割和图像配准等功能。工具箱中大部分函数均以开放式MATLAB语言编写,这意味着可以检查算法、修改源代码和创建自定义函数。利用MATLAB图像处理工具箱对基于DCT的JPEG图像压缩编码理论算法进行仿真,软件功能强大,应用简单而效果良好。2基于DCT的图像压缩编码算法2.1基于DCT的图像压缩编码算法的过程基于DCT编码的JPEG编码压缩过程框图,如图2.1-2所示。图2.1-2基于DCT编码的JPEG压缩过程简化图原始图像数据分成8*8的小块DCT变换量化器量化表熵编码器码表压缩数据《通信工程应用技术综合训练与实习》7上图是基于DCT变换的图像压缩编码的压缩过程,解压缩与上图的过程相反。在编码过程中,首先将输入图像颜色空间转换后分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。在解码过程中,形成压缩后的图像格式,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8×8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的解压过程。2.2基于DCT的JPEG图像压缩编码步骤2.2.1颜色空间的转换和采样JPEG文件使用的颜色空间为1982年推荐的电视图像数字化标准CCIR601(现为ITU-RBT.601)。在这个色彩空间中,每个分量、每个像素的电平规定为255级,用8位代码表示。JPEG只支持YCbCr颜色模式,其中Y代表亮度,CbCr代表色度。全彩色图像RGB模式转换到YCbCr模式,用下组公式0.2990.5870.114()/1.402()/1.772YRGBCrRYCbBY(2.2.1-3)其逆变换为:1.4020.3440.7141.772RYCrGYCbCrBYCb(2.2.1-4)JPEG是以8×8的块为单位来进行处理的,由于人眼对亮度Y的敏感度比色度CbCr的敏感度大的多,所以采用缩减取样的方式,通常采用YUV422取样