《基于JPG标准的图像压缩.ppt》由会员分享,可在线阅读,更多相关《基于JPG标准的图像压缩.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于JPG标准的图像压缩 一、文献综述与选题背景一、文献综述与选题背景zz信息时代,人们对使用计算机获取信息、处理信息的依赖性越来越高。信息时代,人们对使用计算机获取信息、处理信息的依赖性越来越高。计算机系统面临的是数值、文字、语言、音乐、图形、动画、静图像、计算机系统面临的是数值、文字、语言、音乐、图形、动画、静图像、电视视频图像等多种媒体。数字化的视频和音频信号的数量之大是惊电视视频图像等多种媒体。数字化的视频和音频信号的数量之大是惊人的,对于电视画面的分辨率人的,对于电视画面的分辨率640480640480的彩色图像,的彩色图像,3030帧帧/s/s,则一秒钟,则一秒钟的数据量为:的数据
2、量为:64048024306404802430221221.12M12M,所以播放时,需要,所以播放时,需要221Mbps221Mbps的通信回路。存储时,的通信回路。存储时,1 1张张CDCD可存可存640M640M,则仅可以存放,则仅可以存放 2 2.89s89s的数据。的数据。zz大数据量的图像信息会给存储器的存储容量,通信干线信道的带宽,大数据量的图像信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提以及计算机的处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,高信道带宽
3、以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。这时就要考虑压缩。zz随着多媒体技术的快速发展,静止图像的应用越来越广泛。随着多媒体技术的快速发展,静止图像的应用越来越广泛。它的应用主要集中在图像的存储和图像的传输两方面,从它的应用主要集中在图像的存储和图像的传输两方面,从具体应用中我们可以发现静止图像占用了越来越多的资源。具体应用中我们可以发现静止图像占用了越来越多的资源。在这样的背景条件下,静止图像的压缩成为了一个研究的在这样的背景条件下,静止图像的压缩成为了一个研究的热点。热点。zz目前静止图像的压缩算法以目前静止图像的压缩算法以JPEGJPEG(JointPhot
4、ographicExpertsGroupJointPhotographicExpertsGroup)和)和JPEG2000JPEG2000为主。为主。zzJPEGJPEG是第一个被广泛接受的单色和彩色静止图像压缩标准,是第一个被广泛接受的单色和彩色静止图像压缩标准,它的名字源于它的名字源于“JointPhotographicExpertsGroup(JointPhotographicExpertsGroup(联合图联合图像专家组像专家组)”)”,它是由,它是由ISO/ISO/和和CCITTCCITT协同工作的机构,这个协同工作的机构,这个机构的工作成果是机构的工作成果是ISOISO的国际标准的
5、国际标准ISO/IEC10918-1ISO/IEC10918-1(连续(连续色调静止图像的数字压缩和编码,色调静止图像的数字压缩和编码,digitalcompressionanddigitalcompressionandcodingofcontinuoustonestillimagescodingofcontinuoustonestillimages)和)和ITU-TITU-T的建议的建议T.81T.81。JPEGJPEG标准草案于标准草案于19911991年公布,年公布,19921992年正式批准为国际标准年正式批准为国际标准,以后这个工作组的进一步增强和扩展形成了,以后这个工作组的进一步增
6、强和扩展形成了ISO10918-3ISO10918-3和和ITU-TITU-T建议建议T.81T.81。zzJPEGJPEG是一种采用预测编码是一种采用预测编码(DPCM)(DPCM)、离散余弦变换、离散余弦变换(DCT)(DCT)以及熵编以及熵编码,以去除冗余的图像和彩色数据的有损压缩格式,能够将图像码,以去除冗余的图像和彩色数据的有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢
7、复的图像质量明显降低,如果追求高品质图像,使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。不宜采用过高压缩比例。zz但是但是JPEGJPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,也即可以用最少的磁盘空间得到较好的图像品质。而且也即可以用最少的磁盘空间得到较好的图像品质。而且 JPEGJPEG是一是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩种很灵活的格式,具有调节图像质量的功能,允
8、许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在比例对文件进行压缩,支持多种压缩级别,压缩比率通常在1010:1 1到到4040:1 1之间,压缩比越大,品质就越低;相反地,压缩比越小,之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。品质就越好。zz比如可以把比如可以把1 137Mb37Mb的的BMPBMP位图文件压缩至位图文件压缩至20203KB3KB。当然也可。当然也可以在图像质量和文件尺寸之间找到平衡点。以在图像质量和文件尺寸之间找到平衡点。JPEGJPEG格式压缩的主要格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减是高频信息,对色
9、彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持少图像的传输时间,可以支持24bit24bit真彩色,也普遍应用于需要连真彩色,也普遍应用于需要连续色调的图像。续色调的图像。zzJPEGJPEG的核心算法是的核心算法是DCTDCT变换编码,其压缩性能基本反映了变换编码,其压缩性能基本反映了2020世纪世纪8080年代末图像压缩的技术水平。但自从年代末图像压缩的技术水平。但自从JPEGJPEG制定后的近制定后的近1010年,许年,许多更有效的图像压缩技术已经得到发展,如小波变换方法、分形多更有效的图像压缩技术已经得到发展,如小波变换方法、分形方法、区域划分方法等。其中,发展最成
10、熟和性能及通用性最好方法、区域划分方法等。其中,发展最成熟和性能及通用性最好的静止图像压缩方法是小波变换方法。的静止图像压缩方法是小波变换方法。正因如此,制定了第二代静止图像压缩标准,即正因如此,制定了第二代静止图像压缩标准,即JPEG2000JPEG2000,它的,它的核心技术正是小波变换编码。其核心编解码器采用小波变换、算核心技术正是小波变换编码。其核心编解码器采用小波变换、算术编码及嵌入式分层组织,较以往的静止图像压缩标准复杂,它术编码及嵌入式分层组织,较以往的静止图像压缩标准复杂,它在同一个码流中实现了无损和有损压缩、分辨率和信噪比的累进在同一个码流中实现了无损和有损压缩、分辨率和信噪
11、比的累进性以及随机访问等优良特性。性以及随机访问等优良特性。zzJPEG2000JPEG2000作为作为JPEGJPEG的升级版,其压缩率比的升级版,其压缩率比JPEGJPEG高约高约3030左右,左右,同时支持有损和无损压缩。同时支持有损和无损压缩。JPEG2000JPEG2000格式有一个极其重要的特征格式有一个极其重要的特征在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数在于它能实现渐进传输,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图像由朦胧到清晰显示。此外,据,不断提高图像质量,让图像由朦胧到清晰显示。此外,JPEG2000JPEG2000还支持所谓的还支持所
12、谓的 感兴趣区域感兴趣区域 特性,可以任意指定影像上特性,可以任意指定影像上感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。感兴趣区域的压缩质量,还可以选择指定的部分先解压缩。zzJPEG2000JPEG2000和和JPEGJPEG相比优势明显,且向下兼容,因此可取代传统的相比优势明显,且向下兼容,因此可取代传统的JPEGJPEG格式因而可以被更广泛的应用于互联网、彩色拷贝、打印、格式因而可以被更广泛的应用于互联网、彩色拷贝、打印、扫描、数字摄影、遥感、医学图像、数字图书馆、数字存档以及扫描、数字摄影、遥感、医学图像、数字图书馆、数字存档以及移动图像通信等领域。移动图像通信等领域。zz虽然
13、虽然jpegjpeg有很多优点,但是其他的数据格式也有他们各自的优点。有很多优点,但是其他的数据格式也有他们各自的优点。比如说如果要打印图像,特别是打印高质量的图像,比如说如果要打印图像,特别是打印高质量的图像,TIFFTIFF格式是格式是更为合适的选择。更为合适的选择。zzJPEGJPEG压缩技术可以说是所有图像压缩技术的基础。如压缩技术可以说是所有图像压缩技术的基础。如MJPEG(MotionMJPEG(MotionJPEG)JPEG)就是在就是在JPEGJPEG基础发展起来的动态图像压缩基础发展起来的动态图像压缩技术,它只单独的对某一帧进行压缩,而基本不考虑视频流中不技术,它只单独的对某
14、一帧进行压缩,而基本不考虑视频流中不同帧之间的变化。使得可获取清晰度很高的视频图像,而且可灵同帧之间的变化。使得可获取清晰度很高的视频图像,而且可灵活设置每路的视频清晰度和压缩帧数。其压缩后的画面还可任意活设置每路的视频清晰度和压缩帧数。其压缩后的画面还可任意剪接。但它的缺陷也非常明显,其一,丢帧现象严重、实时性差,剪接。但它的缺陷也非常明显,其一,丢帧现象严重、实时性差,在保证每路都必在保证每路都必 须是高清晰的前提下,很难完成实时压缩;其二,须是高清晰的前提下,很难完成实时压缩;其二,压缩效率低,存储占用空间较大。后来又出现了多层式压缩效率低,存储占用空间较大。后来又出现了多层式JPEGJ
15、PEG(ML-JPEGML-JPEG)压缩技术,它采取渐层式技术,先传输低解析)压缩技术,它采取渐层式技术,先传输低解析的图档,然后再补送更细节的压缩资料,使画面品质改善。这种的图档,然后再补送更细节的压缩资料,使画面品质改善。这种方式所需的时间虽然与原先的方式一样。但由于可以先看到画面,方式所需的时间虽然与原先的方式一样。但由于可以先看到画面,所以使用者会觉得这种方式较好。所以使用者会觉得这种方式较好。zz而在静止图像压缩中,还有其他不少的标准正在发展。如微软今而在静止图像压缩中,还有其他不少的标准正在发展。如微软今年年3 3月份透露,该公司不久将向国际标准组织提交一个新的图片格月份透露,该
16、公司不久将向国际标准组织提交一个新的图片格式,并表示其新格式可以提供更高的图像质量和更好的压缩能力,式,并表示其新格式可以提供更高的图像质量和更好的压缩能力,即即HDPhotoHDPhoto格式。微软希望能用它的格式来取代现在通用的格式。微软希望能用它的格式来取代现在通用的JPEGJPEG格式。微软称,格式。微软称,HDPhotoHDPhoto简洁的运算法则可以减少图像在压缩过简洁的运算法则可以减少图像在压缩过程中受到的损失,即便图片大小仅有程中受到的损失,即便图片大小仅有JPEGJPEG的一半,也将具有更高的一半,也将具有更高的质量。这种格式此外还能够同时支持的质量。这种格式此外还能够同时支
17、持“无损无损”和和“有损有损”两种两种图片数据压缩方法,这两种方法可以对图像质量的产生不同的效图片数据压缩方法,这两种方法可以对图像质量的产生不同的效果。微软称,果。微软称,HDPhotoHDPhoto可以对色平衡和曝光设置进行调节,且不可以对色平衡和曝光设置进行调节,且不会像发生其它位图格式经常遇到的数据丢失或减少现象。无论会像发生其它位图格式经常遇到的数据丢失或减少现象。无论HDHD是否可以取代是否可以取代JPEGJPEG,而,而JPEGJPEG在数字图像压缩发展中所做出的贡在数字图像压缩发展中所做出的贡献是举足重轻的。献是举足重轻的。二、研究内容二、研究内容I I、主要设计研究内容及关键
18、技术、主要设计研究内容及关键技术、主要设计研究内容及关键技术、主要设计研究内容及关键技术zzJPEGJPEG压缩格式是目前图像处理领域里面用得最广泛的一种图像压缩方压缩格式是目前图像处理领域里面用得最广泛的一种图像压缩方式,本毕业设计将进行就式,本毕业设计将进行就JPEGJPEG标准对图像进行编、解码的研究。主要标准对图像进行编、解码的研究。主要内容包括:内容包括:1 1从从BMPBMP格式图像的文件中格式图像的文件中(未压缩未压缩)读出图像,并能显示。读出图像,并能显示。2 2将将BMPBMP图像数据以图像数据以JPEGJPEG标准压缩,保存为标准压缩,保存为*.JPG.JPG文件。文件。3
19、 3要求能读出要求能读出jpgjpg文件,并显示在界面上文件,并显示在界面上其中,其中,JPEGJPEG的压缩实现主要分成四个步骤:的压缩实现主要分成四个步骤:1 1颜色模式转换及采样;颜色模式转换及采样;2 2DCTDCT变换(离散余弦变换);变换(离散余弦变换);3 3量化;量化;4 4编码(有算术编码和编码(有算术编码和哈哈夫曼编码两种,这里采用夫曼编码两种,这里采用哈哈夫曼编码)。夫曼编码)。(一)、颜色转换及采样(一)、颜色转换及采样zz1 1颜色转换:对颜色转换:对BMPBMP图像中的颜色数据进行由图像中的颜色数据进行由RGBRGB一一YCbCrYCbCr的转换,的转换,Y Y表示
20、亮度,表示亮度,CbCbCrCr分别表示蓝色度和红色度。转换公式:分别表示蓝色度和红色度。转换公式:zzY=0.2990R+0.5870G+0.1140BY=0.2990R+0.5870G+0.1140BzzCbCb=-0.1687R-0.3313G+0.5000B=-0.1687R-0.3313G+0.5000BzzCr=0.5000R-0.4187G-0.0813BCr=0.5000R-0.4187G-0.0813Bzz这样转换以后就得到三个新的基色值,对这三个基色值来讲,都可以这样转换以后就得到三个新的基色值,对这三个基色值来讲,都可以当作一个独立的图像平面来进行压缩编码。当作一个独立的
21、图像平面来进行压缩编码。zz2 2采样:颜色转换后,保留每一点的亮度值采样:颜色转换后,保留每一点的亮度值Y Y,而色度值,而色度值CbCbCrCr则是则是每两点保留一点,在图像的行和列方向上都可执行颜色采样。如果采每两点保留一点,在图像的行和列方向上都可执行颜色采样。如果采用的是用的是1:1:11:1:1的采样比例,不用抽样。若采用的采样比是行列方向都是的采样比例,不用抽样。若采用的采样比是行列方向都是2:1:12:1:1,在行方向,每两点保留一点,列方向也是每两点保留一点,这,在行方向,每两点保留一点,列方向也是每两点保留一点,这样如果假设原来的样如果假设原来的CbCrCbCr矩阵大小为矩
22、阵大小为M*SM*S,则经过,则经过2:1:12:1:1抽样之后成了抽样之后成了M/2*s/2M/2*s/21/4M*S1/4M*S,只有原来的,只有原来的1/41/4了,图像大大缩小,如果想减小图了,图像大大缩小,如果想减小图像的失真度,则可行方向不抽样或列方向不抽样。像的失真度,则可行方向不抽样或列方向不抽样。(二)、二维(二)、二维DCTDCT变换变换zz二维二维DCTDCT变换公式为:变换公式为:zzF F(u u,v v)=zz其中其中x,yx,y代表图像数据矩阵中的某个数据值的坐标位置代表图像数据矩阵中的某个数据值的坐标位置zzf(x,yf(x,y)指图像数据矩阵中该点的资料值指图
23、像数据矩阵中该点的资料值zzu,vu,v指经过指经过DCTDCT变换后矩阵中的某数值点的坐标位置,在这里变换后矩阵中的某数值点的坐标位置,在这里u=u=x,vx,v=y=yzzF(u,vF(u,v)指经过指经过DCTDCT变换后该坐标点的资料值。变换后该坐标点的资料值。zz当当u=0,v=0u=0,v=0时,时,C(u)C(vC(u)C(v)=1.414/2)=1.414/2zz当当u0,v0u0,v0时,时,C(u)C(vC(u)C(v)=1,)=1,经过变换后的资料值经过变换后的资料值F(u,vF(u,v)称为频率系数称为频率系数(或或zz称称DFTDFT系数系数)。(三)、量化(三)、量
24、化zz量化过程实质上是把亮度数据量化过程实质上是把亮度数据Y Y和色度数据和色度数据CbCb/Cr/Cr由时域转变成频域由时域转变成频域(DCTDCT变换)并滤除高频分量的过程,由于人眼对高频分量不敏感,变换)并滤除高频分量的过程,由于人眼对高频分量不敏感,所以可以滤除高频分量,经过量化以后的每一个所以可以滤除高频分量,经过量化以后的每一个8*88*8数据块中,左上数据块中,左上角第一个元素数据值为直流分量,称为角第一个元素数据值为直流分量,称为DCDC,其余,其余6363个资料为交流分个资料为交流分量,称为量,称为ACAC。(四)、游程编码,(四)、游程编码,ZIGZAGZIGZAG扫描扫描
25、zz经过量化后的经过量化后的DCTDCT系数矩阵,除系数矩阵,除DCDC值一般不为零外,值一般不为零外,ACAC系数大多是系数大多是在零点附近的浮点数。经过取整以后,每一个在零点附近的浮点数。经过取整以后,每一个8*88*8块中,有大量的块中,有大量的ACAC系数的值为系数的值为0 0。为了把尽可能多的其值为。为了把尽可能多的其值为0 0的的ACAC系数串在一起,以利系数串在一起,以利于于ACAC编码及提高压缩比,还必须把编码及提高压缩比,还必须把YCbCrYCbCr矩阵中的每一个矩阵中的每一个8*88*8块中的块中的6464个元素进行个元素进行“之之”字形排序(这样就可以做到把尽可能多的字形
26、排序(这样就可以做到把尽可能多的0 0串在串在一起)。一起)。其过程示意图如下:其过程示意图如下:其过程示意图如下:其过程示意图如下:图例:量化后的系数按Z字型扫描箭头方向表示“之”字形排序以后原8*8中元素的新的位置顺序。(五)、哈夫曼编码(五)、哈夫曼编码zz哈夫曼编码是一种一致性编码法(又称哈夫曼编码是一种一致性编码法(又称 熵编码法熵编码法),用于数据的无),用于数据的无损耗压缩。它使用一张特殊的编码表将源字符(例如某文件中的一个损耗压缩。它使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。编码表是根据每一个源字符出现的估算概率而建立符号)进行编码。编码表是根据每一个源字
27、符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。达到无损压缩数据的目的)。II设计研究方法、技术路线zz本设计拟采用本设计拟采用VC+VC+来实现。程序实现的各个步骤如下:来实现。程序实现的各个步骤如下:zz1 1、读取、读取BMPBMP图像信息,获取图像行像素和列像素数值,在图像信息,获取图像行像素和列像素数值,在BMPBMP图像图像中,图像数据是以倒序存
28、放的。亦即实际图像第一行资料存放在中,图像数据是以倒序存放的。亦即实际图像第一行资料存放在BMPBMP图像数据矩阵的最后一行,依次类推,所以取资料的时候要从图像数据矩阵的最后一行,依次类推,所以取资料的时候要从BMPBMP图图像数据矩阵的最后一行开始读起,把数据存放在新建数组像数据矩阵的最后一行开始读起,把数据存放在新建数组(或称矩阵或称矩阵)的第一行,一直取完。的第一行,一直取完。BMPBMP图像行像素和列像素的数值分别存于文件图像行像素和列像素的数值分别存于文件头信息的第头信息的第1818和和2222字节。从字节。从CimageCimage类中可得到类中可得到Width(Width(图像宽
29、度图像宽度)和和highthight(图像高度图像高度)的数值。的数值。zz2 2、得到、得到PwidthPwidth*PhightPhight后便得知后便得知BMPBMP图像的像素点大小,而数据矩图像的像素点大小,而数据矩阵(三基色,阵(三基色,RGBRGB矩阵)的大小是矩阵)的大小是PwidthPwidth*PhightPhight*3*3,因为每一个,因为每一个像素点都含有像素点都含有RGBRGB三个数据,我们要处理的是数据矩阵而不是像三个数据,我们要处理的是数据矩阵而不是像素点矩阵。所以,新建数组的大小是素点矩阵。所以,新建数组的大小是(PwidthPwidth*3)*3)*Phigh
30、tPhight。zz3 3、接下来,把这一个矩阵、接下来,把这一个矩阵(包含包含BGR)BGR)拆分成三个独立的拆分成三个独立的B B、G G、R R矩阵,得到三个新的矩阵矩阵,得到三个新的矩阵(只包含只包含B B的矩阵,只包含的矩阵,只包含G G的矩阵,只的矩阵,只包含包含R R的矩阵的矩阵),简称为,简称为B B矩阵、矩阵、G G矩阵、矩阵、R R矩阵矩阵(大小为大小为PwidthPwidth*PhightPhight),用程序实现拆分,只要依次取原矩阵的第,用程序实现拆分,只要依次取原矩阵的第1 1、4 4、7 7、1010、13.13.个资料即得到个资料即得到B B矩阵,依次读取第矩阵
31、,依次读取第2 2、5 5、8 8、11.11.个数据即得到个数据即得到G G矩阵,依次读第矩阵,依次读第3 3、6 6、9 9、12.12.个资料即得到个资料即得到R R矩矩阵。得到阵。得到B B、G G、R R矩阵后再利用颜色转换公式很容易就可得到矩阵后再利用颜色转换公式很容易就可得到YCbCrYCbCr矩阵。矩阵。Y(nY(n)=0.114B(n)+0.587G(n)+0.299R(n)=0.114B(n)+0.587G(n)+0.299R(n)Cb(nCb(n)=0.5B(n)-0.3313G(n)-0.1687R(n)=0.5B(n)-0.3313G(n)-0.1687R(n)Cr(
32、nCr(n)=0.0813B(n)-0.14187G(n)+0.5R(n)=0.0813B(n)-0.14187G(n)+0.5R(n)(Forn=1ToPW*PH)(Forn=1ToPW*PH),其中,其中PWPW为为PwidthPwidth的简写,的简写,PHPH为为PhightPhight的简的简写。写。4 4、二维、二维、二维、二维DCTDCT变换变换变换变换zz由于由于VCVC中无法实现二维中无法实现二维DCTDCT计算公式,所以只有把二维的变换变成计算公式,所以只有把二维的变换变成先做一维,再做另一维的变换,俗称快速先做一维,再做另一维的变换,俗称快速DCTDCT变换。快速变换。快
33、速DCTDCT变换方变换方法如下:设一个大小为法如下:设一个大小为8 8的数组的数组SL(8)SL(8),先读取一个,先读取一个8*88*8块的第一行资料块的第一行资料值,赋给值,赋给SL(8),SL(8),对对SL(8)SL(8)进行一维进行一维DCTDCT变换后得到一个新的变换后得到一个新的SL(8)SL(8)数组,数组,再把再把SL(8)SL(8)数组覆盖到原来的数组覆盖到原来的8*88*8块中相应的地方去。做完第一行后再块中相应的地方去。做完第一行后再做第二行,一直做完做第二行,一直做完8 8行,一个行,一个8*88*8块的一维块的一维DCDC即告完成,然后再做即告完成,然后再做列方向
34、的第二维列方向的第二维DCTDCT变换,变换公式一样,只是由变换,变换公式一样,只是由SL(8)SL(8)取取8*88*8块的行块的行资料变成取列数值。做完后覆盖回原值,即得到一个资料变成取列数值。做完后覆盖回原值,即得到一个8*88*8块的块的DFTDFT系系数块,再重复这两个过程做第二个数块,再重复这两个过程做第二个8*88*8块块.一直到做完全部一直到做完全部8*88*8块(块(Y Y,CbCb,CrCr)。这样就得到)。这样就得到Y Y、CbCb、CrCr的的DFTDFT系数矩阵。系数矩阵。zz5 5、量化、量化读取读取Y Y矩阵中第一个矩阵中第一个8*88*8块,与量化系数矩阵中对应
35、的相乘,得到块,与量化系数矩阵中对应的相乘,得到的值覆盖回原矩阵,然后做第二个的值覆盖回原矩阵,然后做第二个8*88*8块,一直到做完全部块,一直到做完全部8*88*8块,块,然后做然后做CbCrCbCr矩阵的量化,用另外一个系数矩阵。矩阵的量化,用另外一个系数矩阵。zz6 6、“之之”字形扫描字形扫描zz7 7、哈哈夫曼编码夫曼编码哈哈夫曼编码时必须判断一个个夫曼编码时必须判断一个个DCDC(ACAC)的值,以及转换成二进)的值,以及转换成二进制代码后的码长,再去对照霍夫曼编码表进行编码,比如对一个制代码后的码长,再去对照霍夫曼编码表进行编码,比如对一个DCDC值编码,首先得先判断该值编码,
36、首先得先判断该DCDC的值在哪段范围内,在某一段范的值在哪段范围内,在某一段范围内的数值,其二进制代码长相等。并要让程序知道该围内的数值,其二进制代码长相等。并要让程序知道该DCDC的值到的值到底为多少,然后才能进行编码。底为多少,然后才能进行编码。zz8 8、压缩过程完成以后,接下去要做的工作便是码串存贮,存贮时、压缩过程完成以后,接下去要做的工作便是码串存贮,存贮时需要注意的需要注意的点是在抽样过程中得到点是在抽样过程中得到1 1个个Y Y块对应块对应1 1个个CbCb块合一个块合一个CrCr块的对应关系,在存贮时也要按这种对应关系存贮,即块的对应关系,在存贮时也要按这种对应关系存贮,即1
37、 1个个Y Y块块的码串后面紧接着存放与其对应的一个的码串后面紧接着存放与其对应的一个CbCb块的码串及一个块的码串及一个CrCr块的块的码串,循环往复,存完所有串。这样的码串,循环往复,存完所有串。这样的1 1个个Y8*8Y8*8块块+1+1个个CbCb块块+1+1个个CrCr简称为简称为MCUMCU,是,是JPEGJPEG格式的最小存贮处理单元。格式的最小存贮处理单元。zz在对一幅大小为在对一幅大小为100100,672bytes8672bytes8位位BMPBMP图像文件进行图像文件进行HuffmanHuffman编码编码过程中,作者按照以下步骤实现了的压缩和解压缩算法。过程中,作者按照
38、以下步骤实现了的压缩和解压缩算法。1)1)扫描位图文件的全部数据扫描位图文件的全部数据(对应用于调色板的编码对应用于调色板的编码),完成数据频,完成数据频度的统计。度的统计。2)2)依据数据出现的频度建立哈夫曼树。依据数据出现的频度建立哈夫曼树。3)3)将哈夫曼树的信息写入输出文件将哈夫曼树的信息写入输出文件(压缩后文件压缩后文件),以备解压缩时使,以备解压缩时使用。用。4)4)进行第二遍扫描,将原文件所有编码数据转化为哈夫曼编码,进行第二遍扫描,将原文件所有编码数据转化为哈夫曼编码,保存到输出文件。解压缩则为逆过程,以下是编码和解码的实现保存到输出文件。解压缩则为逆过程,以下是编码和解码的实
39、现算法。算法。zza)a)定义数据结构定义数据结构NodeNode如下:如下:StructStructNodeNodelongfreqlongfreq;/该节点符号的频率值,初值为该节点符号的频率值,初值为0 0intintparentparent;/该节点父节点的序号,初值为该节点父节点的序号,初值为1 1intintrightright;/该节点右子节点的序号,初值为该节点右子节点的序号,初值为1 1intintleftleft;/该节点左子节点的序号,初值为该节点左子节点的序号,初值为1 1BmptreeBmptree511511说明:说明:之所以有之所以有511511个节点,是因为每个
40、字节可表示的符号个数为个节点,是因为每个字节可表示的符号个数为256256个个(对应于对应于256256种颜色种颜色)二叉树有二叉树有256256个叶节点,根据二叉树的性质总节点个叶节点,根据二叉树的性质总节点数为数为 225622561 1511511个节点。这里用个节点。这里用0 0255255个元素来依次对应个元素来依次对应256256种颜种颜色。由第色。由第256256以后的元素来依次对应形成的各个父节点的信息,即父以后的元素来依次对应形成的各个父节点的信息,即父节点的编号从节点的编号从256256开始。开始。zzb)b)按照前述的压缩步骤,先对欲压缩文件的各个符号的使用次数进行按照前
41、述的压缩步骤,先对欲压缩文件的各个符号的使用次数进行统计,填充于统计,填充于bmptreebmptree0 0255255 freqfreq项内;在已有的节点中找出频项内;在已有的节点中找出频率最低的两个节点,给出它们的父节点,将两个节点号填充于父节点率最低的两个节点,给出它们的父节点,将两个节点号填充于父节点的的rightright,leftleft,将父节点号填充于两个节点的,将父节点号填充于两个节点的ParentParent内。重复步骤直到内。重复步骤直到根节点,建树工作完成。根节点,建树工作完成。建树完成后进行编码,对每个符号从符号的父节点开始。若节点建树完成后进行编码,对每个符号从符
42、号的父节点开始。若节点的父节点值不为的父节点值不为1 1,则一直进行下去,直到树根。回溯过程中遇左,则一直进行下去,直到树根。回溯过程中遇左出出0 0,遇右出,遇右出1 1输出编码。输出编码。zzHuffmanHuffman编码递归过程如下:编码递归过程如下:VoidBmpHuffVoidBmpHuffCode(intCode(int node,intnode,intchild)child)ifBmpifBmptreetreenodenodeParent!Parent!11;/父节点为父节点为1 1的节点是的节点是树根树根BmpHuffBmpHuffCode(BmpCode(Bmptreetr
43、eenodenodeparentparent,node)node);/若不为若不为1 1则递归则递归if(childif(child 1)1);/若不为叶节点若不为叶节点 if(childif(childbmptreebmptreenodenoderight)right);/右子节点,输出右子节点,输出“1”1”outputbit(1)outputbit(1);elseelseif(childif(childbmptreebmptreenodenodeleft)left);/左子节点,输出左子节点,输出“0”0”Outputbit(0)Outputbit(0);zzc)c)解码时从树根开始,遇
44、解码时从树根开始,遇1 1取右节点,遇取右节点,遇0 0取左节点,直到找到节点号小于取左节点,直到找到节点号小于256256的节点的节点(叶节点叶节点)。HuHnunHuHnun解码过程如下:解码过程如下:IntIntExpandExpandHuffman(VoidHuffman(Void)intintnodenodeRoot-node-leafRoot-node-leaf;/解码从根节点开始。解码从根节点开始。dodoHeadFlagHeadFlagGetonebitGetonebit()();/从编码串中读取一位。从编码串中读取一位。if(Headif(HeadFlagFlag0)0);/
45、若为若为“0”0”,nodenodeHuffman-TreeHuffman-Tree(node-256)*2(node-256)*2;/取当前节点的左节点号;取当前节点的左节点号;elseelseif(Headif(HeadFlagFlag1)1)若为若为“1”1”nodenodeHuffman-treeHuffman-tree)node-256)*2)node-256)*21 1;/取当前节点的右节点号;取当前节点的右节点号;While(nodeWhile(node 256)256);/节点号大于节点号大于256256继续循环继续循环 expanddataexpanddata-buffer-
46、buffercountercounternodenode;/输出解码得到一个字节输出解码得到一个字节压缩后的文件大小为压缩后的文件大小为4848,431bytes431bytes,压缩比为,压缩比为4848.1%1%,解压缩后的数据读,解压缩后的数据读出的图像正常。出的图像正常。系统简介系统简介系统简介系统简介zz主界面(这是一个用主界面(这是一个用主界面(这是一个用主界面(这是一个用vcvc+创建的一个图形界面。)创建的一个图形界面。)创建的一个图形界面。)创建的一个图形界面。)文件下拉菜单文件下拉菜单文件下拉菜单文件下拉菜单查看菜单栏查看菜单栏查看菜单栏查看菜单栏帮助菜单帮助菜单帮助菜单帮
47、助菜单 打印打印打印打印打开一个打开一个打开一个打开一个BMPBMP文档文档文档文档另存为另存为另存为另存为图像压缩图像压缩图像压缩图像压缩可调节的图像压缩比率可调节的图像压缩比率可调节的图像压缩比率可调节的图像压缩比率将将将将BMPBMP图像保存为图像保存为图像保存为图像保存为JPGJPG图像图像图像图像打开一个大小为打开一个大小为打开一个大小为打开一个大小为2.25M2.25M的的的的BMPBMP图片图片图片图片将压缩率调到将压缩率调到将压缩率调到将压缩率调到100%100%最终得到大小为最终得到大小为最终得到大小为最终得到大小为115K115K的的的的JPGJPG文档。文档。文档。文档。
48、(2.25M-115K2.25M-115K)将一张将一张将一张将一张BMPBMP图片采用不同压缩率,图片采用不同压缩率,图片采用不同压缩率,图片采用不同压缩率,得到的两张图片做对比,发现没有什么差别。得到的两张图片做对比,发现没有什么差别。得到的两张图片做对比,发现没有什么差别。得到的两张图片做对比,发现没有什么差别。zz到这里本设计已经达到设计要求。致谢zz此次毕业设计是在王丽老师精心指导和其他同学的帮助下完成的。从硬件的设计到软此次毕业设计是在王丽老师精心指导和其他同学的帮助下完成的。从硬件的设计到软件的编写和调试无不浸透着王老师的心血和其他同学的努力。在这几个月的时间里,件的编写和调试无
49、不浸透着王老师的心血和其他同学的努力。在这几个月的时间里,老师不仅以他们严谨的科学态度、广博的学识,而且以她宽厚待人、真诚正直的品德老师不仅以他们严谨的科学态度、广博的学识,而且以她宽厚待人、真诚正直的品德对学生言传身教,这些都将使我受益终身。借此机会,我向老师表示最崇高的敬意和对学生言传身教,这些都将使我受益终身。借此机会,我向老师表示最崇高的敬意和衷心的感谢。论文的完成过程中得到了资管系信息管理教研室其他老师广大同学无私衷心的感谢。论文的完成过程中得到了资管系信息管理教研室其他老师广大同学无私地帮助,在此对他们表示感谢。地帮助,在此对他们表示感谢。zz最后,衷心感谢各位专家在百忙之中对论文
50、给予评审。由于作者水平和时间的限制,最后,衷心感谢各位专家在百忙之中对论文给予评审。由于作者水平和时间的限制,文中难免有不足,疏漏甚至错误之处,恳请给予批评指正,以便在今后的学习中进一文中难免有不足,疏漏甚至错误之处,恳请给予批评指正,以便在今后的学习中进一步修正和完善,谢谢步修正和完善,谢谢!(五五五五)、参考文献、参考文献、参考文献、参考文献zz张旭东张旭东 卢国栋卢国栋 冯健,冯健,图像编码基础和小波压缩技术图像编码基础和小波压缩技术原理、原理、算法和标准算法和标准,清华大学出版社,北京,清华大学出版社,北京 20042004zz陆宗骐,陆宗骐,C/C+C/C+图像处理编程,清华大学出版