460 likes | 856 Views
图像压缩标准 JPEG. 主要内容. JPEG 背景 基于 DCT 的顺序编码模式 基于 DPCM 的无损编码模式 基于 DCT 的渐进编码模式 基于 DCT 的分层编码模式. JPEG 背景. JPEG(Joint Photographic Experts Group) 由 ISO 和 IEC 两个组织机构联合组成的一个图像专家小组 负责制定静态的数字图像数据 压缩编码标准 JPEG 标准 该专家组开发的算法称为 JPEG 算法 JPEG 已经成为国际上通用图像的标准 JPEG 标准适用范围 灰度 图像, 彩色 图像
E N D
主要内容 • JPEG背景 • 基于DCT的顺序编码模式 • 基于DPCM的无损编码模式 • 基于DCT的渐进编码模式 • 基于DCT的分层编码模式 2
JPEG背景 • JPEG(Joint Photographic Experts Group) • 由 ISO和IEC两个组织机构联合组成的一个图像专家小组 • 负责制定静态的数字图像数据 压缩编码标准 • JPEG 标准 • 该专家组开发的算法称为JPEG算法 • JPEG 已经成为国际上通用图像的标准 • JPEG 标准适用范围 • 灰度图像,彩色图像 • 静止图像的压缩,视频序列帧内图像压缩 • JPEG可以大范围地调节图像码率和质量 3
JPEG背景 • 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的顺序编码模式 • 熵编码 • 哈夫曼编码包括两部分 • 中间格式表示:用两个字节 • 熵编码 可变长编码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 (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
基于DPCM的无损编码模式 • 主要采用了三邻域二维预测编码和熵编码 无失真编码器 预测器 熵编码器 压缩的图像数据 源图像数据 表说明 DPCM预测编码框图 36
基于DPCM的无损编码模式 • 主要采用了三邻域二维预测编码和熵编码 减去预测值,得到一个差值,差值不量化,直接进行熵编码(哈夫曼或者算术编码) 保证无失真地恢复原始图像 37
基于DCT的渐进的编码模式 • 基本思想 • 此模式与顺序模式编码步骤基本一致,不同之处在于递增模式每个图像分量的编码要经过多次扫描才完成。第一次扫描只进行一次粗糙的压缩,然后根据此数据先重建一幅质量低的图像,以后的扫描再作较细的扫描,使重建图像质量不断提高,直到满意为止 38
基于DCT的渐进的编码模式 • 渐进模式分为两种 • 按频段渐进 • 一次扫描中,只对DCT变换中的某些频段的系数进行编码传送,然后累进的方式对其他频段进行编码与传送,直至将全部系数传递完毕 • 按位渐进 • 对DCT系数按照其数位由高至低分成若干段,依次对各段进行压缩编码,先对最有效位的N位进行编码传送,直至将全部系数传递完毕 39
基于DCT的渐进的编码模式 DC系数 43
DC系数 图 Progressive encoding example (spectral selection): (a) DC only; (b) DC + two AC; (c) all coefficients 基于DCT的渐进的编码模式 44
基于DCT的分层编码模式 • 基本步骤 (1)降低原始图像的空间分辨率。 (2)对已经降低分辨率的图像按照顺序编码模式进行 压缩并存储或传输。 (3)对低分辨率图像进行解码,然后用插值法提高图 像的分辨率。 (4)将分辨率已经升高的图像作为原图像的预测值, 并把它与原图像的差值进行基于DCT的编码。 (5)重复步骤3、4直到图像达到完整的分辨率。 45
基于DCT的分层编码模式 • 基本步骤 46