不同JPEG文件存储格式定义

不同JPEG文件存储格式定义

重要概念区分:JPEG (ISO‑10918‑1) 是压缩码流算法标准,只定义 DCT、量化、熵编码码流语法,本身没有定义完整磁盘文件格式。我们日常的.jpg封装容器 + JPEG 压缩码流组合产物。
码流(bitstream):DCT 系数、MCU、Huffman / 量化表,是图像本体;
文件存储格式(容器):规定如何把码流、元数据、缩略图、相机参数组织成磁盘文件。

一、底层 JPEG 码流标记(Marker)通用规则

所有 JPEG 系文件都以0xFF作为标记前缀,标记格式:0xFF + Marker(1B) + 2B长度 + 段负载SOI、EOI、RSTn 没有长度字段

标记十六进制名称核心作用
SOI0xFFD8图像开始所有 JPEG 文件必为首 2 字节
EOI0xFFD9图像结束文件图像数据结束标记
SOF00xFFC0基线 DCT 帧开始Baseline‑JPEG,记录宽高、采样、位深
SOF20xFFC2渐进 DCT 帧开始Progressive‑JPEG,多次扫描模式
DQT0xFFDB定义量化表存储压缩质量量化矩阵
DHT0xFFC4定义 Huffman 表熵编码哈夫曼码表
SOS0xFFDA扫描开始真正压缩图像码流从此处开始
DRI0xFFDD重启间隔MCU 重启间隔,用于错误恢复
APP00xFFE0应用段 0JFIF 元数据存放位置,标识符JFIF0
APP10xFFE1应用段 1EXIF 元数据存放位置,标识符Exif00
APP2‑APP150xFFE2‑0xFFEF应用段ICC 色彩配置、XMP 元数据、JFXX 缩略图等

APPn 段属于可选元数据,解码器可以直接跳过 APPn 段仍然可以正常解码图像像素;真正解码图像必须:SOI‑DQT‑SOFn‑DHT‑SOS‑图像码流‑EOI。

在这里插入图片描述

二、主流 JPEG 磁盘存储封装格式

1. JFIF(JPEG File Interchange Format,JPEG 文件交换格式)

  • 标准:ITU‑T T.871,1992;版本主流 1.02

  • 扩展名:.jpg / .jpeg / .jfif

  • 核心定位:JPEG 官方推荐的基础文件交换容器,解决原始 JPEG 码流没有色彩、分辨率、缩略图定义的问题。

  • 文件结构:
    SOI(0xFFD8) → APP0(JFIF标记0x4A46494600) → DQT → SOF0 → DHT → SOS → 压缩码流 → EOI

  • APP0 段内容:版本号、像素密度 DPI 单位、X/Y 分辨率、可选 RGB 缩略图。

  • 色彩约束:强制使用YCbCr BT.601,4:2:0/4:2:2/4:4:4 采样;不支持嵌入 ICC Profile。

  • 特点:

    1. PC、嵌入式、浏览器通用,兼容性最强;

    2. 只使用 APP0 标记,不携带相机拍摄元数据;

    3. 绝大多数图片工具导出 web 图片输出 JFIF。

现实中绝大多数.jpg文件不是纯 JFIF,是 JFIF+EXIF 混合格式:SOI 之后同时存在 APP0 (JFIF)+APP1 (EXIF) 两段元数据。

