《JPEG标准压缩编码算法及其实现技术.ppt》由会员分享,可在线阅读,更多相关《JPEG标准压缩编码算法及其实现技术.ppt(28页珍藏版)》请在三一办公上搜索。
1、4.6.2 JPEG标准压缩编码算法及其实现技术,JPEG 标准定义了两种基本压缩算法:(1).基于DCT变换有失真的压缩算法。(2).基于空间预测编码DPCM的无失真 压缩算法。,一.无失真的预测编码,无失真编码器,原图象数据,预测器,熵编码器,压缩图象数据,表说明,(1).预测器 x是预测值 x是该点的实际值 c b a x,预测方法选择位 预测 0 非预测 1 a 2 b 3 c 4 A+B-C 5 A+(B-C)/2)6 B+(A-C)/2)7 A+B/2,1、2、3是一维预测4、5、6、7是二维预测2:1的压缩,(2).熵编码器 x-x 差值进行无失真的熵编码或算术编码压缩比可达2:
2、1倍。,二.基于DCT 的有失真压缩编码,有两种不同性能的层次,基本系统Baseline System,增强系统Extended System,Progressive方式自适应算法编码框图如下:,DCT变换,量化器,压缩图象数据,表说明,表说明,原图象数据,熵编码器,8*8块,这两个图表示同一单分量 Y U V R G B,压缩图象数据,熵解码器,量化器,IDTC,恢复图象数据,表说明,表说明,1.离散余弦变换(DCT),JPEG采用8*8二维离散余弦变换。DCT(Discrete Cosine Transform)分成8*8小块。采样精度为p位,无符号的整数(0,2-1)变成有符号的整数(-
3、2,2-1)。输入时要变成有符号的数,输出时要变回来。(-2,2-1)变成(0,2-1),p,P-1,P-1,P-1,P-1,p,8*8 FDCT 和 IDCT表达式如下:,量化,均衡量化器 其量化间隔是等长的非均衡量化器 其量化间隔是不等长的自适应量化器 其量化间隔是随传送数据而变,为了达到压缩的目的,对DCT系数进行量化处理,JPEG利用线性均匀量化器,多到一的映射产生误差。F(u,v)=Integer Round(F(u,v)/Q(u,v)Q(u,v)是量化器步长,随位量和彩色分量不同。F(u,v)=F(u,v)*Q(u,v),Q,Q,Q,量化特性,亮度量化表,色度量化表,差分DC编码,
4、AC系数“Z”字顺序,帧间编码,熵编码,对于DC和AC行程码,再作基于统计特性的熵编码。分两步进行:1.首先把DC码和AC行程码转换成中间符号序列。2.然后对这些符号序列赋以变长的码字。(1).中间格式由两个符号组成:符号1,行程,尺寸(分组)符号2,幅值,(2).可变长熵变码 63个AC系数表示符号1 符号2 零行程长度超过15,有多个符号1 块结束 EOB 只有符号1(00),K 0 1 2 3 4 5 6 7 8 9-30 31 32-63 系数 12 5-2 0 2 0 0 0 1 0-1 0 按JPEG基本系统编码给出该子块的编码。(1).对DC系数12,落入(-15.-8,8.15
5、)查表4.13(P312页)得4;查亮度DC系数表4.15(P314页)得 101 而12为1100 所以得到编码1011100 ZZ(0)=12,例:设某亮度子块的序列如下,zz(k),(2).对AC系数ZZ(1)=5,落入(-7-4,47)查表4.13(P312页)得3;因为与ZZ(0)间无0个数,所以NNNN=0用 0/3 查亮度AC系数表4.17(P315页)得 100 而ZZ(1)=5为101 所以得到编码100101 ZZ(1)=5,(3).对AC系数ZZ(2)=-2,落入(-3-2,2-2)查表4.13(P312页)得2;因为与ZZ(2)间无0个数,所以NNNN=0用 0/2 查
6、亮度AC系数表4.17(P315页)得 01 而ZZ(2)=-2为01 所以得到编码0101 ZZ(2)=-2,(4).对AC系数ZZ(3)=0 ZZ(4)=2 中间有一个0 ZZ(4)=2 查表4.13(P312页)得2;因为与ZZ(3)间 有1个0,所以NNNN=1用 1/2 查亮度AC系数表4.17(P315页)得 11011 而ZZ(4)=2为10所以得到 ZZ(3)-ZZ(4)编码1101110,(5).对AC系数ZZ(5)-ZZ(7)=0 ZZ(8)=1 中间有3个0 ZZ(8)=1 查表4.13(P312页)得1;因为与ZZ(5)间 有3个0,所以NNNN=3用 3/1 查亮度A
7、C系数表4.17(P315页)得 111010 而ZZ(8)=1为1所以得到 ZZ(5)-ZZ(8)编码1110101,(6).ZZ(9)-ZZ(30)=0 ZZ(31)=-1 0的个数:30-9+1=22 15 所以先编一个 F/0 ZRL 22-16=6个零 6/11111011-1 0 编码11110110,(7).ZZ(32)-ZZ(63)=0 用EOB结束(查表4.17),0/01010,符号2的编码规则:,正数 负数 例:正数 符号2 负数 符号2 4 100-4 011 5 101-5 010 6 110-6 001 7 111-7 000,符号2,结论:,1.零不需编码。2.正数编码为原码,且高位为“1”(码长为 最高位为1)。3.负数为该数绝对值的反码,且高位为“0”(码长同其绝对值码长一致)。在由程序实现时,负数的编码只须“负 数=负数-1”,然后直接取低位。,