|
知识路径: > 多媒体数据压缩编码技术基础 > 数据压缩编码标准 > 静态图像压缩编码标准 >
|
被考次数:28次
被考频率:高频率
总体答错率:39%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
考试要求:熟悉
相关知识点:11个
|
|
|
|
JPEG(Joint Photographic Experts Group,联合图像专家组)是国际标准化组织(ISO)与IEC组成的专家组,负责制定静态图像的编码标准。
|
|
|
1992年9月,JPEG推出了ISO/IEC 10918标准,简称JPEG标准,适用于灰度图与真彩图的静态图像的压缩。1999年又推出了ISO/IEC 14495标准,简称JPEG-LS标准(Lossless Standard,无损标准),适用于灰度图与真彩图的静态图像的无损与接近无损压缩。2000年12月,JPEG又推出了比JPEG标准的压缩率更高、性能更优越的JPEG 2000标准ISO/IEC 15444,适用于二值图、灰度图、伪彩图和真彩图的静态图像压缩。
|
|
|
|
JPEG专家组开发了两种基本的压缩算法,一种是采用以DCT为基础的有损压缩算法,另一种是采用以预测技术为基础的无损压缩算法。以DCT为基础的有损压缩算法可以分为变换、量化和熵编码三个主要步骤。
|
|
|
JPEG在使用DCT进行有损压缩时压缩比可调整,在压缩10~30倍后,图像效果仍然不错,因此得到了广泛的应用(尤其是在网络中)。
|
|
|
JPEG压缩算法中的有损压缩利用了人的视觉系统的特性,使用量化和无损压缩编码相结合以去掉视觉的冗余信息和数据本身的冗余信息。JPEG属于结合变换编码(DCT)与熵编码(RLE/Huffman)的混合编码。JPEG算法框图如下图所示。
|
|
|
|
|
JPEG算法与颜色空间无关,因此在JPEG算法中没有包含对颜色空间的变换。JPEG算法处理的彩色图像是单独的颜色分量图像,因此它可以压缩来自不同彩色空间的数据,如RGB、YCbCr和CMYK等。
|
|
|
|
|
8×8分块;正向离散余弦变换(FDCT);量化(quantisation); Z字形编码(zigzag scan);使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码;使用行程长度编码(RLE)对交流系数(AC)进行编码;熵编码(Huffman或算术);组成位数据流。
|
|
|
|
JPEG编码需要先将整个图像分成8×8像素的图像块,然后对每个图像块分别进行编码。在划分过程中,对于不足部分可以通过重复图像的最后一行/列进行填充。被划分成功的图像块作为二维正向离散余弦变换的输入。
|
|
|
|
JPEG编码对每个单独的颜色图像分量分别进行正向离散余弦变换(Forward Discrete Cosine Transform, FDCT)。
|
|
|
FDCT变换的好处在于:通过FDCT变换可以把能量集中在频率较低的少数的几个系数上。例如,对于一个8×8像素的灰度图像块进行FDCT变换后的数值如下图所示。
|
|
|
|
|
|
|
其中,f(i,j)是图像样本矩阵或样本的预测误差矩阵,F(u,v)是f(i,j)经过FDCT变换后的系数矩阵。
|
|
|
|
其中,F(0,0)称为直流系数(Direct Current, DC),表示8×8个像素值的平均值。其他F(u,v)称为交流系数(Alternating Current, AC)。其逆变换使用下式计算。
|
|
|
|
|
经过FDCT变换后的系数,其数值变化较多,不利于编码。为了将系数数值映射到更小的取值范围,可以使用量化(quantisation)实现。通过量化可以减小非0系数的幅度和增加0值系数的数目。当然,量化也是导致图像质量下降的主要原因。
|
|
|
JPEG的有损压缩算法使用均匀标量量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值确定的。
|
|
|
由于人眼对亮度信号比对色差信号更敏感,因此JPEG编码中使用了亮度量化表和色差量化表两种标准的量化表,参见下1表和下2表。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小。
|
|
|
|
|
|
|
|
|
其中,Sq(u,v)为量化后的结果,F(u,v)为FDCT系数,Q(u,v)为量化表中的数值,round为舍入取整函数。
|
|
|
|
量化后的二维系数需要重新编排并转换为一维系数,为了增加连续的0系数的个数,即0的游程长度,JPEG编码中AC系数的编排采用Z字形编排方法,其编排的序号顺序如下图所示。
|
|
|
|
|
这样就把一个8×8的矩阵变成了一个1×64的矢量,频率较低的系数放在矢量的头部。
|
|
|
|
DC直流系数有两个特点:一是系数的数值比较大;二是相邻图像块的DC系数的数值变化不大。根据这些特点,JPEG算法使用了差分脉冲编码调制(DPCM)技术,对相邻图像块之间的DC系数的差值Δ进行如下编码。
|
|
|
|
其中,k表示当前的编码块,k-1表示前一个编码块。
|
|
|
|
量化AC系数的特点是1×63矢量中包含有许多0系数,并且许多0是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。
|
|
|
JPEG使用了1字节的高4位表示连续0的个数,使用它的低4位表示编码下一个非0系数所需要的位数,紧随其后的是量化AC系数的数值。
|
|
|
|
使用熵编码还可以对DPCM编码后的直流DC系数和RLE编码后的交流AC系数做进一步压缩。
|
|
|
在JPEG有损压缩算法中,通常使用Huffman或算术编码减少熵。使用Huffman编码器的理由是可以使用很简单的查表(lookup table)方法进行快速编码。当压缩数据符号时,Huffman编码器为出现频度较高的符号分配较短的代码,而为出现频度较低的符号分配较长的代码,这种可变长度的Huffman码表可以事先定义。
|
|
|
下表所示为DC码表符号举例,如果DC的值(value)为4,符号SSS用于表达实际值所需要的二进制位数,则SSS的实际位数为3。
|
|
|
|
|
|
JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是便于传输、存储和译码,这样组织的数据通常称为JPEG位数据流(JPEG bitstream)。
|
|
|
|
JPEG 2000是一种用于二值图、灰度图、伪彩图和真彩图的静态图像压缩标准,它采用的是性能比FDCT更优秀的DWT(Discrete Wavelet Transform,离散小波变换)。JPEG 2000编译码过程与JPEG相似,只不过其采用的是离散小波变换,具体流程如下图所示。
|
|
|
|
|
与JPEG类似,JPEG 2000标准也是以图像块作为单元进行处理的,不同的是JPEG 2000对图像块的大小没有限制。图像的变换、量化和熵编码等所有处理都以图像块为单元。这样做的好处有两个:一是可以降低对存储器的要求,二是便于抽出一幅图像中的部分图像。但其缺点是图像质量会有所下降,但不明显。
|
|
|
JPEG 2000标准使用子带分解把样本信号分解成低通样本和高通样本。低通样本表示降低了分辨率的粗糙图像数据样本,高通样本表示降低了分辨率的细节图像数据样本。通过高通样本,低通样本可以重构出分辨率更高的图像。
|
|
|
与原来的JPEG相比,JPEG 2000标准既提高了性能,又增加了功能。在相同质量下,JPEG 2000标准的压缩比比JPEG提高了近30%。
|
|
|
JPEG 2000标准支持多分辨表示,利用小波变换的多分辨特性,在JPEG 2000码流中包含了各个分辨率的信息,只需压缩一次,便可得到多种分辨率的解压方式。因此,一个单一的JPEG 2000码流可以同时满足不同分辨率应用的需要,如高分辨率的打印机、中分辨率的显示器和低分辨率的手持设备等。
|
|
|
JPEG 2000标准支持多种类型的渐进传输,可以从轮廓到细节渐进传输,适用于窄带通信和低速网络。JPEG 2000标准支持四维渐进传输:质量(改善)、分辨率(提高)、空间位置(顺序/免缓冲)和分量(逐个)。
|
|
|
JPEG 2000标准还支持兴趣区(Region of Interest, ROI)编码,用户可以指定图片上感兴趣的区域,在压缩编码时可以对这些区域指定压缩质量,在显示解码时还可以指定新的兴趣区以指导传输方的编码。
|
|
|