表6:DQT(定义量化表)
--------------------------------------------------------------------------
名 称 字节数 值 说明
--------------------------------------------------------------------------
段 标识 1 FF
段类型 1 DB
段长度 2 43 其值=3+n(当只有一个 QT时)
(以下为段内容)
QT信息 1 0-3位:QT号
4-7 位:QT精度(0=8bit,1字节;否则=16bit,2字节)
QT n n=64×QT精度的字节数
--------------------------------------------------------------------------
说明:
①JPEG文件一般有2个DQT段,为Y值(亮度)定义1个, 为C值(色度)定义1个。
②一个DQT段可以包含多个 QT, 每个都有自己的信息字节
表7:SOF0(图像基本信息)
--------------------------------------------------------------------------
名 称 字节数 值 说明
--------------------------------------------------------------------------
段 标识 1 FF
段类型 1 C0
段长度 2 其值=8+组件数量×3
(以 下为段内容)
样本精度 1 8 每个样本位数(大多数软件不支持12和16)
图片高度 2
图片宽度 2
组 件数量 1 3 1=灰度图,3=YCbCr/YIQ 彩色图,4=CMYK 彩色图
(以下每个组件占用3字节)
组 件 ID 1 1=Y, 2=Cb, 3=Cr, 4=I, 5=Q
采样系数 1 0-3位:垂直采 样系数
4-7位:水平采样系数
量化表号 1
---------------------------------------------------------------------------
说明:
①JPEG大都采用yCrCb色彩模型(y表示亮度,Cr红色分量,Cb表示蓝色分量),所以组件数量一般=3
②样本就是单个像 素的颜色分量,也可理解为一个样本就是一个组件
③采样系数是实际采样方式与最高采样系数之比,而最高采样系数一般=0.5(分数表示为1/2)。 比如说,垂直采样系数=2,那么2×0.5=1,表示实际采样方式是每个点采一个样,也就是逐点采样;如果垂直采样系数=1,那 么:1×0.5=0.5(分数表示为1/2),表示每2个点采一个样
表8:DHT(定义Huffman表)
--------------------------------------------------------------------------
名 称 字节数 值 说明
--------------------------------------------------------------------------
段 标识 1 FF
段类型 1 C4
段长度 2 其值=19+n(当只有一个 HT表时)
(以下为段内容)
HT信息 1 0-3位:HT号
4 位: HT类型, 0=DC表,1=AC表
5-7位:必须=0
HT位 表 16 这16个数的和应该≤256
HT值表 n n=表头16个数的和
--------------------------------------------------------------------------
说明:
①JPEG文件里有2类Haffman 表:一类用于DC(直流量),一类用于AC(交流量)。一般有4个表:亮度的DC和AC,色度的 DC和AC。最多可有6个。
②一个DHT 段可以包含多个HT表, 每个都有自己的信息字节
③HT表是一个按递增次序代码长度排列的符号 表。
表9:DRI(定义重新开始间隔)
--------------------------------------------------------------------------
名 称 字节数 值 说明
--------------------------------------------------------------------------
段 标识 1 FF
段类型 1 DD
段长度 2 4
(以下为段内容)
开 始间隔 2 n 复位标记的间隔距离
---------------------------------------------------------------------------
说明:
①开始间隔表示在压缩数据流中,每隔n个MCU 块就有一个RST标记,RST标记将Huffman 的解码数据流复位,DC也重新从0 开始,因此,RST标记是一种复位标记
②RST 标记是一种特殊的段,它只具有段标识和段类型(长度=2字节),但它不是独立的段,只能穿插在数 据流中(文件头和文件尾段也只有段标识和段类型,却都是独立的段)。
③RST标记共有8个(RST0-RST7),从RST0起开始使用,然后是 RST1....直至RST7,再从RST0重复。
④RST标记的标识码是 FFD0-FFD7,对应 RST0-RST7
⑤笔者查看了 许多自己电脑上的JPG文件的数据,未发现DRI段和RST标记,所以无法进行详尽的考察
表10:SOS(扫描行开始)
--------------------------------------------------------------------------
名 称 字节数 值 说明
--------------------------------------------------------------------------
段 标识 1 FF
段类型 1 DA
段长 度 2 000C 其值=6+2×扫描行内组件数量
(以下为段内容)
扫描行内组件数 量 1 3 必须≥1,≤4(否则错误),通常=3
(以下每个组件占用2字节)
组件 ID 1 1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q
Huffman表 号 1 0-3位:AC表号 (其值=0...3)
4-7 位:DC表号(其值=0...3)
3 最后3个字节用途不明,忽略
--------------------------------------------------------------------------
说明:紧接SOS段后的是压缩的图像数据(一个个扫描行),数据存放顺序是从左到右、从上到下。
表11:EOI(文件尾)
------------------
名 称 字节数 值
------------------
段标识 1 FF
段类型 1 D9
------------------
说明:这两个字节构成了JPEG文件尾。 |