MIPI CSI-2笔记(21) -- JPEG8数据格式

简介

        JPEG8存在两个非标准的扩展:

  •         状态信息(Status Information, 必选项)
  •         内嵌的图像信息(Embedded Image information, 可选项),比如缩略图(thumbnail image)

        基础JPEG数据结构中,任何非标准的或额外的数据在它被放到兼容标准JPEG的图像查看器程序之前,需要被去掉。JPEG8数据流如下图所示:

 编码器中的JPEG8数据流

 解码器中的JPEG8数据流 

JPEG数据定义

        在相机模块中产生的JPEG数据是ISO/IEC 10918-1中所定义的基线JPEG DCT格式外加如下额外的定义或改动:

  •         使用sRGB色彩空间。在sRGB转换为YCbCr格式之后,JPEG由YCbCr数据生成。
  •         JPEG元数据必须是EXIF兼容的,即应用片段内的元数据要放到文件开头,元数据顺序如下图所示:

 兼容EXIF的基线JPEG DCT格式

  •          JPEG数据的结尾处增加一行状态行(Status Line)
  •         如有需要,内嵌的图像可按照任意选择的顺序交织(Interlaced)
  •         在存储到文件前,CSI-2 JPEG数据经过数据分离过程(data separation process)所处理

 基线JPEG帧结束后的状态信息

        状态信息放到了基线JPEG帧的结束位置,至少要存储一下项的信息:

  •         图像曝光时间
  •         所使用的模拟&数字增益
  •         每个颜色分量的白平衡增益
  •         相机版本号
  •         相机寄存器设置
  •         图像分辨率,以及可能的缩略图分辨率

        相机寄存器设置可能包含了相机寄存器的一个子集。JPEG8图像所需要的关键信息就是将图像转换回线性空间所需要的信息。这对于某些应用比如打印服务是必要的。如下是一个寄存器设置的示例:

  •         采样频率
  •         曝光
  •         模拟和数字增益
  •         伽马
  •         色域(Color gamut)转换矩阵
  •         对比度
  •         亮度
  •         预增益(Pre-gain)

        每个包含了JPEG8特性的而相机模块,必须在其产品规范中定义好状态信息内容。格式和内容由厂商自定。

        图像状态信息在排布上,要按照如下规则:每个字节分为两个小的4-bit块,每个块的前面用“1010”序列填充,如下表所示:

         这是为了确保在状态数据中不会出现JPEG escape序列(0xFF,0x00)。

内嵌图像(Embedded Images)

         如有需要,可以在JPEG数据中嵌入图像。内嵌图像特性对于包含JPEG8特性的相机模块来说并非是强制性的。一个内嵌数据的例子是24-bit RGB缩略图。

        内嵌图像(Embedd Image)数据可以在压缩图像数据段中的任意位置,也可以根据需要有任意多个数据块(pieces)。如下图所示:

 压缩JPEG数据块内的TN Image嵌入信息例子

         内嵌图像数据通过SOEI(Start Of Embedded Image)和EOEI(End of Embedded Image)非标准标识和压缩数据区分开来。SOEI和EOEI所分开的域段数量没有限制。

        一个EI数据域段内的图像数据的像素到字节的打包过程,和其CSI-2数据类型相同的数据所指定的规则要相同。但是还有一个额外的限制,内嵌的图像数据不会产生任何错误的JPEG标识序列(0xFFXX)。

        为了避免在内嵌图像数据中出现错误的JPEG标识码,推荐对像素数据值的范围进行限制,例如:

  •         对于RGB888数据,推荐的解决错误同步码的方法是限制R,G,B值的范围为1到254。
  •         对于RGB565数据,推荐的解决错误同步码的方法是限制G分量的范围为1到63,R分量值的范围为1-30。

        每个EI数据域段由SOEI/EOEI标识所分隔,并且每个EI数据必须包含相同数量的字节以及一个完整的像素数量。一个EI数据域段可以包含图像数据的多行或一副完整的图像帧。

        内嵌图像数据是单独解码的,在写入JPEG数据到一个文件前会和JPEG压缩数据分开。在这个过程中,EI数据域段按照接收到的JPEG数据中出现的顺序,一个接一个地接起来。

JPEG8 非标准标识(Marker)

        JPEG8使用了保留的JPEG数据标识码用于特殊目的,用来标记数据文件中的额外的数据段。这些数据段并不是JPEG,JFIF,EXIF或任何其他规范的一部分,相反,它们的使用由本规范所指定。

        这些非标准标记总是在包含了JPEG8相机模块的产品内部使用,并且这些标记总是在保存JPEG数据到文件前被移除。

 JPEG8额外标记编码表

JPEG8数据接收

        压缩数据格式的字节到32-bit内存字的映射关系,和通用CSI-2规则一致。

 JPEG8数据格式接收

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

亦枫Leonlew

希望这篇文章能帮到你

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

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

打赏作者

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

抵扣说明:

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

余额充值