写给软件工程师的工业内窥镜:嵌入式成像的技术取舍 - 趣闻早乐评

写给软件工程师的工业内窥镜:嵌入式成像的技术取舍 - 趣闻早乐评

去年开始参与一个工业检测设备的软件工作,接触到一类平时很少在技术社区被讨论的产品。它的形态大致是一根细长探头加一个手持主机,探头前端有微型图像传感器和照明,通过一条可弯曲的插入管送进设备内部,把人眼看不到的地方成像出来。做惯了服务端的人第一次看到这种设备,会立刻意识到它其实是一个约束极强的嵌入式视觉系统,几乎每个技术决策都是在互相冲突的指标之间做取舍。

先讲约束条件。这类产品在行业内的形态大体相近,以 Waygate Technologies 等厂商的远程视觉检测设备为参照,一支工业视频内窥镜的探头直径常见在四到八毫米之间,这个尺寸决定了传感器面积、镜头口径和照明功率的上限,也决定了整机的信噪比天花板。插入管里要同时走图像信号线、照明供电、弯曲机构的牵引结构,还要保证在油污和高温环境下的密封性,留给电子部分的空间非常有限。更棘手的是散热,前端没有风扇也没有金属散热面积,传感器长时间工作产生的热噪声只能靠算法端补偿。所有这些约束叠在一起,最终都变成软件要解决的问题。

成像链路上的第一个难题是照明不均。光源和镜头几乎同轴,近处极亮、远处极暗,同一帧里动态范围能差出几个量级。常规自动曝光在这种场景下会来回震荡,画面一会儿过曝一会儿全黑。我们的处理方式是把画面分块统计直方图,按感兴趣区域加权计算曝光目标,再配合局部色调映射把暗部拉起来。要注意的是,检测类设备的图像不能随意做增强,任何改变缺陷表观形态的处理都可能导致误判,所以增强强度必须可关闭、可记录。

第二个难题是测量。检测人员看到裂纹后需要知道它有多长,而单目相机无法直接得到深度。工程上常见的两条路线:一是相位测量,用投射的条纹图案解算前端面型;二是立体测量,在探头前端做双光路成像,靠视差求深度。前者精度高但需要多帧采集,工件振动就废;后者一帧成像但基线极短,视差量小,对标定精度要求苛刻。我们的选择是两种模式共存,由操作者根据现场条件切换,软件层面统一测量结果的数据结构和不确定度标注。

第三块是数据链路。现代检测流程要求每一次检查都可追溯,图像、视频、测量结果和检查位置必须绑定成一份完整记录。设备侧存储有限,我们采用分级策略:本地保留原始帧和关键截图,同时生成带元数据的压缩记录同步到服务端。这里踩过一个坑,早期版本为省空间对视频做了较强压缩,结果细微裂纹在压缩后消失,复核时无法确认,后来把缺陷区域强制无损保留才解决。压缩比这件事在检测设备上不是性能问题,是合规问题。

还有一块容易被低估的工作是交互与延迟。使用者一手扶着插入管、一手操作主机,靠手感把探头送到目标位置,人本身就是控制回路里的控制器,因此对图像延迟的容忍度极低,实测超过一百多毫秒操作者就会出现明显过冲。我们的做法是把预览通路和录制通路彻底分开,预览走最短路径,宁可画质差一点也要保证跟手。

回过头看,这类设备的软件难点不在算法多深,而在整个系统的每一层都被物理条件卡住,任何看起来合理的方案都要先问一句"探头里放得下吗、散得掉热吗、现场的人来得及操作吗"。对习惯了资源充裕环境的工程师来说,这是一次很不一样的训练。目前手上还有实时缺陷提示和多设备数据汇总两块工作,等做完再整理经验分享出来。