3、非均匀性校正技术(二):基于场景的自适应校正算法

各位工程师朋友,咱们接着聊非均匀性校正。上一章讲了基于参考源的校正,说白了就是拿黑体当“尺子”去量每个像元的偏差。但实际项目中你会发现——黑体不能一直挡在镜头前面啊!尤其是机载、车载这类移动平台,哪有条件频繁做两点校正?

所以这一章,我们来啃硬骨头:基于场景的自适应校正算法。不需要黑体,不需要快门,全靠场景本身的运动信息来“自学习”校正参数。我做了这么多年热成像系统,可以负责任地说:这是工程落地中最考验算法功底的一环。

3.1 为什么需要自适应校正?

先说说痛点。非均匀性会随着时间漂移——温度变了、偏压变了、探测器老化,都会导致校正参数失效。我记得有一次在户外做长波红外测试,上午刚做完两点校正,下午太阳一晒,机壳温度升了15度,图像上立马出现固定图案噪声(FPN)。

你想想看,如果这时候还要停下来重新做黑体校正,那实战场景下根本没法用。所以业界的主流思路是:利用场景中的运动信息,在线更新增益和偏置。这就是自适应校正的出发点。

核心思想: 当场景运动时,同一个物点会落在不同像元上。利用这个“时间-空间”的对应关系,可以反推出每个像元的校正参数。

3.2 卡尔曼滤波法

卡尔曼滤波法,我个人认为是最优雅的一种自适应校正方法。它把非均匀性校正问题建模成一个状态估计问题——每个像元的增益和偏置就是我们要估计的状态量。

3.2.1 数学模型

假设探测器输出为:

Y(i,j,t) = G(i,j) * X(i,j,t) + O(i,j) + N(i,j,t)

其中:

  • Y(i,j,t) — 像元(i,j)在t时刻的输出
  • G(i,j) — 增益(待估计)
  • O(i,j) — 偏置(待估计)
  • X(i,j,t) — 真实辐射量
  • N(i,j,t) — 时间噪声

卡尔曼滤波的核心步骤分两步:预测更新

// 预测阶段
G_pred = G_prev
O_pred = O_prev
P_pred = P_prev + Q   // Q为过程噪声协方差

// 更新阶段
K = P_pred * H^T * (H * P_pred * H^T + R)^(-1)  // 卡尔曼增益
G_new = G_pred + K * (Y - H * [G_pred, O_pred]^T)
O_new = O_pred + K * (Y - H * [G_pred, O_pred]^T)
P_new = (I - K * H) * P_pred
我的经验: 卡尔曼滤波法对场景运动速度很敏感。运动太慢,收敛也慢;运动太快,容易发散。我一般会在初始化时给一个较大的过程噪声Q,让滤波器先快速收敛,再逐渐减小Q值。

3.2.2 工程实现要点

实际项目中,卡尔曼滤波法有几个坑需要避开:

  • 运动检测: 必须加运动检测模块。静止场景下更新参数,反而会引入错误。我习惯用帧差法做运动判断,阈值设在1-2个DN值。
  • 收敛速度: 初始100帧内,增益和偏置的估计误差较大。建议前50帧用较大的学习率,后面再降下来。
  • 计算量: 每个像元都要维护一个2x2的协方差矩阵。对于640x512的探测器,内存开销不小。我做过一次优化——只对偏置做卡尔曼滤波,增益用全局统计量近似,效果也还行。
避坑指南: 我曾经在一个项目中,卡尔曼滤波法在实验室跑得好好的,一上整机就出现“鬼影”。查了两天才发现——是场景中有一个静止的高温目标(比如烟囱),滤波器把它当成了固定图案噪声去校正,结果越校越偏。后来加了运动掩膜,才解决这个问题。

3.3 神经网络法

神经网络法,说白了就是用深度学习的方式去学习非均匀性的分布规律。这个方法在近五年发展很快,尤其是卷积神经网络(CNN)的出现,让端到端的校正成为可能。

3.3.1 网络结构

我常用的一个轻量级网络结构如下:

输入: 单帧红外图像 (H x W x 1)

Layer 1: Conv2D(3x3, 16 filters) + ReLU
Layer 2: Conv2D(3x3, 16 filters) + ReLU
Layer 3: Conv2D(3x3, 1 filter) + Linear

输出: 校正后的图像 (H x W x 1)

损失函数: L1 Loss + 梯度平滑约束

这个网络只有3层卷积,参数量不到10万,在FPGA上也能跑实时。训练时,我们用两点校正后的图像作为标签,原始图像作为输入。

3.3.2 训练策略

神经网络法最关键的其实是训练数据的获取。我分享一个实战经验:

  • 数据采集: 用黑体在不同温度下采集多组数据,做两点校正后作为“干净”标签。同时保留原始未校正图像。
  • 数据增强: 对原始图像加入模拟的非均匀性(随机增益+偏置),让网络见过更多“坏”的情况。
  • 在线微调: 部署后,每隔一段时间用当前场景做一次自监督微调。损失函数用帧间一致性约束。
对比总结:
方法 优点 缺点
卡尔曼滤波法 理论成熟,收敛稳定 对运动速度敏感,计算量大
神经网络法 端到端,泛化能力强 需要大量训练数据,部署复杂

3.4 校正效果评估指标

算法好不好,不能光靠眼睛看。我整理了几个常用的定量评估指标:

3.4.1 空间噪声指标

  • 固定图案噪声(FPN): 对均匀场景(如黑体)计算所有像元输出的标准差。单位:DN或mK。
  • 非均匀性(NU): 通常用NU = σ / μ表示,其中σ是像元输出的标准差,μ是均值。好的校正系统,NU应该小于0.5%。

3.4.2 时间稳定性指标

  • 时间噪声(Temporal Noise): 对同一个像元,连续采集100帧,计算其标准差。这个指标反映的是随机噪声,不是非均匀性。
  • 漂移量(Drift): 开机后每10分钟测一次FPN,看FPN随时间的变化曲线。好的自适应校正算法,应该能把FPN漂移控制在±1个DN以内。

3.4.3 图像质量指标

  • 粗糙度(Roughness): 计算图像中相邻像素差的绝对值之和。校正后的图像,粗糙度应该明显降低。
  • 对比度(Contrast): 用局部标准差衡量。注意:校正不能过度平滑,否则会损失细节。
我的习惯: 在项目验收时,我会同时看三个指标:FPN、NU、以及一个主观评分(让3-5个工程师盲评图像质量)。客观指标和主观感受要结合起来,不能只看数字。

3.5 本章知识体系

下面这张图,是我自己总结的自适应校正技术知识框架,方便大家理解各模块之间的关系:

基于场景的自适应校正技术体系 原始红外图像 卡尔曼滤波法 状态估计模型 预测+更新迭代 需运动检测辅助 神经网络法 端到端学习 轻量级CNN结构 需大量训练数据 校正效果评估指标 FPN | NU | 时间噪声 | 粗糙度 客观指标 + 主观评价

嗯,以上就是本章的全部内容。卡尔曼滤波法和神经网络法各有适用场景,我个人建议:如果硬件资源有限、实时性要求高,优先考虑卡尔曼滤波法;如果数据充足、算力允许,神经网络法能带来更好的校正效果。评估指标这块,千万别只看一个数字——FPN降下来了,但图像细节也丢了,那就不叫成功。

好,这一章就到这里。下一章我们聊时域滤波与空域滤波的联合应用,到时候见。


专注资料整理