JFIF文件格式

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

图片存储格式之一,由 JPEG 格式衍生而来,后缀为".jfif"。
  JPEG本身只有描述如何将一个 图像 转换为 字节 的数据 串流 (streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。一个由独立JPEG小组(Independent JPEG Group)所建立的额外标准,称为JFIF(JPEG File Interchange Format,JPEG档案交换格式),详细说明如何从一个JPEG串流,产出一个适合于电脑储存和传输(像是在因特网上)的档案。当有人称呼一个"JPEG档案",一般而言他是意指一个JFIF档案,或有时候是一个Exif JPEG档案。然而,也有其他以JPEG为基础的档案格式,像是JNG。
  JPEG/JFIF是最普遍在 万维网 (World Wide Web)上被用来储存和传输图片的格式。它并不适合于线条绘图(drawing)和其他文字或图示(iconic)的图形,因为它的 压缩 方法用在这些图形的型态上,会得到不适当的结果( PNG GIF 格式通常是用来针对这种目的之图形;GIF每一像素只有8位元,并不很适合于用在彩色照片,PNG可以被用来无失真地储存照片,但是档案太大让它不适合在网页上放照片)。
  对于JFIF的MIME媒体型态是image/jpeg(定义在RFC 1341)。

一.简介

  微处理机中的数据存放顺序有大端(big endian)小端(little endian)之分。大端顺序是指高字节数据存放在低地址处,低字节数据存放在高地址处,而小端顺序是指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。例如,十六进制数为A02B,按大端顺序存放就是A02B,按小端顺序存放就是2BA0。摩托罗拉(Motorola)公司的微处理器使用大端顺序存放,而英特尔(Intel)公司的微处理器使用小端顺序。JPEG文件中的字节是按照大端顺序排列的。
  JPEG委员会在制定JPEG标准时,定义了许多标记(marker)用来区分和识别图像数据及其相关信息,但笔者没有找到JPEG委员会对JPEG文件交换格式的明确定义。直到1998年12月从分析网上具体的JPG图像来看,使用比较广泛的还是JPEG文件交换格式(JPEG File Interchange Format,JFIF)版本号为1.02。这是1992年9月由在C-Cube Microsystems公司工作的Eric Hamilton提出的。此外还有TIFF JPEG等格式,但由于这种格式比较复杂,因此大多数应用程序都支持JFIF文件交换格式。
  JPEG文件使用的颜色空间是YCbCr空间。在JFIF文件格式中,图像样本的存放顺序是从左到右和从上到下。这就是说JFIF文件中的第一个图像样本是图像左上角的样本。

二.文件结构

  JFIF文件格式直接使用JPEG标准为应用程序定义的许多标记,因此JFIF格式成了事实上JPEG文件交换格式标准。JPEG的每个标记都是由2个字节组成,其前一个字节是固定值0xFF。每个标记之前还可以添加数目不限的0xFF填充字节(fill byte)。下面是其中的8个标记:
  SOI 0xD8 图像开始
  APP0 0xE0 JFIF应用数据块
  APPn 0xE1 - 0xEF 其他的应用数据块(n, 1~15)
  DQT 0xDB 量化表
  SOF0 0xC0 帧开始
  DHT 0xC4 霍夫曼(Huffman)表
  SOS 0xDA 扫描线开始
  EOI 0xD9 图像结束
  一般的JFIF文件由下面的9个部分组成:
  (1) 图像开始SOI(Start of Image)标记 0h 2字节 0xFFD8
  (2) APP0标记(Marker) 0h 2字节 0xFFE0
  ① APP0长度(length)(①~⑨九个字段的总长度)
  2h 2字节内容不定(①~⑨九个字段的总长度)
  ② 标识符(identifier)
  4h 5字节 0x4A46494600 即“JFIF0”
  ③ 版本号(version)
  9h 2字节 0x0102 JFIF的版本号目前基本上都是1.2
  ④ X和Y的密度单位(units=0:无单位;units=1:点数/英寸;units=2:点数/厘米)
  bh 1字节只有0,1,2三个值可选,其分别代表的意义如上]
  ⑤ X方向像素密度(X density)
  ch 2字节取值范围未知
  ⑥ Y方向像素密度(Y density)
  eh 2字节取值范围未知
  ⑦ 缩略图水平像素数目(thumbnail horizontal pixels)
  10h 1字节取值范围未知
  ⑧ 缩略图垂直像素数目(thumbnail vertical pixels)
  11h 1字节取值范围未知
  ⑨ 缩略图RGB位图(thumbnail RGB bitmap)
  12h 长度可能是3的倍数内容不定
  本段(APP0)可以包含图像的一个微缩版本,存为24位的RGB像素。如果没有微缩图像(这种情况更常见),则⑦“缩略图水平像素数目”和⑧“缩略图垂直像素数目”的值均为0。
  (3) APPn标记(Markers)
  ① APPn长度(length)(①②两个字段的总长度)
  ② 详细信息(application specific information)
  对每个APP:
  若为APPN(N=1~F(以16进制表示,N任选其中一个))
  · 标记: mh 2字节 0xFFEN
  · 长度:(m+2)h 2字节内容不定(设为n(10进制))(本字段与下一字段的总长度)
  · 详细信息: (m+4)h n-2字节(即长度减2)内容不定
  (4) 一个或者多个量化表DQT(Difine Quantization Table) 0h 2字节 0xFFDB
  ① 量化表长度(quantization table length)(①~②两个字段的总长度)
  2h 2字节内容不定(①~②两个字段的总长度)
  ② 量化表(quantization table)
  A. P/T(高四位:精度,低四位:表ID)
  B. 表项
  对每个量化表:
  · P/T(高四位:精度,低四位:表ID) mh 1字节精度, 0 表示 8 bit, 1表示 16 bit;ID取值范围为0~3, 否则错误
  · 表项 (m+1)h (64×(精度+1))字节内容长,故略
  (5) 帧图像开始SOF0(Start of Frame)
  0h 2字节 0xFFC0
  ① 帧开始长度(start of frame length) (①~⑥六个字段的总长度)
  2h 2字节内容不定(①~⑥六个字段的总长度)
  ② 精度(precision),每个颜色分量每个像素的位数(bits per pixel per color component)
  4h 1字节每个样本位数, 通常是 8 (大多数软件不支持 12 和 16)
  ③ 图像高度(image height) 5h 2字节内容不定(如果不支持 DNL 就必须 >0)
  ④ 图像宽度(image width) 7h 2字节内容不定(如果不支持 DNL 就必须 >0)
  ⑤ 颜色分量数(number of color components)
  9h 1字节内容不定(灰度图是 1, YCbCr/YIQ 彩色图是 3, CMYK 彩色图是 4,我们这里讨论的JFIF使用的是YCbCr,故这里颜色分量数为3)
  ⑥ 对每个颜色分量(for each component)
  A. ID
  B. 垂直方向的样本因子(vertical sample factor)
  C. 水平方向的样本因子(horizontal sample factor) B、C共占用1字节,B占用低4位,C占用高4位)
  D. 量化表号(quantization table#)
  JFIF格式使用的是YCbCr所以有3个分量(这里特别要注意的是颜色分量的ID号是有含义的,1代表Y,2代表Cb,3代表Cr,4代表I,5代表Q):
  1) ID
  ah 1字节 0x01
  (高四位)水平(低四位)垂直样本因子
  bh 共1字节 0x227
  量化表号
  ch 1字节内容不定(本分量使用的量化表的ID号)
  2) ID
  dh 1字节 0x02
  (高四位)水平(低四位)垂直样本因子
  eh 共1字节 0x11J
  量化表号
  fh 1字节内容不定(本分量使用的量化表的ID号)
  3) ID
  10h 1字节 0x03
  (高四位)水平(低四位)垂直样本因子
  11h 共1字节 0x11
  量化表号
  12h 1字节内容不定(本分量使用的量化表的ID号)
  (6) 一个或者多个霍夫曼表DHT(Difine Huffman Table)
  0h 2字节 0xFFC4
  ① 霍夫曼表的长度(Huffman table length) (①~②两个字段的总长度)
  2h 2字节内容不定(①~②两个字段的总长度)
  ② 对每个霍夫曼表(一般情况下,霍夫曼表不止一个,但是绝对不多于4个)
  A. 表号
  B. 类型:AC或者DC(其中0:DC表,1:AC表);A、B共占用1字节,A占用低4位,B占用高4位)
  C. 长16个字节的编码,其代码代数和为接下来的编码的长度
  D. 内容编码
  对每个霍夫曼表:
  ·(高四位)类型和(低四位)表号: mh 共1字节内容不定(有四个可能:0x00表示第0个DC表,0x01表示第1个DC表,0x10表示第0个AC表,0x11表示第1个AC表)
  · 长16个字节的编码: (m+1)h 16字节内容不定(设这16个字节上数据之和为n)
  · 内容编码: (m+17)h n字节内容长,故略)
  (7) 定义重新开始间隔DRI(Difine Restart Interval)
  (在没有DRI标记,或间隔为零时,就不存在重新开始间隔和重开始标记)
  0h 2字节 0xFFDD
  ① 长度 2h 2字节 0x0004(①~②两个字段的总长度)
  ② MCU 块的单元中的重新开始间隔
  4h 2字节内容不定(设为n,则意思是说,每n个MCU块就有一个RSTn标记。第一个标记是RST0,然后是RST1等,RST7后再从RST0重复)
  (8) 扫描开始SOS(Start of Scan)
  0h 2字节 0xFFDA
  ① 扫描开始长度(start of scan length)
  2h 2字节内容不定(①~③再加上④的A\B\C的总长度)
  ② 颜色分量数(number of color components)
  4h 1字节应该和⑸⑤的值相同(灰度图是1, YCbCr/YIQ 彩色图是3, CMYK 彩色图是4)
  ③ 每个颜色分量
  A. ID
  B. 交流系数表号(AC table #)
  C. 直流系数表号(DC table #)
  (B、C共占用1字节,B:占用低4位,C:占用高4位)
  由②得到这里的颜色分量数为3(这里的颜色分量的ID号的含义和⑸⑥的一样,1代表Y,2代表Cb,3代表Cr,4代表I,5代表Q):
  1) ID
  5h 1字节 0x01 (高四位)直流(低四位)交流数表号
  6h 共1字节 0x00
  2) ID
  7h 1字节 0x027 (高四位)直流(低四位)交流数表号
  8h 共1字节 0x11
  3) ID
  9h 1字节 0x03 (高四位)直流(低四位)交流数表号
  ah 共1字节 0x11
  ④ 压缩图像数据(compressed image data)
  A. 谱选择开始 bh 1字节 0x00
  B. 谱选择结束 ch 1字节 0x3F
  C. 两个4位字段,高位和低位的谱选择 dh 1字节在基本JPEG中总为0x00
  D. 数据 eh 长度不定内容长,故略
  (9) 图像结束EOI(End of Image)
  0h 2字节 0xFFD9

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

