




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着多媒体技术和通讯技术的不断发展多媒体娱乐、信息高速公路等不断对信息数据的存储和传输提出了更高的要求也给现有的有限带宽以严峻的考验特别是具有庞大数据量的数字图像通信更难以传输和存储极大地制约了图像通信的发展因此图像压缩技术受到了越来越多的关注。图像压缩的目的就是把原来较大的图像用尽量少的字节表示和传输并且要求复原图像有较好的质量。利用图像压缩可以减轻图像存储和传输的负担使图像在网络上实现快速传输和实时处理。本文主要介绍数字图像处理的发展概况,图像压缩处理的原理和特点,对多种压缩编码方法进行描述和比较,详细讨论了Huffman编码的图像压缩处理的原理和应用。关键词关键词:图像处理图像压缩压缩算法图像编码霍夫曼编码AbstractWiththedevelopingofmultimediatechnologyandcommunicationtechnologymultimediaentertainmentinationinationhighwayhavekeptondatastorageandtransmissionputforwardhigherrequirementsbutalsotothelimitedbandwidthavailabletoaseveretestespeciallywithlargedataamountofdigitalimagecommunicationmoredifficulttotransportandstoragegreatlyrestrictedthedevelopmentofimagecommunicationimagecompressiontechniquesarethereforemoreandmoreattention.Thepurposeofimagecompressionistoexhausttheoriginalimagelessthelargerthebytesandtransmissionandrequiresbetterqualityofreconstructedimages.Useofimagecompressionimagestorageandtransmissioncanreducetheburdenofmakingthenetworkfastimagetransferandreal-timeprocessing.ThispapermainlyintroducesthedevelopmentsituationofthedigitalimageprocessingtheprincipleandfeatureofimagecompressionprocessingandthevarietyofcompressioncodingwasdescribedandcompareddetailedlydiscussedtheprincipleandapplicationofcompressionprocessingbasedonHuffmanKeywords:ImageProcessing,ImageCompression,Compressionalgorithm,ImageCoding,Huf.fman目录目录11数字图像处理概述数字图像处理概述.551.11.1数字图像处理发展概况数字图像处理发展概况.51.21.2数字图像处理主要研究的内容数字图像处理主要研究的内容.61.31.3数字图像处理的基本特点数字图像处理的基本特点.722图像压缩图像压缩.882.12.1图像压缩技术概述图像压缩技术概述.82.22.2图像数据压缩原理图像数据压缩原理.82.32.3图像压缩编码图像压缩编码.92.3.12.3.1霍夫曼编码霍夫曼编码.92.3.22.3.2行程编码行程编码.112.3.32.3.3算术编码算术编码.112.3.42.3.4预测编码预测编码.112.3.52.3.5变换编码变换编码.122.3.62.3.6其他编码其他编码.1233哈夫曼编码的图像压缩哈夫曼编码的图像压缩.14143.13.1需求分析需求分析.143.23.2设计流程图设计流程图.143.33.3哈弗曼树的构造哈弗曼树的构造.1533.44图图像像压压缩缩的的具具体体实实现现.1633.44.11HHuuffffmmaann压压缩缩类类的的接接口口与与应应用用.163.4.23.4.2压缩类的实现压缩类的实现.2044运行结果显示及其分析运行结果显示及其分析.28284.14.1结果显示:结果显示:.284.24.2结果分析:结果分析:.30总结总结.3131参考文献参考文献.3322致谢致谢.343411数字图像处理概述数字图像处理概述1.11.1数字图像处理发展概况数字图像处理发展概况数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(ComputerTomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。1.21.2数字图像处理主要研究的内容数字图像处理主要研究的内容数字图像处理主要研究的内容有以下几个方面:1)图像变换由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。2)图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。3)图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立降质模型,再采用某种滤波方法,恢复或重建原来的图像。4)图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。5)图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。6)图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。1.31.3数字图像处理的基本特点数字图像处理的基本特点1).目前,数字图像处理的信息大多是二维信息,处理信息量很大。如一幅256256低分辨率黑白图像,要求约64kbit的数据量;对高分辨率彩色512512图像,则要求768kbit数据量;如果要处理30帧秒的电视图像序列,则每秒要求500kbit22.5Mbit数据量。因此对计算机的计算速度、存储容量等要求较高。2)数字图像处理占用的频带较宽。与语言信息相比,占用的频带要大几个数量级。如电视图像的带宽约5.6MHz,而语音带宽仅为4kHz左右。所以在成像、传输、存储、处理、显示等各个环节的实现上,技术难度较大,成本亦高,这就对频带压缩技术提出了更高的要求。3)数字图像中各个像素是不独立的,其相关性大。在图像画面上,经常有很多像素有相同或接近的灰度。就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达0.9以上,而相邻两帧之间的相关性比帧内相关性一般说还要大些。因此,图像处理中信息压缩的潜力很大。4)由于图像是三维景物的二维投影,一幅图象本身不具备复现三维景物的全部几何信息的能力,很显然三维景物背后部分信息在二维图像画面上是反映不出来的。因此,要分析和理解三维景物必须作合适的假定或附加新的测量,例如双目图像或多视点图像。在理解三维景物时需要知识导引,这也是人工智能中正在致力解决的知识工程问题。5)数字图像处理后的图像一般是给人观察和评价的,因此受人的因素影响较大。由于人的视觉系统很复杂,受环境条件、视觉性能、人的情绪爱好以及知识状况影响很大,作为图像质量的评价还有待进一步深入的研究。另一方面,计算机视觉是模仿人的视觉,人的感知机理必然影响着计算机视觉的研究。例如,什么是感知的初始基元,基元是如何组成的,局部与全局感知的关系,优先敏感的结构、属性和时间特征等,这些都是心理学和神经心理学正在着力研究的课题。数字图像处理的再现性好,处理精度高,适用面宽,灵活性高,而图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。22图像压缩图像压缩2.12.1图像压缩技术概述图像压缩技术概述图像压缩就是减少表示数字图像时需要的数据量。是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也称图像编码。在我们的生活中无论是普通人还是一些工作在科研领域的科技工作者,都会对数据信息进行传输与存储有所接触。随着数字时代的到来,影像的制作、处理和存储都脱离了传统的介质(纸、胶片等),相比传统方式,数字图像有着传统方式无法比拟的优越性。但是每种技术出现的同时,都有制约其发展的一面。比如数字电视、遥感照片、由雷达、飞机等提供的军事侦察图像、可视电话、会议电视和传真照片,在教育、商业、管理等领域的图文资料、CT机、X射线机等设备的医用图像、天气云图等等,无论是利用哪种传输媒介进行传输的信息,都会都会遇到需要对大量图像数据进行传输与存储的问题。而对大量图像数据进行传输要保证其传输的质量、速度等,对其进行存储也要考虑其大小容量等。所以,要解决大量图像数据的传输与存储,在当前传输媒介中,存在传输带宽的限制,故在一些限制条件下传输尽可能多的活动图像,如何能对图像数据进行最大限度的压缩,并且保证压缩后的重建图像能够被用户所接受等问题,就成为研究图像压缩技术的问题之源。图像数据之所以可以进行压缩,主要是因为一般原始图像数据是高度相关的,都含有大量的冗余信息。图像压缩编码的目的就是消除各种冗余,并在给定的畸变下用尽量少的比特数来表征和重建图像,使它符合预定应用场合的要求。2.22.2图像数据压缩原理图像数据压缩原理由于图像数据之间存在这一定的冗余,所以使得数据的压缩成为可能。信息论的创始人Shannon提出把数据看作是信息和冗余度(redundancy)的组合。所谓冗余度是由于一副图像的各像素之间存在着很大的相关性,可利用一些编码的方法删去它们,从而达到减少冗余压缩数据的目的。为了去掉数据中的冗余,常常要考虑信号源的统计特性,或建立信号源的统计模型。图像的冗余包括以下几种:空间冗余:像素点之间的相关性;时间冗余:活动图像两个连续帧之间的冗余;信息熵冗余:单位信息量大于其熵;结构冗余:区域上存在非常强的纹理结构;知识冗余:有固定的结构,如人的头像;视觉冗余:某些图像的失真是人眼不易觉察的。对数字图像进行压缩通常利用两个基本原理:一是数字图像的相关性。在图像的同一行相邻象素之间,相邻象素之间,活动图像的相邻帧的对应象素之间往往存在很强的相关性,去除或减少这些相关性,也即去除或减少图像信息中的冗余度也就实现了对数字图像的压缩。帧内象素的相关称做空域相关性。相邻帧间对应象素之间的相关性称做时域相关性。二是人的视觉心理特征。人的视觉对于边缘急剧变化不敏感(视觉掩盖效应),对颜色分辨力弱,利用这些特征可以在相应部分适当降低编码精度而使人从视觉上并不感觉到图像质量的下降,从而达到对数字图像压缩的目的。2.32.3图像压缩编码图像压缩编码目前图像编码压缩的方法很多,其分类方法根据出发点不同而有差异。根据解压重建后的图像和原始图像之间是否具有误差,图像编码压缩分为无误差编码和有误差编码两大类。无损编码中删除的仅仅是图像数据中冗余的数据,经解码重建的图像和原始图像没有任何失真,常用于复制、保存十分珍贵的历史、文物图像等场合;有损编码是指解码重建的图像与原图像相比有失真,不能精确的复原,但视觉效果基本相同,是实现高压缩比的编码方法,数字电视、图像传输和多媒体等常采用这类编码方法。图像压缩技术:A:无损压缩:a霍夫曼编码b行程编码c算术编码B:有损压缩:a预测编码b变换编码c其他编码2.3.12.3.1霍夫曼编码霍夫曼编码Huffman编码在无损压缩的编码方法中,它是一种有效的编码方法。它是霍夫曼博士在1952年根据可变长最佳编码定理提出的。依据信源数据中各信号出现的频率分配不同长度的编码。其基本思想是在编码过程中,对出现频率越高的值,分配越短的编码长度,相应地对出现频率越低的值则分配较长的编码长度,它是一种无损编码方法。采用霍夫曼编码方法的实质是针对统计结果对字符本身重新编码,而不是对重复字符或重复子串编码,得到的单位像素的比特数最接近图像的实际熵值。例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的18的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。例如:假设信源符号为【a、b、c、d、e、f、g】,其出现的概率相应的为【0.25、0.025、0.025、0.05、0.35、0.25、0.05】,一共7个字符,对其进行huffman编码,算法如下:首先按照每个字符出现的频率大小从左到右排列:0.35、0.25、0.25、0.05、0.05、0.025、0.025;选出最小的两个值作为叶子节点构成一棵二叉树,值较大的叶子节点在左,两个叶子节点对应的频率之和作为根节点。把原排列中最小的两个节点删除,新的根节点插入排列保持大小从左到右的排列顺序不变;重复执行2),直到最后得到值为1的根节点。得到一棵huffman树,如下图所示:图2.1在得到的huffman树上左分支标记1,右分支标记0,所有的字符根据其频率标记到对应的叶子节点上,从根节点到叶子节点路径上遇到的0、1字符串即为对应叶子节点所在字符的编码。a、b、c、d、e、f、g七个字符的huffman编码分别是:10、0001、0000、0011、11、01、0010,可以看到符号只能出现在树叶上任何一个字符的路径都不会是另一字符路径的前缀路径。2.3.22.3.2行程编码行程编码行程编码又称RLE压缩方法,其中RLE是Run-Length-Encoding的缩写,这种缩写方法广泛用于各种图像格式的数据压缩处理中,是最简单的压缩图像方法之一。行程编码技术是在给定的图像数据中寻找连续重复的数值,然后用两个字符值取代这些连续值。例如,有一串字母表示的数据为“aaabbbbccccdddedddaa”经过行程编码处理可表示为“3a4b4c3d1e3d2a”。这种方法在处理包含大量重复信息的数据时可以获得很好的压缩效率。但是如果连续重复的数据很少,则难获得较好的压缩比。而且甚至可能会导致压缩后的编码字节数大于处理前的图像字节数。所以行程编码的压缩效率与图像数据的分布情况密切相关。2.3.32.3.3算术编码算术编码算术编码与霍夫曼编码方法相似,都是利用比较短的代码取代图像数据中出现比较频繁的数据,而利用比较长的代码取代图像数据中使用频率比较低的数据从而达到数据压缩的目的。其基本思想是将被编码的数据序列表示成0和1之间的一个间隔(也就是一个小数范围),该间隔的位置与输入数据的概率分布有关。信息越长,表示间隔就越小,因而表示这一间隔所需的二进制位数就越多(由于间隔是用小数表示的)。算术压缩算法中两个基本的要素为源数据出现的频率以及其对应的编码区间。其中,源数据的出现频率、编码区间则决定算术编码算法最终的输出数据。2.3.42.3.4预测编码预测编码预测编码方式是目前应用比较广泛的编码技术之一。预测编码中典型的压缩方法有脉冲编码调制(PCM,PulseCodeModulation)、差分脉冲编码调制(DPCM,DifferentialPulseCodeModulation)、自适应差分脉冲编码调制(ADPCM,AdaptiveDifferentialPulseCodeModulation)等,它们较适合于声音、图像数据的压缩,因为这些数据由采样得到,相邻样值之间的差相差不会很大,可以用较少位来表示。通常,图像的相邻像素值具有较强的相关性,观察一个像素的相邻像素就可以得到关于该像素的大量信息。这种性质导致了预测编码技术。采用预测编码时,传输的不是图像的实际像素值(色度值或亮度值),而是实际像素和预测像素值之差,即预测误差。预测编码分为无失真预测编码和有失真预测编码。无失真预测编码是指对预测误差不进行量化,所以不会丢失任何信息。有失真编码要对预测误差进行量化处理,而量化必然要产生一定的误差。2.3.52.3.5变换编码变换编码预测编码认为冗余度是数据固有的,通过对信源建模来尽可能精确地预测源数据,去除图像的时间冗余度。但是冗余度有时与不同的表达方法也有很大的关系,变换编码是将原始数据“变换”到另一个更为紧凑的表示空间,去除图像的空间冗余度,可得到比预测编码更高的数据压缩。变换编码是将图像时域信号变换到系数空间(频域)上进行处理的方法。在时域空间上具有很强相关的信息,在频域上反映出在某些特定的区域内能量常常被集中在一起或者是系数矩阵的分布具有某些规律,从而可以利用这些规律分配频域上的量化比特数而达到压缩的目的。变换编码的目的在于去掉帧内或帧间图像内容的相关性,它对变换后的系数进行编码,而不是对图像的原始像素进行编码。先对信号进行某种函数变换从一种信号(空间)变换到另一信号(空间)然后再对变换后的信号进行编码。比如将时城信号变换到频域,就是因为声音和图像的大部分信号都是低频信号,在频域中信号能比较集中,换为频域信号后再进行采样、编码,可以达到压缩数据的效果。可以看出预测编码和变换编码相比:预测编码主要在时空域上进行,变换编码则主要在变换域上进行。采用变换编码的有DEF(傅立叶变换)、DTC(离散余弦变换等)。2.3.62.3.6其他编码其他编码LZW编码:LZW(Lempel-Ziv-WelchEncoding)编码原理是将每一个字节的值都要与下一个字节的值配成一个字符对,并为每个字符对设定一个代码。当同样的一个字符对再度出现时,就用代号代替这一字符对,然后再以这个代号与下个字符配对。LZW编码原理的一个重要特征是,代码不仅仅能取代一串同值的数据,也能够代替一串不同值的数据。在图像数据中若有某些不同值的数据经常重复出现,也能找到一个代号来取代这些数据串。在此方面,LZW压缩原理是优于RLE的。矢量量化编码:利用相邻图像数据间的高度相关性,将输入图像数据序列分组,每一组m个数据构成m维矢量,一起进行编码,即一次量化多个点。矢量量化编码属于有损压缩编码,它的缺点是复杂度随矢量维数呈指数增加,数据量和计算量都很大。子带编码的基本思想是使用一组带通滤波器把输入图像的傅立叶频谱分成若干个连续的频段,每个频段称为子带。对每个子带中的图像信号采用单独的编码方案去编码。采用对每个子带分别编码的优点是:第一,对每个子带信号分别进行自适应控制,量化阶的大小可以按照每个子带的能量电平加以调节。具有较高能量电平的子带用大的量化阶去量化,以减少总的量化噪声。第二,可根据每个子带信号在感觉上的重要性,对每个子带分配不同的位数,用来表示每个样本值。例如,在低频子带中,为了保护图像的边缘轮廓结构,就要求用较小的量化阶、较多的量化级数,即分配较多的位数来表示样本值。而图像中的噪声及图像的细节,通常出现在高频子带中,对它分配较少的位数。第三,各子带的量化噪声都局限在本子带内,即使某个子带内的信号能量较小,也不会被其他子带的量化噪声掩盖掉。33哈夫曼编码的图像压缩哈夫曼编码的图像压缩3.13.1需求分析需求分析设计目标是实现Huffman压缩的编码器。编码器的工作过程呢个如下;首先读入待压缩的源文件,为保证与源文件信息完全一致,对文件的读写操作都用二进制文件的方式进行。与这只偶那个方式对应的是ASCII方式读写。然后建立并分析字母表,对读入内存的源文件我们以字节为单元进行分析,将类型表示,其用C+内建的,最多将有中可能的字符。我们对每种字符的出现频度进行统计,以频度作为建立uffman树的权值。频度表建好之后,就可以根据前述算法建立Huffman树,对出现的每种字符进行Huffman编码。此入时,再次读入源文件,逐字节编码,将得到的编码流写入到磁盘文件。可以看出编码的核心是Huffman树,它也是连接编码的纽带。考虑到Huffman树节点的设计。编码时从叶节点逐步构建中间节点,到整颗树。树的节点应该应该包括的信息有:节点表示的字符,子字节的位置,字符出现的频度,父节点的位置等,这些都是构造Huffman所需要的。而解码时,我们只需要能够根据位序列从树的根节点循次遍历到叶节点,叶节点保留其表示的字符,这就足够了。3.23.2设计流程图设计流程图本设计目的是为了实现图像压缩,霍夫曼算法是实现此目的关键步骤。因此本设计流程图是以霍夫曼为中心展开叙述的。流程图如图3-1所示。需求分析需求分析构建构建HuffmanHuffman树树设计设计HuffmanHuffman压缩类的接压缩类的接口口设计设计HuffmanHuffman压缩类压缩类结果显示结果显示测试及分析测试及分析图3-1流程图3.33.3HuffmanHuffman数的构造数的构造基类设计如下:NIL表示一个空子树constshortNIL=-1压缩文件中Huffman树的节点对象classDiskHuffNodepublic:存储的字符unsignedcharch子节点的指针(索引)shortleftshortrightDiskHuffNode(unsignedcharc=0shortlptr=NILshortrptr=NIL):ch(c)left(lptr)right(rptr)单个字符的最大位码大小constintMAXBITSIZE=255typedefbitsetBitCode构建Huffman树的节点压缩算法使用这些属性以及基类DiskHuffNode建立节点此类中的属性在解压缩算法中并不需要classHuffNode:publicDiskHuffNodepublic:intfreqf字符ch的出现频度intindex自身节点在树中的索引intparent自身节点的父节点intnumberOfBitsch的Huffman编码的bit数目BitCodebits放置Huffman码的bitset容器HuffNode(unsignedcharc=0shortlptr=NILshortrptr=NILintf=0intindx=NILintp=0intnumBits=0intmaxSizeOfBits=MAXBITSIZE):DiskHuffNode(clptrrptr)freq(f)index(indx)parent(p)numberOfBits(numBits)bits(0)“”运算符是构建最大优先级队列和最小优先级队列必须的friendbooloperatorrhs.freq33.44图图像像压压缩缩的的具具体体实实现现33.44.11HHuuffffmmaann压压缩缩类类的的接接口口与与应应用用本设计设计了Hcompress类来执行文件的压缩操作,文件hufcomp.cpp是使用Hcompress类进行压缩的主程序。Hcompress类的声明如下:classHCompresspublic:HCompress(conststringfnameboolv=false)构造函数。调用setFile()打开源文件fname生成二进制输出文件并添加后缀.huf标识,任何先前的扩展名都被替换逻辑标志v确定是否输出进度消息voidsetFile(conststringfname)打开源文件fname生成二进制输出文件以.huf为后缀voidcompress()压缩文件voiddispCompRatio()const显示压缩比intsize()const返回Huffman树中节点数目voiddisplayTree()const显示Huffman树考虑屏幕尺寸,当树大小fileNamecoutpq处理文件仅有一个独特字符的特殊情形if(numberLeaves=1)设置叶节点数目为2,并在索引0或1位置添加1个叶节点因为在这些位置的字符不出现在文件中numberLeaves=2if(charFreq0!=0)charFreq1=1elsecharFreq0=1记录我们已经添加了填充节点oneChar=trueelseoneChar=false树的大小为2numberLeaves-1treeSize=2numberLeaves-1tree.resize(treeSize)检索我们构造中的树nodeIndex=0开始构造各个叶节点value=char(i)leftright=NILfrequency=charFreqiindex=nodeIndexparentnumberOfBitsmaxSizeOfBits为默认值在charLoc中记录叶节点的位置,将节点插入到最小优先级队列中for(i=0i3bitset对象具有转换为unsignedlong的方法bitsetbtempfor(inti=0ibytecnti+)将向量每8位转换为bitset对象再进一步转换为unsignedlongfor(intj=0j8j+)btempj=bv8i+jcharch=btemp.to_ulong()ostr.put(ch)将二进制bit序列从内存传递到文件中44运行结果显示及其分析运行结果显示及其分析4.14.1结果显示:结果显示:1.对文件mspaint.进行压缩,结果如图4-1所示。图4-1压缩结果2对文件demo.dat压缩:结果如图4-2所示。图4-2压缩结果3.对文件films.dat压缩,结果如图4-3所示。图4-3压缩结果4对文件webster.dict进行压缩,结果如图4-4所示。图4-4压缩结果4.24.2结果分析:结果分析:我们对不同的文件类型进行压缩,测试对象除了demo.dat,还包括webster.dict以及mspaint.文件。Webster.dict有234,946个词,2,251,959个字符,53个不同的字符(26个大写字母,26个小写字母,以及一个换行符)。对这个文件应用Huffman算法的压缩比为1.83.mspaint.是较大的二进制文件,共包含有255种不同字符,而压缩比只有1.36。而对于更小的文件,由于Huffman压缩文件格式的要求,甚至会有压缩比小于1的情形。不过这种情况毕竟是少数。对于大文件的压缩自然能不畅附加信息的代价。总结总结图像压缩编码的目的是以尽量少的比特数表征图像,同时保持复原图像你的质量,使他符合预定应用场合的要求。压缩数据量,提高有效性是图像压缩编码的首要目的,通常把图像压缩编码简称为图像编码。图像编码是一种信源编码,其信源是各种类型的图像信息。通过本次设计,我学到很多。数据压缩有两种基本类型:无损压缩和有损压缩。使用无损压缩算法压缩的文件buhui8丢失任何信息,它与源文件具有可逆性,即经过压缩算法可以恢复原来的数据。通常我们对“离散”的数据采用这种算法:文本文件,字处理文件,应用程序等。有损压缩技术在压缩时会丢失一些信息,压缩后不能完全恢复出所有信息。而实际上,对于音频,图像和视频数据,我们人类可以感知的信息阀值是有限的,有选择的丢弃部分频率成分会产生更好的压缩比。而对于压缩算法有霍夫曼编码,行程编码,行程编码等。本设计主要讨论和利用的是霍夫曼编码。通过本次毕业设计,我对此种编码方法理解更加深入。本设计是利用C+进行设计实现的,首先构建Huffman树,这涉及到数据结构,然后开始实现压缩类的接口与应用。压缩类的实现中compress()成员函数是控制文件压缩的关键模块。由于时间仓促,自己能力有限,只实现了霍夫曼编码进行压缩的一种方法。当然其中还有很多不足的地方,需要以后继续努力深造。参考文献1余建宇李勇侯颜平.基于ADV202的嵌入式视频压缩系统的软硬件设计J.电子技术应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实木地板采购合同
- 甘肃工程建筑防水方案(3篇)
- 电梯工程低层赔偿方案(3篇)
- 猫课件郑振铎
- 安全教育记录培训钢筋工课件
- 猫咪绘画课件
- 用深度学习推动中职语文教学创新的浅思
- 初中语文“文学阅读与创意表达”的内涵探究
- 低层酒店施工工程方案(3篇)
- 农业废弃物资源化利用项目建议书:2025年技术发展与产业升级
- 高三一轮复习课件
- 驾驶员安全教育培训考试试卷含答案
- 2025广东河源市暨南大学附属第五医院急需紧缺人员招聘117人(第二批)笔试参考题库附答案解析
- 2025江苏航空产业集团有限责任公司人才招聘备考试题及答案解析
- 污水处理站运行记录台账范本
- 无人机地下结构探测技术-洞察及研究
- 化工设备开车相关课件
- 校园基孔肯雅热防控措施课件
- 图像特征提取讲解
- 垃圾焚烧发电厂课件
- GB/T 8165-2025不锈钢复合钢板和钢带
评论
0/150
提交评论