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