2. EXIF(Exchangeable Image File Format,可交换图像文件格式)

  • 标准:JEITA,数码相机行业标准;EXIF 不是独立压缩算法,是 JPEG 码流之上的元数据封装

  • 扩展名:依旧.jpg/.jpeg,文件本体仍然是 JPEG DCT 码流。

  • 存储载体:全部元数据放在 APP1(0xFFE1) 段内部;APP1 内部再嵌套 TIFF 格式 IFD 目录结构(大小端 II/MM 标记)。

  • APP1 内部存储:

    • IFD0:主图像标签(相机型号、快门、ISO、光圈、时间)

    • SubIFD:Exif 扩展标签

    • GPS‑IFD:GPS 经纬度坐标

    • IFD1:内嵌缩略图(缩略图本身又是一份小型 JPEG 码流)

  • 文件典型顺序:
    SOI → APP1(EXIF) → APP0(JFIF可选) → DQT → SOF0 → DHT → SOS → 图像码流 → EOI

  • 特点:

    1. 手机、相机拍照输出的 jpg 都是 EXIF 格式;

    2. 图像解码完全不依赖 EXIF,删除 APP1 段图片仍然正常显示;

    3. 很多嵌入式解码器会忽略 EXIF 元数据,只解析 SOF0 获取宽高。

坑点:部分老旧硬件解码器遇到超大 APP1 段会解析异常。

3. SPIFF(Still Picture Interchange File Format)

  • ISO 官方容器标准,设计初衷替代 JFIF;扩展名.spf

  • 支持更多色彩空间、alpha 通道、元数据;但是产业几乎没有落地,几乎没有软件支持,现实工程废弃,仅历史文档存在。

4. JPEG‑in‑TIFF(TIFF 容器承载 JPEG 码流)

TIFF 文件内部把 JPEG 压缩码流作为 TIFF 的一个 strip/tile 数据。

  • 后缀.tif/.tiff;常用于印刷、扫描设备。

  • TIFF 头做索引,内部直接嵌入完整 JPEG 压缩 bitstream;不是日常 jpg。

5. JPEG 原始裸码流(Raw JPEG bitstream)

只有码流标记 SOI‑DQT‑SOF‑DHT‑SOS‑data‑EOI,没有任何 APP0/JFIF、APP1/EXIF 段

  • 无元数据,无 DPI、无相机信息;一般不会直接存磁盘;

  • 常见场景:摄像头硬件 JPEG 解码器输出内存裸码流,直接写入 SD 卡如果不补 APP0 段,部分看图软件无法识别。

⚠️工程坑:裸 JPEG 码流缺少 JFIF 头,部分低端解码器会拒绝打开,需要补 APP0 (JFIF) 段。

三、基于 JPEG 标准内部模式(SOFn 标记区分,码流内部模式,不是扩展名)

注意:下面属于JPEG 码流内部编码模式,不是独立文件后缀,可以封装在 JFIF/EXIF 容器之内。

模式Marker 标记说明存储特点
基线 Baseline JPEGSOF0 0xFFC0顺序 DCT 有损,最主流MCU 从上到下顺序扫描;嵌入式首选;TJpgDec、绝大多数硬解支持
渐进 Progressive JPEGSOF2 0xFFC2多次扫描 DCT 有损多轮 SOS 扫描;先模糊后清晰;增大内存开销,低端硬件不支持
扩展顺序 DCTSOF1 0xFFC1扩展顺序 DCT,算术编码极少使用
旧 Lossless‑JPEGSOF3 0xFFC3原始标准无损模式,无 DCT压缩效率差,工程弃用,改用 JPEG‑LS
分层 Hierarchical JPEG多 SOF 帧多分辨率金字塔编码几乎没有产品落地

四、衍生家族独立文件存储格式(不兼容传统 JPG 码流)

