4. 红外图像采集与预处理
红外热像仪输出的“原始热图”并不是一张普通的灰度照片,而是每个像素对应一个与入射辐射强度相关的量化数值。矿山巡检机器人要可靠识别电机轴承过热、电缆接头虚接、皮带托辊异常摩擦等故障,第一步就是把原始数据完整、无损地拿到手,再经过一系列预处理,把“能测温的物理量”变成“能看清、能判断的图像”。本节按数据获取、缺陷修正、噪声抑制、对比度增强的顺序展开,并给出可操作的参数示例。
一、原始热图的数据格式与读取
常见红外机芯(如 640×512 分辨率、17 μm 像元、NETD≤40 mK 的非制冷氧化钒探测器)在 RAW 模式下输出的是 16 位无符号整数矩阵,每个像素值称为 DN(Digital Number),它与探测器响应电压近似线性,但尚未换算为温度。机芯通常同时提供:RAW 数据帧、快门(挡片)状态标志、机芯温度、镜头透过率与大气参数等元数据。只有保留 RAW 数据,后续才能重新做非均匀性校正和精确测温;若只保存经过机芯内部压缩的 8 位伪彩 JPEG,测温信息已不可逆丢失。
工程上建议机器人端以“RAW16 + 元数据”打包存储,例如每帧附加时间戳、云台角度、快门标志、机芯温度。读取时用二进制方式按行优先解析,示例(Python/NumPy 思路):
import numpy as np
W, H = 640, 512
raw = np.fromfile("frame_0001.raw", dtype="<u2").reshape(H, W) # 小端16位
dn = raw.astype(np.float32)
# 元数据示例:快门温度 t_shutter=32.5℃,机芯温度 t_fpa=35.1℃
需要注意字节序(大端/小端)、是否含帧头、是否做了 14 位到 16 位的左移。若解析后图像出现规律性条纹或整体错位,多半是行宽、帧头长度或字节序不匹配,应先核对机芯通信协议再谈算法。
二、非均匀性校正(NUC)
同一均匀辐射场景下,探测器各像元输出并不一致,表现为固定图案噪声(FPN),在低对比度场景中会形成明显“网格”或“竖纹”,严重干扰对细小过热点位的判读。两点法非均匀性校正是最常用的手段:在低温 T1 与高温 T2 两个均匀黑体场景下采集响应,对每个像元 (i,j) 求增益与偏置:
G(i,j) = (mean_H - mean_L) / (DN_H(i,j) - DN_L(i,j))
O(i,j) = mean_L - G(i,j) * DN_L(i,j)
DN_nuc(i,j) = G(i,j) * DN_raw(i,j) + O(i,j)
其中 mean_H、mean_L 为全帧均值。实际使用中,机芯会周期性闭合快门做“单点校正”以跟踪温漂,机器人应在快门动作期间暂停测温判读,避免把挡片温度误判为设备热点。若现场温差大、机芯温漂明显,可每隔 10~15 分钟或环境温度变化超过 5℃ 时重新做两点校正。校正效果的判断依据是:均匀场景下全帧标准差明显下降,且不再出现随位置固定的条纹。
三、盲元检测与补偿
盲元包括死像元(响应几乎不随辐射变化)和过热像元(暗电流大、噪声高),在图像上表现为恒黑点或恒白点。检测可在两点校正数据上进行:计算每个像元在 T1、T2 下的响应差与全帧响应差的偏离程度,偏离超过 3 倍标准差的判为盲元;也可用邻域均值偏差法在均匀场景中快速筛查。补偿一般采用邻域中值或双线性插值,用周围正常像元替代:
盲元掩膜 mask = |resp(i,j) - median(resp)| > 3 * std(resp)
DN_fix(i,j) = median(DN_nuc[i-1:i+2, j-1:j+2]) # 对 mask 为真的点
盲元表应随校正一起保存并定期更新,因为探测器在长期高温、强辐射环境下盲元数量会缓慢增加。对巡检机器人而言,若盲元恰好落在关键测温区域(如电缆接头),应在任务规划时通过云台微调让目标落在正常像元区,而不是仅靠插值“补”出来。
四、图像滤波与增强
原始热图噪声以高频随机噪声为主,直接做阈值分割容易产生大量虚假热点。滤波要在“抑噪”和“保边”之间取舍:高斯滤波平滑但会糊掉小目标边缘;中值滤波对椒盐噪声和盲元残留有效;双边滤波或导向滤波能在平滑同时保留接头、螺栓等结构边缘。示例参数:对 640×512 图像,中值滤波核 3×3 用于去除孤立坏点,双边滤波空间域 σs=2、值域 σr=8(以 DN 为单位)用于抑制噪声并保留边缘。
增强的目的是拉开目标与背景的对比度。由于热图动态范围大,常用分段线性拉伸或 CLAHE(限制对比度自适应直方图均衡):先按巡检场景设定感兴趣温区(例如 -10℃~150℃),把该区间的 DN 映射到 0~255,再对局部窗口做直方图均衡,clipLimit 取 2.0~3.0 可避免噪声被过度放大。增强只用于显示和辅助判读,测温计算必须回到校正后的原始 DN 与标定曲线,二者不能混用。
五、参数选择与结果判断
预处理参数没有“一套通吃”的取值,应结合巡检对象和机芯特性确定。以矿山配电室电缆接头巡检为例:环境温度约 30℃,接头正常温升 5~10℃,故障温升可达 30℃ 以上。此时温区拉伸可设为 25℃~90℃,CLAHE 的 clipLimit 取 2.0,双边滤波 σr 取 6~8 DN,既能压住背景噪声,又不会把 2~3℃ 的细微温升抹平。判断预处理是否合格,可看三点:均匀背景区域是否还有固定条纹;盲元位置是否仍有恒亮点;同一目标在连续多帧中的温度读数是否稳定(波动应在 ±0.5℃ 量级,具体以机芯指标为准)。
把上述环节串起来,机器人端的数据流就是:采集 RAW16 与元数据 → 两点 NUC 与快门跟踪 → 盲元掩膜与邻域补偿 → 中值/双边滤波 → 温区拉伸与 CLAHE 增强 → 分别输出测温数据与显示图像。每一步都保留中间结果和参数记录,出现误报或漏报时才能回溯到具体环节,而不是笼统地“调一调参数”。