JPEG是一种图像压缩标准,全称为“Joint Photographic Experts Group”。它是一种有损压缩技术,可以将图像数据压缩到更小的文件大小,同时保持较高的图像质量。JPEG广泛应用于数字摄影、图像处理和Web应用等领域。JPEG压缩的原理是通过删除图像中的一些细节和冗余信息来减少文件大小。在JPEG压缩中,图像被分成若干个8x8像素块,每个像素块都经过离散余弦变换(DCT)和量化处理。离散余弦变换将图像数据从空间域转换到频域,量化处理将频域系数舍入到最接近的整数。这样就可以减少图像数据的精度,从而实现图像压缩。JPEG有多种压缩质量选项,用户可以根据需要选择不同的压缩质量。较高的压缩质量通常会导致更大的文件大小,而较低的压缩质量可能会导致更明显的图像失真。
JPEG图片格式组成部分:SOI(文件头)+APP0(图像识别信息)+ DQT(定义量化表)+ SOF0(图像基本信息)+ DHT(定义Huffman表) + DRI(定义重新开始间隔)+ SOS(扫描行开始)+ EOI(文件尾)。以二进制的形式打开一个jpeg的图片,得到它的二进制原始数据:
段类型:
---------------------------------------
名称 标记码 说明
---------------------------------------
SOI D8 文件头
EOI D9 文件尾
SOF0 C0 帧开始(标准 JPEG)
SOF1 C1 同上
DHT C4 定义 Huffman 表(霍夫曼表)
SOS DA 扫描行开始
DQT DB 定义量化表
DRI DD 定义重新开始间隔
APP0 E0 定义交换格式和图像识别信息
COM FE 注释
-----------------------------------------------------------
接下来对于这些必须的段类型进行详细解释:
1、SOI文件头
JPEG文件的开始2个字节都是FF D8这是JPEG协议规定的,这两个字节构成了JPEG文件头
-----------------
名称 字节数 值
-----------------
段标识 1 FF
段类型 1 D8
-----------------
2、APP0图像识别信息
--------------------------------------------------------------------------
名称 字节数 值 说明
--------------------------------------------------------------------------
段标识 1 FF
段类型 1 E0
段长度 2 0010 如果有RGB缩略图就=16+3n
(以下为段内容)
交换格式 5 4A46494600 “JFIF”的ASCII码
主版本号 1
次版本号 1
密度单位 1 0=无单位;1=点数/英寸;2=点数/厘米
X像素密度 2 水平方向的密度
Y像素密度 2 垂直方向的密度
缩略图X像素 1 缩略图水平像素数目
缩略图Y像素 1 缩略图垂直像素数目
(如果“缩略图X像素”和“缩略图Y像素”的值均>0,那么才有下面的数据)
RGB缩略图 3×n n=缩略图像素总数=缩略图X像素×缩略图Y像素
--------------------------------------------------------------------------
3、DQT定义量化表
JPEG文件一般有2个DQT段,为Y值(亮度)定义1个, 为C值(色度)定义1个。一个DQT段可以包含多个QT, 每个都有自己的信息字节
--------------------------------------------------------------------------
名称 字节数 值 说明
--------------------------------------------------------------------------
段标识 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精度的字节数
--------------------------------------------------------------------------
4、SOF0图像基本信息
JPEG大都采用yCrCb色彩模型(y表示亮度,Cr红色分量,Cb表示蓝色分量),所以组件数量一般=3。样本就是单个像素的颜色分量,也可理解为一个样本就是一个组件。
--------------------------------------------------------------------------
名称 字节数 值 说明
--------------------------------------------------------------------------
段标识 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
---------------------------------------------------------------------------
5、DHT定义的uffman表
JPEG文件里有2类Haffman 表:一类用于DC(直流量),一类用于AC(交流量)。一般有4个表:亮度的DC和AC,色度的DC和AC。最多可有6个。
--------------------------------------------------------------------------
名称 字节数 值 说明
--------------------------------------------------------------------------
段标识 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个数的和
--------------------------------------------------------------------------
6、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 最后3个字节用途不明,忽略
------------------------------------------------------------------
7、EOI文件尾
------------------
名称 字节数 值
------------------
段标识 1 FF
段类型 1 D9
------------------
8、COM(注释)
--------------------------------------------------------------------------
名称 字节数 值 说明
--------------------------------------------------------------------------
段标识 1 FF
段类型 1 FE
段长度 2 其值=注释字符的字节数+2
段内容 注释字符
--------------------------------------------------------------------------
9、DRI(定义重新开始间隔)
--------------------------------------------------------------------------
名称 字节数 值 说明
--------------------------------------------------------------------------
段标识 1 FF
段类型 1 DD
段长度 2 4
(以下为段内容)
开始间隔 2 n 复位标记的间隔距离
---------------------------------------------------------------------------