2、非均匀性校正技术(一):两点校正法原理与实现、单点校正法原理与实现、校正系数存储与更新策略
各位工程师朋友,咱们今天聊聊热成像系统里一个绕不开的话题——非均匀性校正。说白了,就是让每个像素“说人话”。
你想想看,一个红外焦平面阵列,几万甚至上百万个像素,每个像素的光电响应特性不可能完全一样。有的像素天生敏感,有的反应迟钝,有的甚至干脆“罢工”(盲元)。如果不做校正,你看到的图像就是一片花斑,跟得了皮肤病似的。
我个人习惯把非均匀性校正比作“给每个像素配一副专属眼镜”。度数不对,图像就糊。今天咱们先讲最经典的两类校正方法:两点校正法和单点校正法。
2.1 两点校正法原理与实现
两点校正法,名字听着挺唬人,其实原理特别简单。它假设每个像素的响应是线性的,也就是:输出 = 增益 × 输入 + 偏置。
问题是,每个像素的增益和偏置都不一样。我们需要找到两个标准温度点,比如低温黑体T1和高温黑体T2,然后记录每个像素在这两个温度下的输出值。
有了这两组数据,就能解出每个像素的增益系数G和偏置系数O:
G(i,j) = (V_high - V_low) / (V(i,j)_T2 - V(i,j)_T1)
O(i,j) = V_low - G(i,j) × V(i,j)_T1
校正后的输出就是:V_corrected(i,j) = G(i,j) × V_raw(i,j) + O(i,j)
核心要点:两点校正法能同时校正增益差异和偏置差异,效果最好。但需要两个均匀辐射源(黑体),操作相对麻烦。
我在项目中遇到过一个问题:黑体温度不均匀,导致校正后图像边缘反而出现伪影。后来我学乖了,每次校正前先用热像仪扫一遍黑体表面,确认温度均匀性在0.1℃以内再开始。
2.2 单点校正法原理与实现
单点校正法就简单多了。它只用一个参考温度点,比如盖上镜头盖(均匀环境),然后记录每个像素的输出。
校正公式更简单:V_corrected(i,j) = V_raw(i,j) - V_offset(i,j) + V_target
其中V_offset(i,j)是当前像素在均匀背景下的输出,V_target是期望的基准值(比如所有像素的平均值)。
实战技巧:单点校正特别适合现场快速补偿。比如你从室内搬到室外,环境温度变了,图像出现条纹。这时候做一次单点校正,几秒钟就能恢复干净图像。
嗯,这里要注意:单点校正只能校正偏置差异,不能校正增益差异。说白了,它只能让图像“看起来均匀”,但每个像素的响应斜率还是不一样。如果场景温差很大,单点校正的效果就会打折扣。
我曾经在一个项目中偷懒,只用单点校正去处理50℃温差场景,结果图像边缘还是有色差。后来老老实实加了两点校正,问题才解决。
2.3 校正系数存储与更新策略
校正系数算出来了,存在哪儿?怎么更新?这是工程落地的关键问题。
| 存储方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 片内EEPROM | 掉电不丢失,读取快 | 擦写次数有限(10万次) | 出厂标定,长期固定 |
| 外部Flash | 容量大,可频繁更新 | 读取速度稍慢 | 现场校准,频繁更新 |
| SRAM(运行时) | 读写极快 | 掉电丢失 | 临时校正,快速切换 |
我建议采用“三级存储”策略:
- 出厂标定系数存EEPROM,作为基准。
- 现场校正系数存外部Flash,支持用户现场更新。
- 运行时系数加载到SRAM,保证实时处理速度。
避坑指南:我曾经遇到过EEPROM写入过程中掉电,导致系数损坏,开机后图像一片混乱。后来我加了校验机制——每个系数后面跟一个CRC校验值,加载时先校验,校验失败就回退到出厂系数。
更新策略方面,我个人习惯用“温度触发+定时触发”双模式:
- 温度触发:当探测器温度变化超过±5℃时,自动触发一次单点校正。
- 定时触发:每30分钟强制做一次背景刷新,防止长时间漂移。
你想想看,如果探测器温度从20℃升到50℃,内部偏置可能漂移好几个LSB。这时候不做校正,图像质量就会明显下降。
最后分享一个小技巧:校正系数建议用浮点数存储,但实际计算时转成定点数。我一般用Q16格式(16位小数位),精度够用,计算速度也快。
好了,关于两点校正和单点校正的核心内容就这些。下一节咱们会深入聊多点校正和自适应校正,那才是真正考验算法功底的地方。