JPEG分析及解码
1.JPEG文件简介:
JPEG(Joint Photo-Graphic Experts Group)-静止图像编码。是一种常用的图像文件格式,通过有损压缩去除冗余,能够在获得极高压缩率的同时得到较好的图像质量2.JPEG编解码的主要步骤:
通过DCT变换具有的去相关性和能量集中性,将图像从空间域变换到频域,去除空间冗余;用与人眼视觉特性相关的量化表量化DCT系数,减少视觉冗余;对量化后的DC系数和AC系数分别进行预测编码和游程编码,减少编码冗余。
3.JPEG文件的组织形式
以segment的形式组织,具有以下特点:
1. 均以0XFF开始,后跟1字节的标记代码,2字节表示数据长度
2. 保存时高位在前,低位在后
共包含7个基本的segment
a. SOI:start of image
标记代码:2字节,固定为0XFFD8,表示图像开始
所有JPEG文件必须以SOI开始,但无数据长度字节
b. EOI:end of image
标记代码:2字节0XFFD9
所有JPEG文件必须以EOI结束,也无数据长度字节
c. APP0:应用程序保留字节0
标记代码:2字节,固定为0XFFE0
共9个数据字段
数据长度:2字节
标识符:5字节,固定值0X4A46494600,即字符串:“JFIF0”
版本号:2字节,表示JFIF的版本号
X和Y的密度单位:1字节,且只有三个值可选:0:无单位;1:点数/英寸;2:点数/厘米
X方向像素单位:2字节
Y方向像素单位:2字节
缩略图水平像素数目:1字节
缩略图垂直像素数目:1字节
缩略图RGB位图:长度可能是3的数目
缩略图RGB位图数据
d. 量化表
标记代码:2字节,固定值0XFFDB
数据长度:2字节,表示数据字段及多个量化表的总数据长度
量化表:
精度及量化表ID:1字节
高四位:精度,0:8位;1:16位
低四位:量化表ID,取值范围0~3
表项:8位:表项长度为64字节,16位表项长度为128字节
00:表示精度为8位,ID:0表示亮度量化表
01:精度为8位,ID:1表示色度量化表
e. SOF0:start of frame 帧图像开始
标记代码:2字节,固定值0XFFC0
精度:1字节,每个颜色分量每个像素的位数
图像高度:2字节,单位:像素(pixel)
图像宽度:2字节,单位:像素(pixel)
颜色分量数:1字节
颜色分量信息:
颜色索引ID:1字节,备选值:01、02、03
采样因子(sample factor):1字节
高四位:水平采样因子
低四位:垂直采样因子
量化表号:1字节
f. DHT:定义Huffman码表
标记代码:2字节,固定值0XFFC4
数据长度:2字节
Huffman表:
表ID和表类型:1字节
高四位:类型;0:DC直流;1:AC交流
低四位:Huffman表ID(DC,AC分开编码)
不同位数的码字数量:16字节
编码内容:16个不同位数的码字数量之和
Huffman码表可以有多个
001D:29字节;00:表示DC直流0号表
003E:46字节;10:表示AC交流0号表
001E:30字节;01:表示DC直流1号表
002F:47字节;11:表示AC交流1号表
以DC直流0号表为例:
00 03 01 01 01 01 01 01 01 00 0000 00 00 00 00:表示不同位数码字的数量。即码字位数为1的码有0个,码字位数为2的码有3个,码长为3、4、5、6、7、8、9的码各有1个。
04 05 06 03 02 01 00 09 07 08 :这10个字节表示编码内容(10字节=3+1+1+1+1+1+1+1),10个字节对应10个叶子结点,其权值分别为:4、5、6、3、2、1、0、9、7、8。权值表示解码时需要再读入的比特数。
g. SOS:start of scan 扫描开始
标记代码:2字节固定值:0XFFDA
数据长度:2字节
颜色分量数:1字节;1:灰度图;3:YCbCr或YIQ;4:CMYK
颜色分量信息: