3. 任务载荷数据源建模

任务载荷实时数据压缩的第一步不是选算法,而是把“数据从哪来、长什么样、什么时候来、哪些部分可以丢”这件事说清楚。数据源建模就是为压缩器建立一份可量化的输入契约:它决定了分帧边界、缓冲区深度、预测器阶数、量化步长以及无损/近无损策略的选择。如果建模缺失,压缩器往往在实验室数据上表现良好,一上机就出现帧错位、时延抖动或重建误差超限。

一、传感器输出格式:先分清“物理量—采样—编码”三层

载荷传感器种类繁多,但输出格式可以归为三类。第一类是原始采样流,例如红外探测器输出的14 bit原始灰度、可见光CMOS的Bayer RAW、振动传感器的24 bit ADC码值。这类数据没有经过压缩或封装,位宽固定、动态范围明确,是压缩收益最高的对象。第二类是结构化测量值,例如IMU输出的三轴角速度与加速度、GPS的经纬高与速度,通常以定长记录或TLV(Type-Length-Value)形式给出,字段语义清晰。第三类是已封装码流,例如可见光相机输出的H.264/H.265码流、SAR的BAQ压缩数据,这类数据已被上游压缩,二次压缩空间有限,建模重点转向“能否旁路”和“能否重封装”。

建模时必须记录每个通道的:位宽、字节序、有符号/无符号、量纲与标定系数、饱和标志位。以某型中波红外载荷为例,其输出为14 bit无符号整数,小端序,标定关系为 T = DN × 0.04 − 273.15(单位℃,示例参数)。压缩器若按16 bit处理,会白白浪费约12.5%的位宽;若忽略饱和标志,则高亮目标区域的重建会出现削顶。

二、帧结构:压缩的边界必须与帧边界对齐

帧结构决定了压缩器一次处理多少数据、在哪里重置状态。常见结构包括:固定行长帧(如每行2048像素)、二维面阵帧(如640×512)、带行头/帧头的封装帧、以及无显式边界的连续流。压缩器应优先与帧边界对齐,因为跨帧预测会引入错误传播,且一旦丢帧会导致后续解码全部失步。

一个典型的红外图像帧可拆为:帧同步字(2 Byte)、帧计数(2 Byte)、时间戳(4 Byte)、载荷状态字(2 Byte)、图像数据区(640×512×2 Byte)、校验(2 Byte)。其中帧计数与时间戳属于强时序元数据,必须无损保留;图像数据区是压缩主体;校验字段可在压缩后重新计算。建模输出应明确:哪些字段进入压缩通道、哪些旁路直通、哪些可丢弃。

任务载荷数据源建模:从物理量到压缩输入 传感器输出 红外 14bit RAW IMU 24bit 三轴 可见光 Bayer SAR BAQ 码流 帧结构解析 同步字 / 帧计数 时间戳 / 状态字 图像数据区 校验字段 时序特性 帧率 25/50/100 fps 行周期 / 消隐期 抖动 < 1 行周期 突发 vs 连续 噪声与冗余 固定模式噪声 读出噪声 空间相关冗余 时间相关冗余 压缩输入契约(建模输出) 位宽/字节序 · 帧边界 · 帧率与抖动 · 噪声方差 · 空间/时间相关长度 · 可丢弃字段清单 → 决定分帧策略、预测器阶数、量化步长、缓冲区深度、无损/近无损选择 示例参数(假设): 红外 640×512@50fps,14bit,读出噪声 σ≈2.5DN,固定模式噪声 σ≈1.8DN,行间相关长度≈3像素 IMU 200Hz,24bit,三轴角速度+加速度,帧长固定 18Byte,时间戳 4Byte 无损保留

三、时序特性:压缩器必须跟得上“最坏情况”

时序建模要回答三个问题:数据以什么速率到达、到达是否均匀、允许的端到端时延是多少。以红外图像为例,640×512@50fps、14bit,原始码率约为 640×512×14×50 ≈ 229 Mbps。若压缩比目标为8:1,则压缩后约28.6 Mbps,压缩器必须在40 ms帧周期内完成一帧处理,且不能因等待下一帧而累积延迟。

实际载荷的时序往往不是理想匀速的:行周期内存在消隐期,帧间可能有微秒级抖动,某些传感器在切换增益时会插入无效帧。建模时应记录:标称帧率、帧周期抖动范围、行有效时间占比、是否存在突发传输。对于突发型数据(如SAR的脉冲重复间隔),压缩器需要足够的输入FIFO深度来吸收突发,否则会丢数。建议FIFO深度按“最大突发长度 + 一行数据量”估算,并留20%余量。

四、噪声与冗余来源:压缩空间的真正来源

压缩之所以有效,是因为数据中存在冗余;而噪声决定了无损压缩的下限。任务载荷数据的冗余主要有四类:

  • 空间冗余:相邻像素高度相关,红外图像行间相关系数常达0.95以上(示例值),可用DPCM或小波变换去除。
  • 时间冗余:帧间背景变化缓慢,帧差能量远小于帧内能量,适合运动补偿或帧间预测。
  • 谱间冗余:多光谱/高光谱载荷相邻波段高度相关,可用谱间预测。
  • 结构冗余:固定模式噪声、坏元、行头字段等重复模式,可通过查表或参考帧消除。

噪声方面,读出噪声和固定模式噪声是主要限制。读出噪声近似高斯分布,方差为σ²,它使相邻像素差值不再趋近于零,从而限制无损压缩比。固定模式噪声则表现为不随时间变化的空间图案,可通过两点校正或参考帧扣除来降低,属于“可消除的冗余”。建模时应分别估计:读出噪声σ_read、固定模式噪声σ_fpn、量化噪声σ_q,并计算总噪声σ_total = √(σ_read² + σ_fpn² + σ_q²)。若σ_total约为2.5 DN,则无损压缩的熵下限大致在每像素8~9 bit(14bit输入),继续提高压缩比就必须引入近无损量化。

建模阶段建议用一段真实载荷数据做统计:计算相邻像素差值的直方图、帧差方差、行/列相关系数、噪声方差。这些统计量直接决定预测器阶数和量化步长,比凭经验设定更可靠。

五、建模输出:一份可执行的输入契约

综合以上分析,数据源建模的最终产物应是一份压缩器可直接读取的配置描述,至少包含:通道列表与位宽、字节序、帧同步方式与帧长、帧率与抖动容限、噪声方差估计、空间/时间相关长度、可丢弃字段清单、旁路字段清单、以及端到端时延预算。以红外通道为例,可写成如下配置片段(示例):

channel: IR_MAIN
  width: 640
  height: 512
  bit_depth: 14
  endian: little
  frame_sync: 0xEB90
  frame_rate: 50
  jitter_us: 200
  noise_sigma_dn: 2.5
  spatial_corr_len_px: 3
  temporal_corr: high
  bypass_fields: [frame_counter, timestamp, status]
  dropable_fields: [reserved]
  latency_budget_ms: 40

这份契约一旦确定,后续的压缩算法选择、缓冲区设计、量化步长整定就有了明确依据。反之,如果跳过建模直接调参,压缩器很容易在“看起来正常”的数据上过拟合,而在真实载荷的噪声、抖动和异常帧面前失效。数据源建模不是一次性工作,当载荷工作模式切换(如增益档位、帧率、开窗大小变化)时,契约应同步更新并重新验证。