JPEG图像格式及文件结构

《JPEG图像格式及文件结构》

微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放就是高位元组存放在前低位元组在後,而逆序存放就是低位元组在前高位元组在後。例如,十六进位数爲A02B,正序存放就是A02B,逆序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,而英代尔(Intel)公司的微处理器使用逆序。JPEG文件中的位元组是按照正序排列的。

JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像资料及其相关资讯,但始终没有对JPEG文件交换格式有明确定义。直到1998年12月从分析网上具体的JPG图像来看,使用比较广泛的还是JPEG文件交换格式(JPEG File Interchange Format,JFIF)版本号爲1.02。这是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外还有TIFF JPEG等格式,但由於这种格式比较复杂,因此大多数应用程式都支援JFIF文件交换格式。

JPEG格式的主要不足之处也正是它的最大优点。也就是说,有损压缩算法将JPEG只局限於显示格式,而且每次保存JPEG格式的图像时都会丢失一些数据。因此,通常只在创作的最后阶段以JPEG格式保存一次图像即可。

在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。
文件结构
JFIF文件格式直接使用JPEG标准爲应用程式定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。JPEG的每个标记都是由2个位元组组成,其前一个位元组是固定值0xFF。每个标记之前还可以添加数目不限的0xFF填充位元组(fill byte)。下面是其中的8个标记:
1.        SOI  0xD8           图像开始 
2.        APP0 0xE0           JFIF应用资料块 
3.        APPn 0xE1 – 0xEF           其他的应用资料块(n, 1~15) 
4.        DQT  0xDB           量化表 
5.        SOF0 0xC0           帧开始 
6.        DHT  0xC4           霍夫曼(Huffman)表 
7.        SOS  0xDA           扫描线开始 
8.        EOI  0xD9           图像结束

JPEG定义的标记

符号         标记代码         说明
SOF0        0xFFC0        Baseline DCT
SOF1        0xFFC1        Extended sequential DCT
SOF2        0xFFC2        Progressive DCT
SOF3        0xFFC3        Spatial (sequential) lossless 
Start Of Frame markers, hierarchical Huffman coding
SOF5        0xFFC5        Differential sequential DCT
SOF6        0xFFC6        Differential progressive DCT
SOF7        0xFFC7        Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG        0xFFC8        Reserved for JPEG extensions
SOF9        0xFFC9        Extended sequential DCT
SOF10        0xFFCA        Progressive DCT
SOF11        0xFFCB        Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF13        0xFFCD        Differential sequential DCT
SOF14        0xFFCE        Differential progressive DCT
SOF15        0xFFCF        Differential spatial Lossless
Huffman table specification
DHT        0xFFC4        Define Huffman table(s)
arithmetic coding conditioning specification
DAC        0xFFCC        Define arithmetic conditioning table
Restart interval termination
RSTm        0xFFD0~0xFFD7        Restart with modulo 8 counter m
Other marker
SOI        0xFFD8        Start of image
EOI        0xFFD9        End of image
SOS        0xFFDA        Start of scan
DQT        0xFFDB        Define quantization table(s)
DNL        0xFFDC        Define number of lines
DRI        0xFFDD        Define restart interval
DHP        0xFFDE        Define hierarchical progression
EXP        0xFFDF        Expand reference image(s) 
APPn        0xFFE0~0xFFEF        Reserved for application use
JPGn        0xFFF0~0xFFFD        Reserved for JPEG extension
COM        0xFFFE        Comment
Reserved markers
TEM        0xFF01        For temporary use in arithmetic coding
RES        0xFF02~0xFFBF        Reserved

参考资料:https://www.cnblogs.com/Yuuki-/p/7868868.html

    原文作者:Angryshark_128
    原文地址: https://blog.csdn.net/weixin_42078760/article/details/80650995
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