JPEG图像格式解析

参考链接:jpeg图片格式详解_460833359的博客-CSDN博客_jpg文件通常是什么

一、JPEG图像介绍

        jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式,文件格式是JPEG(联合图像专家组)标准的产物,是面向连续色调静止图像的一种压缩标准

二、winhex打开4*4的JPEG图像

8287dacd6c34ee8ac758cb604bcf5b28.png

三、JPEG文件头 2byte

        FF D8 标识JPEG文件头

四、APP0图像识别信息

fef022a0f0313b2b65db44bec7d08cef.png

        APP0 标识:FF E0

        数据段长度标识:00 10 16byte(包含数据段长度标识2byte)

        交换格式:4A 46 49 46 00,对应ASCII "JFIF"

        主版本号:01 次版本号:01 版本号:1.1

        密度单位:01 对应单位 点数/英寸

        X方向像素密度:00 60

        Y方向像素密度:00 60

        缩略图水平像素数目:00

        缩略图垂直像素数目:00

五、APP1 -------> APPN (N=1~15)

        含义:应用程序保留标记x

        标记码:0xFFE1~0xFF..(手机照片通常包含APP1,内容由地点,时间等)

解析APP0同上(我们这里使用JPEG没有APP0,略过)

六、DQT定义量化表

  ac26fe9ab0f2c71ad5bdf75698140b69.png

        备注:JPEG文件一般有2个DQT段,为Y值(亮度)定义1个, 为C值(色度)定义1个

DQT标识:FF DB

        数据长度:00 43 (段长度2个字节,QT信息1个字节)+QT量化表的长度,此处QT量化表的长度是64)

        QT信息:00 QT号为0 QT精度8bit

        QT量化表:这个长度是根据QT信息确定的,上面QT精度为8bit,所以此处是64×1byte = 64byte

七、SOF0图像基本信息(帧图像起始块)
d44ff88ea2c7b0599c8213c51c7651b1.png

        标记码:FF C2(JPG) FF C0(JPEG)

        数据段长度:00 11 =》17 = 8 + 3*3,说明组件数量有3个

        样本精度:08,每个样本的信息是8bit

        样本高度:00 04 样本宽度:00 04 图像宽高4*4

        组件数量:03 代表YCbCr 彩色图,有3个组件分别是Y、Cb、Cr

        组件id+采样系数+量化表号(3组):

                01 22 00 => Y组件,垂直采样系数和水平采样系数都是2,量化表号是0

               02 11 01 => Cb组件,垂直采样系数和水平采样系数都是1,量化表号是1

               03 11 01 => Cr组件,垂直采样系数和水平采样系数都是1,量化表号是1

                此处可知此处Y采样是逐点采样,CbCr都是隔点采样,这就是标准的YUV422的数据

 八、DHT定义huffman表

a1bf4727b89f2737371901640f01ccc4.png

        Huffman表标识:FF C4

        段长度: 00 15 ==>1F 31(段长度2个字节+HT信息1个字节+HT位表16个字节) + 12(这个数代表HT表有3个字节)

        00 ==> HT号是0,DC表

        HT表 ==> 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 => 共16个字节,加起来是12(此处和段长度是相匹配的),说明HT表有12个字节

        HT值表:00 01 02 03 04 05 06 07 08 09 0A 0B

九、SOS扫描行开始

 7bbe5ebf615c41b6c95f4192f7ca9eb7.png

        SOS扫描开始标识:FF DA

        SOS扫描块长度:00 0C => 12 = (2个字节的扫描行开始头+1个字节扫描行内组件数量)+ 2×3(扫描行内组件数量,每个组件2个字节)+(3个字节的剩余位)

        03 => 代表组件数量数3

        01 00 => Y组件,AC表号是0,DC表号是0

        02 11 => Cb组件,AC表号是1,DC表号是1

        03 11 => Cr组件,AC表号是1,DC表号是1

十、EOI文件尾

 ff151d7beb66ec1ce783105be89991a8.png

猜你喜欢

转载自blog.csdn.net/QQ135102692/article/details/124828301