内容概要:本文系统研究了基于豪猪优化算法(CPO)的多无人机协同集群在三维空间中的避障路径规划问题,聚焦于实现以最低成本为目标的航迹优化,综合考虑路径长度、飞行高度、威胁规避及转弯角度等多个关键因素。通过构建精细化的三维环境模型与多无人机协同机制,采用Matlab平台实现CPO算法的仿真与验证,充分展示了该算法在复杂动态障碍环境下的高效搜索能力与全局优化性能。研究不仅涵盖了路径规划的数学建模与目标函数设计,还深入探讨了算法的收敛特性与鲁棒性,为智能群体系统在实际场景中的应用提供了理论依据与技术支撑。; 适合人群:具备一定编程基础和优化算法背景,从事无人机系统控制、智能路径规划、群体协同、人工智能与自动化等相关领域的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于多无人机协同执行侦察、灾害监测、应急救援、区域巡检等复杂任务中的自主路径规划;②为智能优化算法在三维动态环境下的路径决策问题提供可复现的技术范例;③支持研究人员对CPO算法与其他主流群智能算法(如PSO、GWO、WOA等)进行性能对比与改进研究,推动路径规划技术的发展。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解目标函数的多维度建模方式与CPO算法的迭代优化流程,可通过调整环境参数与约束条件进行仿真实验,对比不同算法在相同场景下的路径质量与收敛速度,从而深入掌握其优势与适用边界。
内容概要:本文围绕电动汽车参与电力系统运行备用的能力评估展开深入研究,利用Matlab代码实现对电动汽车集群提供运行备用服务的建模与仿真分析。研究重点在于量化电动汽车作为分布式灵活资源参与电网辅助服务的潜力,通过构建精细化的数学模型,分析其可调功率容量、响应速度、时空分布特性及聚合能力,并采用多面体聚合、内近似模型与闵可夫斯基和等先进方法精确刻画其可调度能力边界。研究进一步结合大规模电动汽车接入场景,探讨其在多时间尺度调度框架下参与调峰、调频等辅助服务的优化策略,评估其对提升高比例可再生能源电网灵活性与稳定性的贡献,最终通过仿真验证所提模型与方法的有效性与实用性。; 适合人群:具备电力系统分析、智能电网、新能源汽车或优化调度等相关专业背景,熟悉Matlab/Simulink仿真工具,从事科研、工程应用的高校研究生、科研人员及电力行业工程师。; 使用场景及目标:①精确评估大规模电动汽车集群在不同约束条件下可提供的运行备用容量;②研究电动汽车在日前、日内及实时调度中的动态响应能力与优化调度策略;③为高渗透率新能源电力系统提供基于移动储能的灵活性资源解决方案,支撑电网安全经济运行。; 阅读建议:建议结合Matlab代码与技术文档同步学习,重点关注多面体聚合建模、能力边界计算及优化调度算法的设计与实现,可进一步拓展至V2G(车辆到电网)、需求响应等互动场景进行二次开发与应用验证。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 OpenCV(开源计算机视觉库)中的DNN(Deep Neural Network)模块是一种功能强大的工具,其目的是用于深度学习模型的操作。该模块使得开发人员能够在OpenCV环境中直接运用已经训练好的深度学习网络,以执行图像识别、目标检测、图像分割等多种功能。DNN模块能够兼容多种深度学习框架的模型,包括TensorFlow、Caffe、ONNX等。 一、DNN模块概述 OpenCV的DNN模块是为了简化深度学习模型的集成过程而专门设计的,它允许开发人员加载预先训练好的神经网络模型,并在图像数据上执行前向传播操作。借助这个模块,用户可以选用GPU或者CPU来提升计算效率,从而构建出高效的应用程序。 二、目标检测案例 在OpenCV的DNN模块中,目标检测是一个常见的应用情形。例如,可以选用SSD(Single Shot Multibox Detector)、YOLO(You Only Look Once)或者 Faster R-CNN 等模型进行实时的目标检测。这些模型能够识别并定位图像中的多个对象,并返回每个对象的类别和边界框坐标。 三、模型转换:PB到PBTXT 在OpenCV中运用TensorFlow模型时,通常需要处理的是`.pb`格式的模型文件,这是TensorFlow的二进制模型文件格式。然而,为了能够读取模型的结构信息,我们需要`.pbtxt`格式的文本文件。转换过程涉及解析`.pb`文件并将其结构信息导出为`.pbtxt`格式,这样做可以让人清晰地了解网络层和参数的配置。在OpenCV中,可以使用`tf.train.write_graph()`函数将.pb...
内容概要:本文围绕虚拟同步发电机(VSG)接入弱电网的序阻抗建模与稳定性分析开展研究,基于Matlab/Simulink平台搭建详细的仿真模型,系统复现并验证相关理论方法。研究重点包括VSG在弱电网条件下的正负序阻抗特性建模、基于小信号分析的扫频法建模流程、系统阻抗交互特性及潜在的失稳机理分析。通过具体仿真案例,深入探讨了VSG控制参数对系统稳定性的影响,旨在为新能源并网系统的稳定运行提供理论依据与技术支撑。该内容属于电力电子与电力系统稳定性交叉领域的前沿课题,具有重要的学术价值与工程应用前景。; 适合人群:具备电力系统分析、电力电子变换器控制等基础知识,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制、电力系统稳定性研究的研究生、科研人员及工程师;有志于复现高水平期刊论文中阻抗建模与稳定性分析方法的技术开发者。; 使用场景及目标:① 掌握虚拟同步发电机在弱电网中的序阻抗建模理论与实现方法;② 理解并实践基于扫频法的小信号稳定性分析全过程;③ 应用于构网型变流器、虚拟同步机等先进并网技术的稳定性研究与仿真验证。; 阅读建议:建议结合所提供的Simulink仿真模型与技术资料,按照文档结构循序渐进地学习,重点关注建模原理、仿真参数设置与结果分析过程,同时参考链接中的完整资源进行代码调试与深入探究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值