图像压缩标准JPEG
主要内容 JPEG背景 基于DCT的顺序编码模式 基于DPCM的无损编码模式 基于DCT的渐进编码模式 基于DCT的分层编码模式 2
JPEG背景 JPEG(Joint Photographic Experts Group) JPEG 标准 JPEG 标准适用范围 由 ISO和IEC两个组织机构联合组成的一个图像专家小组 负责制定静态的数字图像数据 压缩编码标准 JPEG 标准 该专家组开发的算法称为JPEG算法 JPEG 已经成为国际上通用图像的标准 JPEG 标准适用范围 灰度图像,彩色图像 静止图像的压缩,视频序列帧内图像压缩 JPEG可以大范围地调节图像码率和质量 3
JPEG背景 JPEG算法与颜色空间无关 颜色空间转换不包含在JPEG算法中 对于单色图像,只有一个亮度分量 对于YUV图像: 对于YUV采用不同的分辨率, 对每个不同分量的可以采用不同的量化参数和熵编码表。 可压缩来自不同颜色空间的图像:RGB,CMKY等 4
JPEG背景 JPEG核心算法 DCT DPCM 5
JPEG背景 对于一个图像分量,JPEG规定了4 种运行模式 基于DCT的顺序编码模式 (baseline CODEC) 单遍扫描完成一个图像分量的编码,扫描次序从左到右,从上到下。 基于DPCM(差分脉冲编码调制)无损编码模式 无损编码 压缩比可以达到2:1 基于DCT的渐进编码模式 通过多次扫描一幅图像分量的编码,提供了一个由粗到精的渐进码流结构。 基于DCT的分层编码模式 提供多分辨率的码流结构 6
基于DCT的顺序编码模式 算法基本步骤 将原图像用亮度、色差表示(分量图像采样4:1:1) 分成8×8数据块, 数据[0~255]转换为[-128~127] 进行正向离散余弦变换(FDCT) 量化(quantization) Z字形排列量化结果(zigzag scan) 使用DPCM对直流系数(DC)进行编码 使用行程编码对交流系数(AC)进行编码 熵编码(entropy coding):哈夫曼或算术编码 7
基于DCT的顺序编码模式 系统框架 8
基于DCT的顺序编码模式 图像块的划分 480*640彩色图像,由亮度Y 色差 Cb, Cr 表示,可划 分为 4800亮度块和 两份1200色度块 9
基于DCT的顺序编码模式 离散余弦变换(DCT) 残差图像的8×8块 DCT系数分布 残差图像 10
基于DCT的顺序编码模式 离散余弦变换(DCT) X的离散余弦变换(DCT)为Y, X ,Y是N × N 块 正变换FDCT 逆变换IDCT 11
基于DCT的顺序编码模式 离散余弦变换(DCT) DC 系数 12
基于DCT的顺序编码模式 缺省的量化方式 13
基于DCT的顺序编码模式 缺省的量化方式 量化表: 根据心理视觉加权函数得到的 量化:DCT变换系数除以量化步长,四舍五入取整 14
基于DCT的顺序编码模式 缺省的量化方式 15
基于DCT的顺序编码模式 缺省的量化方式 16
基于DCT的顺序编码模式 缺省的量化方式 17
基于DCT的顺序编码模式 缺省的量化方式 18
基于DCT的顺序编码模式 DC系数和AC系数的编码方式 DCT变换后,能量集中在左上角。 由于两个相邻的8×8子块的DC系数相差很小,采用DPCM对直流(DC)系数单独编码。 其它63个元素是交流(AC)系数,采用行程编码。 问题: 如何排列这63个系数? 为了保证低频分量先出现,高频分量后出现,同时增加连续“0”的个数,采用Zig-Zag的排列方法。 19
基于DCT的顺序编码模式 DC系数和AC系数的编码方式 20
基于DCT的顺序编码模式 DC系数和AC系数的编码方式 21
基于DCT的顺序编码模式 熵编码 JPEG标准规定了两种熵编码算法: 哈夫曼编码一般采用的是固定的哈夫曼表。 自适应算术编码 哈夫曼编码一般采用的是固定的哈夫曼表。 对亮度分量和色度分量采用了不同的哈夫曼表。 22
基于DCT的顺序编码模式 熵编码 哈夫曼编码包括两部分 对于DC系数 ,第一个字节的高4位为0000, 中间格式表示:用两个字节 可变长编码VLC 可变长整数编码VLI 对于DC系数 ,第一个字节的高4位为0000, 低4位为DC系数差值的比特数(size/category) 第二个字节为DC系数差值 23
基于DCT的顺序编码模式 熵编码 任意给定一个整数,通过查此表,获得其对应的比特数 24
基于DCT的顺序编码模式 熵编码 对于DC系数差 的category 编码 25
基于DCT的顺序编码模式 熵编码 26
基于DCT的顺序编码模式 熵编码 27
基于DCT的顺序编码模式 熵编码 28
基于DCT的顺序编码模式 熵编码 29
基于DCT的顺序编码模式 熵编码 对于DC系数,设前一个8×8子块DC系数的量化值为12,则本块DC系数与它的差为3,所以DC中间格式为(2)(3) 可以求得这个8×8子块熵编码的中间格式为 (DC)(2)(3), (1/2)(-2),(0/1)(-1),(0/1)(-1),(0/1)(-1), (2/1)(-1), (EOB)(0/0) 30
基于DCT的顺序编码模式 熵编码 字节1和字节2分别进行编码 零行程长度超过15个时,用一个符号ZRL(15/0),表示16个零 2个ZRL(15/0)表示32个零,3个ZRL(15/0)表示48个零。 块结束时用符号EOB (0/0)。 对字节1进行Hufffman编码(亮度,色差的Huffman码表不同)。 对字节2进行变长整数VLI编码 31
基于DCT的顺序编码模式 熵编码 举例: Size=6时,数的范围是(-63)~(-32)以及32~63, 对绝对值相同,符号相反的码字之间为反码关系。 AC系数32的码字为100000, AC系数33的码字为100001, AC系数-32的码字为011111, AC系数-33的码字为011110。 字节2的码字位于字节1的码字之后。 32
基于DCT的顺序编码模式 熵编码 熵编码过程举例 (DC)(2)(3): (2) : 011 (3): 11 (2)(3) 011 11 (2)(3) 011 11 (1/2)(-2): (1/2): 11011 -2是2的反码,为01; (1/2)(-2) 11011 01 (0/1)(-1): (0/1):00, (-1)是1的反码,为0; (0/1)(-1) 000 (2/1)(-1): 11100 0 (EOB)(0/0) : 1010 (DC)(2)(3),(1/2)(-2),(0/1)(-1),(0/1)(-1),(0/1) (-1),(2/1)(-1),(EOB)(0/0) 33
基于DCT的顺序编码模式 熵编码 熵编码过程举例 01111, 1101101, 000, 000, 000, 111000 1010(31bit) 31bits/64pixels, 码率 : 0.5bpp 一8×8子块亮度信息压缩后的数据流共31比特,其压缩比是64×8/31=16.5,大约每个象素用半个比特。 34
基于DCT的顺序编码模式
基于DPCM的无损编码模式 主要采用了三邻域二维预测编码和熵编码 无失真编码器 预测器 熵编码器 压缩的图像数据 源图像数据 表说明 36
基于DPCM的无损编码模式 主要采用了三邻域二维预测编码和熵编码 减去预测值,得到一个差值,差值不量化,直接进行熵编码(哈夫曼或者算术编码) 保证无失真地恢复原始图像 选择值 预测 非预测 4 a+b-c 1 a 5 a+(b-c)/2 2 b 6 b+(a-c)/2 3 c 7 (a+c)/2 c b a X 37
基于DCT的渐进的编码模式 基本思想 此模式与顺序模式编码步骤基本一致,不同之处在于递增模式每个图像分量的编码要经过多次扫描才完成。第一次扫描只进行一次粗糙的压缩,然后根据此数据先重建一幅质量低的图像,以后的扫描再作较细的扫描,使重建图像质量不断提高,直到满意为止 38
基于DCT的渐进的编码模式 渐进模式分为两种 按频段渐进 按位渐进 对DCT系数按照其数位由高至低分成若干段,依次对各段进行压缩编码,先对最有效位的N位进行编码传送,直至将全部系数传递完毕 39
基于DCT的渐进的编码模式 40
基于DCT的渐进的编码模式 41
基于DCT的渐进的编码模式 42
基于DCT的渐进的编码模式 DC系数 43
基于DCT的渐进的编码模式 DC系数 图 Progressive encoding example (spectral selection): (a) DC only; (b) DC + two AC; (c) all coefficients 44
基于DCT的分层编码模式 基本步骤 (1)降低原始图像的空间分辨率。 (2)对已经降低分辨率的图像按照顺序编码模式进行 压缩并存储或传输。 (3)对低分辨率图像进行解码,然后用插值法提高图 像的分辨率。 (4)将分辨率已经升高的图像作为原图像的预测值, 并把它与原图像的差值进行基于DCT的编码。 (5)重复步骤3、4直到图像达到完整的分辨率。 45
基于DCT的分层编码模式 基本步骤 46