JP EG 文件编/解码详解(1) JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写。它由国际电话与电报咨询委员会CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO 于1986 年联合成立的一个小组,负责制定静态数字图像的编码标准。 小组一直致力于标准化工作,开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法,即 JPEG 算法。JPEG 算法被确定为国际通用标准,其适用范围广泛,除用于静态图像编码外,还推广到电视图像序列的帧内图像压缩。而用 JPEG 算法压缩出来的静态图片文件称为 JPEG 文件,扩展名通常为*.jpg、*.jpe*.jpeg。 JPEG 专家组开发了两种基本的压缩算法、两种数据编码方法、四种编码模式。具体如下: 压缩算法: 有损的离散余弦变换(Discrete Cosine Transform,DCT); 无损的预测技术压缩。 数据编码方法: 哈夫曼编码; 算术编码; 编码模式: 基于DCT 顺序模式:编/解码通过一次扫描完成; 基于DCT 递进模式:编/解码需要多次扫描完成,扫描效果从粗糙到精细,逐级递进; 无损模式:基于DPCM,保证解码后完全精确恢复到原图像采样值; 层次模式:图像在多个空间多种分辨率进行编码,可以根据需要只对低分辨率数据作解码,放弃高分辨率信息。 在实际应用中,JPEG 图像使用的是离散余弦变换、哈夫曼编码、顺序模式。 JPEG 压缩编码算法的主要计算步骤如下: (0) 8*8 分块。 (1) 正向离散余弦变换(FDCT)。 (2) 量化(quantization)。 (3) Z 字形编码(zigzag scan)。 (4) 使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。 (5) 使用行程长度编码(RLE)对交流系数(AC)进行编码。 (6) 熵编码。 笔者在实践过程中查阅了大量的资料,发现大多数书籍资料和网上资料都是从编码角度分析 JPEG 的编/解码方式,并且都只是介绍编码过程中的主要方法。所以,本文从解码角度详细分析 JPEG 的编/解码过程,并且加入许多笔者实践过程中遇到的问题和解决方法,希望从另一个角度说明问题,以更好帮助读者结合其他资料解决问题。 不过,介绍解码过程之前,首先要了解JPEG 文件中数据的存储格式。 一、JPEG 文件格式介绍 JPEG 文件使用的数据存储方式有多种。最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF)。而 JPEG...