1、4 6 2JPEG标准压缩编码算法及其实现技术 JPEG标准定义了两种基本压缩算法 1 基于DCT变换有失真的压缩算法 2 基于空间预测编码DPCM的无失真压缩算法 一 无失真的预测编码 无失真编码器 原图象数据 预测器 熵编码器 压缩图象数据 表说明 1 预测器x是预测值x是该点的实际值cbax 预测方法选择位预测0非预测1a2b3c4A B C5A B C 2 6B A C 2 7A B 2 1 2 3是一维预测4 5 6 7是二维预测2 1的压缩 2 熵编码器x x差值进行无失真的熵编码或算术编码压缩比可达2 1倍 二 基于DCT的有失真压缩编码 有两种不同性能的层次 基本系统Basel
2、ineSystem 增强系统ExtendedSystem Progressive方式自适应算法编码框图如下 DCT变换 量化器 压缩图象数据 表说明 表说明 原图象数据 熵编码器 8 8块 这两个图表示同一单分量YUVRGB 压缩图象数据 熵解码器 量化器 IDTC 恢复图象数据 表说明 表说明 1 离散余弦变换 DCT JPEG采用8 8二维离散余弦变换 DCT DiscreteCosineTransform 分成8 8小块 采样精度为p位 无符号的整数 0 2 1 变成有符号的整数 2 2 1 输入时要变成有符号的数 输出时要变回来 2 2 1 变成 0 2 1 p P 1 P 1 P 1
3、 P 1 p 8 8FDCT和IDCT表达式如下 量化 均衡量化器其量化间隔是等长的非均衡量化器其量化间隔是不等长的自适应量化器其量化间隔是随传送数据而变 为了达到压缩的目的 对DCT系数进行量化处理 JPEG利用线性均匀量化器 多到一的映射产生误差 F u v IntegerRound F u v Q u v Q u v 是量化器步长 随位量和彩色分量不同 F u v F u v Q u v Q Q Q 量化特性 亮度量化表 色度量化表 差分DC编码 AC系数 Z 字顺序 帧间编码 熵编码 对于DC和AC行程码 再作基于统计特性的熵编码 分两步进行 1 首先把DC码和AC行程码转换成中间符号
4、序列 2 然后对这些符号序列赋以变长的码字 1 中间格式由两个符号组成 符号1 行程 尺寸 分组 符号2 幅值 2 可变长熵变码63个AC系数表示符号1符号2零行程长度超过15 有多个符号1块结束EOB只有符号1 00 K0123456789 303132 63系数125 20200010 10按JPEG基本系统编码给出该子块的编码 1 对DC系数12 落入 15 8 8 15 查表4 13 P312页 得4 查亮度DC系数表4 15 P314页 得101而12为1100所以得到编码1011100ZZ 0 12 例 设某亮度子块的序列如下 zz k 2 对AC系数ZZ 1 5 落入 7 4 4
5、 7 查表4 13 P312页 得3 因为与ZZ 0 间无0个数 所以NNNN 0用0 3查亮度AC系数表4 17 P315页 得100而ZZ 1 5为101所以得到编码100101ZZ 1 5 3 对AC系数ZZ 2 2 落入 3 2 2 2 查表4 13 P312页 得2 因为与ZZ 2 间无0个数 所以NNNN 0用0 2查亮度AC系数表4 17 P315页 得01而ZZ 2 2为01所以得到编码0101ZZ 2 2 4 对AC系数ZZ 3 0ZZ 4 2中间有一个0ZZ 4 2查表4 13 P312页 得2 因为与ZZ 3 间有1个0 所以NNNN 1用1 2查亮度AC系数表4 17
6、P315页 得11011而ZZ 4 2为10所以得到ZZ 3 ZZ 4 编码1101110 5 对AC系数ZZ 5 ZZ 7 0ZZ 8 1中间有3个0ZZ 8 1查表4 13 P312页 得1 因为与ZZ 5 间有3个0 所以NNNN 3用3 1查亮度AC系数表4 17 P315页 得111010而ZZ 8 1为1所以得到ZZ 5 ZZ 8 编码1110101 6 ZZ 9 ZZ 30 0ZZ 31 10的个数 30 9 1 22 15所以先编一个F 0ZRL查表4 17得到编码1111111100122 16 6个零6 1 1111011 1 0编码11110110 7 ZZ 32 ZZ 63 0用EOB结束 查表4 17 0 0 1010 符号2的编码规则 正数负数例 正数符号2负数符号24100 40115101 50106110 60017111 7000 符号2 结论 1 零不需编码 2 正数编码为原码 且高位为 1 码长为最高位为1 3 负数为该数绝对值的反码 且高位为 0 码长同其绝对值码长一致 在由程序实现时 负数的编码只须 负数 负数 1 然后直接取低位