这些名字带 JPEG,但压缩算法、文件标记完全不一样,不能用普通 JPEG 解码器打开

  1. JPEG‑LS(.jls
    ISO‑14495;预测编码无损 / 近无损;自有文件标记,不使用 0xFFC0‑C2 的 SOF 标记;医疗、工业图像。

  2. JPEG2000(.jp2 / .j2k
    ISO‑15444;小波变换;独立盒子 (box) 文件结构,不再使用传统 JPEG Marker 体系;OpenJPEG 解码。

  3. JPEG‑XL(.jxl
    ISO‑18181;全新盒子容器;支持无损转码传统 JPEG;现代新一代图像格式。

  4. MJPEG(Motion‑JPEG)视频
    不是单张图片文件;两种存储:

  • AVI/MOV 容器:每一帧存放一张完整 JFIF/EXIF JPEG 码流;

  • 裸 MJPEG 流:连续拼接 SOI‑EOI 的 JPEG 码流,无文件头;常见 USB 摄像头输出。

五、工程实践对比总结表

存储格式后缀核心标记段元数据来源典型场景嵌入式注意事项
JFIF.jpg .jfifSOI+APP0(0xFFE0)APP0 存 DPI、缩略图网页导出、截图兼容性最好,裸码流建议补 APP0
EXIF (JFIF+EXIF 混合).jpgSOI+APP0+APP1(0xFFE1)APP1 存相机 / GPS 标签手机、相机拍照解码器可跳过 APP1;超大 APP1 可能导致老硬件异常
裸 JPEG 码流无标准后缀只有 SOI‑EOI,无 APPn无任何元数据硬件 JPEG IP 内存输出部分看图软件无法打开,需要补 JFIF 头
SPIFF.spfSPIFF 专属标记SPIFF 段理论标准,几乎不用不要使用
JPEG‑in‑TIFF.tifTIFF 头内部嵌入 JPEG 码流TIFF IFD 标签印刷扫描普通 JPEG 解码器不能直接读取 tif
JPEG‑LS.jlsJPEG‑LS 自有 marker自有元数据段医疗工业无损图像普通 JPEG 库完全无法解码
JPEG2000.jp2Box 盒子结构box 元数据卫星医疗档案需要 OpenJPEG 软件解码,无普通硬件 IP

六、开发常见坑

  1. 混淆 “码流模式” 和 “文件容器”:Baseline/Progressive 是码流内部 SOF0/SOF2 标记,既可以封装在 JFIF,也可以封装在 EXIF;EXIF 只是元数据,不改变图片是基线还是渐进。

  2. 硬件 JPEG 解码器:大多只解析码流标记 SOI/SOF0/DQT/DHT/SOS,直接跳过 APP0/APP1 元数据;所以一张 EXIF 照片硬件解码完全正常,只是读不到相机参数。

  3. 硬件 IP 输出裸 JPEG 码流:内存只有 SOI‑EOI,没有 APP0,保存到 SD 卡得到的文件部分 PC 软件无法预览,需要手动追加 APP0 (JFIF) 段。

  4. 判断图片是基线还是渐进:看 SOF 标记,不是看后缀0xFFC0基线;0xFFC2渐进。

  5. 删除 EXIF:只删除 APP1 段,图像像素码流不受影响,图片仍然正常显示。

内容概要:本文系统研究了Picard迭代法在非线性常微分方程参数估计中的应用,深入阐述了该方法的数学原理及其在参数辨识中的收敛性与稳定性优势。通过构建最小化误差的目标函数,并结合数值积分技术,采用迭代方式逐步逼近系统的真实参数值,有效解决了非线性动态系统中因缺乏解析解而难以进行精确建模的问题。文中提供了完整的Matlab代实现,涵盖模型定义、迭代求解、参数更新与结果可视化等关键环节,增强了方法的可操作性与工程实用性。研究通过典型非线性系统案例验证了算法的有效性,展示了其在科学计算与工程建模中的良好适应性与推广潜力。; 适合人群:具备常微分方程理论、数值分析基础及Matlab编程能力,从事系统建模、参数辨识、动力学仿真等相关方向的研究生、科研人员和工程技术开发者。; 使用场景及目标:①解决实际工程中非线性微分方程模型的未知参数估计问题;②深入理解Picard迭代法在科学计算中的实现机制与数值特性;③为学术论文复现、科研项目开发或课程设计提供可运行、易调试的技术方案与代参考。; 阅读建议:建议读者结合文中的数学推导与Matlab代逐行分析,重点关注迭代程、目标函数构造与数值积分的耦合实现,通过修改模型结构或噪声条件进行扩展实验,以深化对算法鲁棒性与适用边界的理解。配套资源可通过指定公众号和网盘链接获取,推荐同步学习以加速科研进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RFCEO

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值