基于APIDCT和自适应霍夫曼编码的静态图像压缩算法
- 文件大小:435 (KB)
- 文档格式:.doc
文档分类: 计算机与科学
关于本文
- 本文标题:基于APIDCT和自适应霍夫曼编码的静态图像压缩算法.doc
- 链接地址:https://wk.sbvv.cn/view/21277.html
- 内容摘要:第一章绪论 1。1课题背景及研究意义 通信,人与人人与客观事物之间凭借某种媒介联系的信息传递或交流。人们存储记录或传输的发展。传统媒介传送储存信息的能力。为了能够大量且快速地储存记录和传输通信所需要的信息,并满足图像质量高传输速度快和设备稳定可靠的需求,信息需要在传输和存储时进行压缩,在接受和读取时进行解压。 图像是携带信息的重要载体,很多信息。使图像数字化解决图像的传输和存储把图像信息转换为数字信号,去除与图像质量的信息提高处理传输和存储的效率并且传输质量。编码压缩技术,图像信息的传输和存储。 图像的数据文件格式有很多,如BMPTIFFGIFPNGJPEG等。BMP几乎不进行压缩是操作系统中的标准图像文件格式,,PNGGIF和TIFF文件格式派生的无损压缩格式增加不具备的特性,JPEG由于其拥有较高的压缩比,被广泛应用于各类场合 1。2国内外研究现状 图像变换是图像压缩的关键技术之一,本质就是将原处于图像空间的图像通过某种变换,再利用变换后的的特性来进行处理。由于数字信号处理方法计算机的进步,]和[2]是对图像变换的处理。 自适应Huffman编码算法在压缩或传送图像时需要传送码表,不适用于实际应用。[3] 1。3目前存在的主要问题 JPEG标准是常用的图像之一,离散余弦变换,DCT,。图像经过DCT变化后,高频分量所含的能量少,低频分量所含的能量高,故需对低频分量细量化,可对高频分量粗量化。DCT有复杂的量化表,占用存储空间来存储改变压缩率计算,硬件实现。APIDCT的量化表有了很大的简化,可以用一个固定值来进行量化。且重建图像。 熵编码部分,静态哈夫曼方法需要两遍扫描原始数据第一遍数据中哈夫曼树第二遍哈夫曼树对进行编码存储编码信息解压时使用用于网络通信会引起较大的延时文件压缩磁盘会降低算法的数据压缩速度。 1。4本文内容和组织结构 (下称APIDCTJPEG)本文分为七章,各章的主要内容如下, 第一章本课题的研究背景及意义研究现状存在的问题。 第二章描述了APIDCTJPEG图像编解码的基本信息,介绍了APIDCTJPEG编解码的基本框架和基本概念。 第三章介绍压缩数据格式,对用到的标记具体说明。 第四章自适应Huffman编解码流程。 第五章由局部到系统编解码控制流程,。 第六章基于前人所做的工作基础,实现了一个APIDCTJPEG图像压缩程序,通过系统性能评测的实验分析并与传统JPEG的对比,证明该程序具有很好的实用性。 第七章总结与展望。对本论文进行的工作进行了总结,并对图像压缩未来的发展。 第二章APIDCTJPEG图像编解码的基本信息 2。1JPEG标准概述 ] JPEG定义了如下三种编码系统, 有损的离散余弦变换DCT 这一系统可应用于绝大部分场合。 无损的预测压缩技术 应用于无失真场合,此种功能确保了图像解压后的数据没有造成任何细节的损失。 扩展编码系统 扩展系统包括渐进编码变长编码和分层编码等,这些编码方法是基本顺序编码方法的扩展。 JPEG定义了如下两种熵编码方法, Huffman编码 DavidHuffman提出。它是静态编码方法,该算法可产生具有最小的加权路长之和的二叉树。[5] 2。算术编码 ] JPEG定义了如下四种方式, 基本DCT顺序,一次将图像由左到右由上到下顺序处理。 基于DCT的扩展,主体与基本DCT顺序相同,但图像传输时间较长时,使用多次扫描处理。 无失真编码,使用熵编码,不使用DCT变换,所以不产生失真。 分层编码,是以上三种编码方式的组合。 2。2APIDCTJPEG静态图像压缩算法编解码的基本框架 核心过程的编码器和解码器图示类似于DCT编解码器。基于APIDCT变换针对8×8的灰度图像数据流,如需对彩色图像进行处理,将每个分量当作灰度图像依次处理即可 图2。2。1编码器 图2。2。2解码器 编码过程中,将源数据图像分为8×8像素的像素块,每个像素块经过APIDCT变换,成为一组APIDCT系数。随后,64个系数经过量化器。量化器的量化因子来选定量化后,熵编码的前期准备工作。预测像素块量化后的DC系数,进行差分值编码。使用Zigzag扫描处理量化后的AC系数转换为一维序列之后,进行编码。本文对AC系数进行编码的方法为自适应Huffman方法。 2。3DCTAPIDCT模式 2。3。1DCT变换 8×8的DCT及IDCT的变换公式如下 JPEG基本系统中取值范围为0~255,为8bit像素,故DC系数的取值范围为0~2040。精度设置为8,输入像素的动态变化范围由无符号数转为有符号数减去即128,由0~256至128~127,反变换后再加上128,消除此偏移。 2。3。2DCT量化 8×8子像素块经过DCT变换后,子像素块的左上角大量集中低频分量,右下角大量集中高频分量。忽略掉图像的高频分量可以在视觉感受损失很小的情况下。去掉高频分量。 量化每个DC系数各自的量化步长得到T系数,公式如下, 反量化过程即是量化后的量化值乘对应的量化系数,恢复DC系数,公式如下, 亮度信号和色差信号的量化表,亮度信号比色度信号重要,故对亮度分量,对色差分量量化表左上的值较小达到抑制高频分量而右下角的值较大保持低频分量的目的。这两个量化表适用于8bit精度了人的视觉心理阈值和大量图像的预测得出。目前大部分JPEG中均采用这两个量化表。 表亮度信号的量化表表色差信号的量化表 2。3。3APIDCT预处理 APIDCT是基于DCT方法的改进,对于灰度图像,可跳过此步骤,对于彩色图像,需进行RGB转YUV的操作。 RGB转YUV在matlab中的代码如下, functionyuv=myrgb2yuv(image) image=double(image) R=image(::1) G=image(::2) B=image(::3) yuv(::1)=0。299。R+0。587。G+0。114。B yuv(::2)=0。1687。R0。3313。G+0。5。B+128 yuv(::3)=0。5。R0。4187。G0。0813。B+128 end 转为YUV三个分量后,仍需要进行采样,本论文采用4,1,1采样来缩小数据量。 2。3。3APDCT后期处理 后期处理需要将YUV分量转回RGB分量。 程序如下, functionrgb=myyuv2rgb(image) image=double(image) Y=image(::1) U=image(::2) V=image(::3) rgb(::1)=Y+1。14。V rgb(::2)=Y0。39。U0。58。V rgb(::3)=Y+2。03。U end 2。3。4APDCT变换 全相位反离散余弦变换,APIDCT,是一种新型变换矩阵,用来代替原版JPEG图像压缩算法中的DCT部分。 变换的公式为, 当N=8时,变换矩阵为 虽然矩阵V不正交即,但由于矩阵V满秩可以用其逆矩阵来完成数据的重建。 二维APIDCT表达式为 反变换公式为 2。3。5APDCT量化 APIDCT各个变换系数进行量化,所以能节省传输量化表。 像块经过APIDCT变换后,在系数矩阵上与DCT有相同的特性,即的低频高频频率分量反映在右下角。不同点在于APIDCT分别按照矩阵的行列进行逐渐增强的线性衰减。。7] 2。4本章小结 本章首先简要介绍了JPEG标准,然后介绍了的基本框架,最后对DCT和APIDCT予以介绍。 第三章压缩数据格式 标记码和压缩数据。标记部分图像的宽高量化因子等。 3。1APIDCTJPEG标记 标记码两个字节,高字节的固定格式是0XFF。表中列出了本文可能用到的APIDCTJPEG标记,并说明了这些标记的功能。 表31APIDCTJPEG标记码 如图31所示,APIDCTJPEG文件从FFD8开始,至FFD9结束。在FFD8至FFD9中,压缩的文件以帧为单位。在本设计中,处理的对象一帧。同时,帧中包含一个帧头和几个可选表,APIDCTJPEG所有的MCU都包含在一个熵编码段中。 图31APIDCTJPEG压缩文件格式 3。2APIDCTJPEG标记说明 下面将对本设计中用到的一些标记进行说明。 3。2。1量化表DQT APIDCT的量化表只有亮度和色差两个量化因子,如下图所示 图32量化表段语法 其中的参数说明见下表, 表32量化表参数说明 3。2。2帧头SO 帧头,包含了源图像的采样位深度行列数图像的分量数每种分量的水平和垂直采样因子和量化表的选取方式等关键信息。帧头语法如图所示, 图33帧头语法 表33帧头参数说明 3。2。3Huffman编码条件DHT DHT是对霍夫曼编码条件的定义,下图对其进行说明,下表对使用的参数进行说明, 图34霍夫曼语法表 表34霍夫曼表参数说明 3。2。4扫描头SOS 扫描头出现在扫描段之前,制定了扫描的分量数,每个分量选取霍夫曼编码的方式,如下图所示。参数说明见下表。 图35扫描头语法 表35扫描头参数说明 3。3本章小结 本章介绍了压缩格式和APIDCTJPEG所用的标记,为不同应用环境交流奠定了基础。 第四章Huffman编码 1952年,DavidAHuffman。Huffman编码是可变字长编码为每一个字符构造不同的的平均长度最短的码字。Huffman编码思想是将较短的编码码字分配给较大概率的信源输出将较长的编码码字分配给较小概率的信源输出。在JPEG算法中,可以采用固定码表的Huffman编码,也可根据实际情况,实时构建码表。这种方法一般称作自适应Huffman编码。本文即采用自适应Huffman编码算法。 4。1原理 自适应霍夫曼编码关键是在霍夫曼树中增添新字符前t个字符的霍夫曼树调整为一颗前t+1个字符的霍夫曼树。自适应霍夫曼编码过程主要包括霍夫曼树初始化和更新。 自适应霍夫曼编码方式不需要或储存uffman树,其建树过程发生在编码进行时,同时因为这种编码方案对符号的统计是实时进行的,故编码时,同一符号的编码可能发生改变,同一编码代表的符号也可能不同。 4。2编码 4。2。1初始化 由于自适应霍夫曼编码方式只进行一次字符扫描,提前不知道各个字符的概率,以对一切字符一视同仁为初衷,霍夫曼树初始化时只包括一个叶子节点,定义任何一个符号的符号。当存在一个即将编码的符号时,系统输出NYT符号的原始表达,解码器检测到NYT符号,表示下面的符号是需要填入霍夫曼树的新符号。NYT新符号插入点。 4。2。2霍夫曼树更新 构建自适应霍夫曼树时,节点的编号有兄弟属性需要遵守重要原则 ,1,节点编号较大代表节点的权重值大。 ,2,子节点编号小于父节点。 霍夫曼树的更新过程如下 ,1增加输入字符的所在叶结点的权重 ,2,检测增加字符后的新霍夫曼树是否满足兄弟特性,满足则保持树的结构不变跳过,3,执行,4,。不满足兄弟特性则继续执行,3,。 ,3,调整霍夫曼树结构的具体操作为,与序号高于该结点,且权重小于该结点的结点交换字符及权重。若复数个结点满足此条件,则与最右边的结点或结点及其子树进行交换。 ,4,调整后的霍夫曼树该指针结点及以上的父节点直至根节点需权重加1 自适应huffman编码流程图如下, 4。3解码 解码时霍夫曼树构建的方法与编码时一样,流程图如下 4。4霍夫曼编码方法 4。4。1Zigzag扫描排列 未经处理的8×8像素块中的值是二维的,为了便于进行处理,先将其整合为一维数字序列ZZ(i)。Zigzag扫描主要目的是将二元信号转化为一元信号。扫描后的顺序设为ZZ(k)(k=01。63)。 即有 ZZ(0)=ZZ(1)ZZ(2)。ZZ(63)= 其中,ZZ(0)是DC系数,ZZ(1)~ZZ(63)是AC系数。霍夫曼编码针对DC系数间的差分值Diff以及AC系数连续零值个数和非零值的AC系数进行编码。 图4扫描 4。4。2DC差分值编码 1。DC差分值编码的方法 在此步骤中,进行的是DC差分值的编码。将前一像块的ZZ(0)即DC(i1)作为当前像块ZZ(0)即DC(i)的预测值PRED,对差分值进行无失真编码。DC系数范围为1024~1023,由此可知,对应DIFF的范畴为2047~2047。在编码中,求出DIFF对应的范畴SSSS将DC差分值分组。然后将指定DIFF值的补充比特增加在霍夫曼编码的后面。具体规则为, 补充比特的最高位为,正数,最高位为0,负数。 2。DC差分值编码的实现 DC差分值编码的流程图为图412,Encode_DC_coffcients实现DC差分值编码,Encode_DIFF增添补充比特。 ,b,DC差分值编码子程序 图44DC差分值编码流程图 4。4。3AC系数编码 1。AC系数编码的方法 在编码工作进行前,首先应将非零的AC系数前的零值AC系数表达为四比特的RRRR(0),非零值的AC系数表示为四比特的SSSS(方法同DC差分值求SSSS方法),这样可以将连续零值用一组编码表示,从而提高效率。 但此项处理中存在一些特别的情况, AC系数中包含16个连续零值 因为四比特不能表示16个以上的零值行程,故以ZRL,ZeroRumLength,表示RRRRSSSS=150来表示16个零值输出对应的编码。 最后的AC系数ZZ,63,为零值 此时将块最后的零值用EOB,EndOfBlock,来表示RRRRSSSS=00,输出EOB后,立即结束该块的编码处理,否则不能使用EOB 表AC系数,亮度分量,霍夫曼编码的例子 ZRL和EOB以外的霍夫曼编码应添加补充比特来指定非零AC系数大小。 4。5霍夫曼解码方法 4。5。1DC差分值编码 三步, ,1,从获取对应的字,解码后得到编码要素SSSS范畴。 ,2,补充比特来得到DC差分值DIFF。 ,3,DIFF最高位如果为,将其转换为负数。 当前像素块德ZZ(0)由算出来的差分值DIFF和前一像素块的DC系数相加得到。公式如下, 4。5。2AC系数编码 AC系数的解码按照如下六个步骤进行, 首先将AC系数组ZZ,K,,K1,全部置为0。 从获取对应的字,解码后得到编码要素零行程和非零AC系数。 从编码要素中得到零行程RRRR和AC系数的SSSS。 如果监测出EOB即RRRRSSSS=00,立即停止对该块的处理,并将剩下的AC系数全部置为0。 如果检测出ZRL即RRRRSSSS=150,更新16个AC后,返回步骤,2, 如果SSSS不为零,读取补充比特,当补充比特的高位为0时,,如此时的系数地址为63,中止解码并返回步骤,2,。 4。6编码性能相关的参数 1。熵 信息熵这个词用来描述信源的不确定度。熵的计算公式为, 其中是从N个数中选定一个数s的概率,是该事件包含的信息量。 冗余度 数据中间常存在一些多余成分,不管是无损压缩还是有损压缩,这些部分都是一定会被压缩的多余部分。冗余度的计算公式如下, 编码效率 编码效率定义为原始图像的熵与图像平均码长的比值,当编码效率为1时,冗余度为0,此时编码效率最高。计算公式如下, 压缩比 图像的压缩比特率定义为像素编码的位数。压缩比定义为原始图像的压缩比特率与编码后的平均比特率之比。由香农无干扰编码可知,无失真编码的最大压缩比为 4。7本章小结 本章描述了Huffman简表生成原理,然后介绍了Huffman编解码表的生成流程,最后介绍了DCAC系数编解码。 第五章编解码流程 前几章均是对压缩算法的原理进行介绍,本章将详细讲解编解码控制流程。 5。1编码控制流程 5。1。1图像编码控制流程 流程如图所示,自图像开始标记,SOI,至图像结束标志,EOI,结束 5。1。2帧编码控制流程 帧编码控制流程如图52,表格标记优于SO标记,添加DQT标记之后,添加帧标记,之后扫描编码。由于设计上一帧一次扫描,程序流程图直线向下。 图51图像编码控制流程图图52帧编码控制流程图 5。1。3扫描编码控制流程 扫描编码控制流程如53所示。...
- 版权声明:知知范文网 本站所有内容的版权归相应内容作者或权利人所有,本站不对涉及的版权问题负法律责任。
- 内容来源:本站所有内容均有网络公开等合法途径整理而来,该资料仅作为交流学习使用,并无任何商业目的,任何访问,浏览本站,购买或者未购买的人,就代表已阅读,理解本条声明
- 免责声明:内容所标价格,是对本站搜集、整理资料以及本站运营必须费用支付的适当补偿,资料索取者尊重版权方的知识产权,谢谢!