4. 图像采集链路优化

在MERLIC应用里,处理节拍(Cycle Time)并不只由算子执行速度决定。图像采集链路是整条流水线的第一段,它决定了MERLIC每个周期能拿到什么质量的图像、什么时候能拿到、以及拿到图像后是否还要额外等待。很多现场“MERLIC跑得慢”的问题,根源其实在相机侧:曝光时间过长、增益过高引入噪声导致后续算子反复调参、触发模式与PLC节拍不匹配、带宽不足造成丢帧重传。本节把采集链路拆成五个可独立调节又相互制约的环节:相机参数、曝光、增益、触发模式、传输带宽,并说明它们如何共同影响MERLIC的处理节拍。

一、采集链路的时间构成

MERLIC一个完整处理周期的时间可以近似拆解为:

T_cycle ≈ T_exposure + T_readout + T_transfer + T_merlic + T_actuator

其中 T_exposure 是曝光时间,T_readout 是传感器读出时间,T_transfer 是图像从相机传到主机的时间,T_merlic 是MERLIC内部算子链执行时间,T_actuator 是结果输出到执行机构的时间。曝光、读出、传输属于采集链路,MERLIC本身无法压缩它们,只能通过参数配置让它们不成为瓶颈。优化采集链路的目标不是让每一段都最短,而是让 T_exposure + T_readout + T_transfer 稳定地小于 T_merlic 可接受的上限,并且不产生抖动。

二、相机参数:分辨率、像素格式与ROI

相机参数中影响节拍最直接的是分辨率和像素格式。分辨率越高,单帧数据量越大,读出和传输时间越长,MERLIC需要处理的像素也越多。现场常见误区是“用最高分辨率最保险”,但MERLIC的多数定位、测量、Blob分析任务在满足精度前提下并不需要满幅。例如一个200万像素相机(1600×1200)在满幅Mono8下每帧约1.92MB,若实际只关心工件中心区域,设置ROI为800×600后数据量降到0.48MB,读出和传输时间可显著下降,MERLIC的预处理和特征提取范围也随之缩小。

像素格式方面,Mono8每像素1字节,BayerRG8也是1字节但需MERLIC做去马赛克,RGB8每像素3字节。若MERLIC算子链不需要彩色信息,优先使用Mono8,可减少约三分之二的传输量和后续转换开销。相机参数应在MERLIC的Image Source配置中与相机实际能力对齐,避免MERLIC做不必要的格式转换。

三、曝光与增益:图像质量与节拍的平衡

曝光时间直接叠加在周期上。若曝光设为20ms,则仅曝光一项就占20ms,MERLIC再快也无法把周期压到20ms以下。因此曝光应遵循“够用即止”:在光源亮度、镜头光圈确定后,把曝光调到使目标区域灰度落在合理区间(例如128±30)即可,不要为了“更亮”而盲目加长。

增益是对信号的电子放大,它不增加曝光时间,但会同步放大噪声。高增益下图像噪声大,MERLIC的阈值分割、边缘提取容易产生毛刺,导致算子需要更复杂的滤波或更大的搜索范围,反而拉长T_merlic。现场建议:优先增加光源亮度或开大光圈,其次才动增益;增益一般控制在0~6dB以内,超过12dB要警惕噪声对MERLIC稳定性的影响。

判断曝光与增益是否合理的快速方法:在MERLIC中连续采集20帧,观察同一静止目标的灰度均值波动。若均值波动超过±5灰度级,说明增益偏高或光源不稳,应先解决采集质量再谈节拍优化。

四、触发模式:自由运行、软触发与硬触发

触发模式决定相机何时曝光,也决定MERLIC何时能拿到图像。自由运行模式下相机按自身帧率连续出图,MERLIC取最新帧处理,节拍由相机帧率主导,适合连续检测但可能取到运动模糊帧。软触发由MERLIC或上位机发命令,灵活性高但受操作系统调度影响,抖动可达数毫秒。硬触发由PLC或光电传感器直接给相机触发信号,抖动最小,是产线节拍要求严格时的首选。

硬触发还要注意触发延迟和曝光开始时刻。若传感器安装位置与相机视野有距离,工件从触发点到进入视野需要时间,这个时间必须小于触发延迟加曝光时间,否则会拍到工件未完全进入的画面。MERLIC侧应把触发超时设置得略大于最坏情况下的采集时间,避免误报“采集失败”。

五、传输带宽:接口、包大小与流控制

带宽不足的典型表现是丢帧、图像撕裂或MERLIC报采集超时。以GigE Vision为例,千兆网理论带宽约125MB/s,实际有效约110MB/s。一台1600×1200 Mono8相机在30fps下数据率约57.6MB/s,单台尚可,但若同一网卡接两台或与其它设备共享,就会紧张。此时可采取:降低帧率、缩小ROI、启用相机的包间隔(Inter-Packet Delay)避免突发、或改用万兆网/CoaXPress/USB3.0。USB3.0理论5Gbps,实际约400MB/s,适合中高分辨率单相机。

带宽优化的关键是让传输时间可预测。启用相机的流通道(Stream Channel)和主机侧的大容量接收缓冲,可以减少因主机忙导致的丢包。MERLIC的采集接口应设置合理的超时和重试次数,但重试本身会增加周期,所以根本仍是保证带宽余量。

MERLIC图像采集链路与处理节拍关系 工业相机 分辨率 / ROI 像素格式 Mono8 曝光时间 T_exposure 增益 Gain 读出 T_readout 触发模式 自由运行 / 软触发 硬触发(PLC/光电) 触发延迟与超时 传输链路 GigE / USB3 / CXP 带宽余量 包间隔 / 流控制 T_transfer 丢帧 / 重传 MERLIC处理 图像预处理 定位 / 测量 / 检测 T_merlic 结果判定 输出到执行机构 图像数据 帧缓冲 触发信号 单周期时间轴(示例) 曝光 8ms 读出 5ms 传输 6ms MERLIC处理 18ms 输出 4ms 总周期 ≈ 41ms 优化优先级 1. 缩小ROI / 降分辨率 2. 曝光够用即止,增益≤6dB 3. 硬触发替代软触发

六、把采集链路与MERLIC节拍对齐

优化时不要孤立地调相机,而要以MERLIC的T_merlic为基准反推采集链路预算。假设MERLIC算子链实测T_merlic约18ms,产线要求总周期不超过40ms,则采集链路(曝光+读出+传输)必须控制在18ms以内,留出约4ms给输出和抖动。若当前曝光8ms、读出5ms、传输6ms,合计19ms,已经超预算,应优先缩小ROI把读出和传输各降2~3ms,或把曝光降到6ms并适当补光。

现场调试建议按以下顺序推进:先用MERLIC的采集诊断或相机厂商工具确认实际帧率、丢帧计数和传输耗时;再固定触发模式,确保触发源与产线节拍同源;然后调整ROI和像素格式,观察T_transfer变化;最后在保证图像质量的前提下微调曝光和增益。每一步只改一个变量,记录MERLIC的周期统计,避免多个参数同时变动导致无法归因。

不要用提高增益来缩短曝光时间,除非确认MERLIC的算子对噪声不敏感。增益带来的噪声会以“算子参数反复调整、误检率上升”的形式反噬节拍,最终总周期可能比单纯加曝光更长。

七、采集链路参数检查表(示例)

检查项 示例值 判断依据 对节拍的影响
分辨率 / ROI 800×600 覆盖工件特征且留10%余量 数据量降为满幅1/4,读出与传输同步下降
像素格式 Mono8 MERLIC算子不需要彩色 避免去马赛克与三通道转换
曝光时间 6~8ms 目标灰度128±30,运动模糊可接受 直接叠加在周期上
增益 0~6dB 20帧灰度均值波动≤±5 过高增加噪声,间接拉长T_merlic
触发模式 硬触发 PLC或光电直接触发,抖动<1ms 消除软触发调度抖动
带宽余量 ≥30% 实际数据率/接口有效带宽 不足导致丢帧重传,周期不可预测

采集链路优化的本质是让图像“按时、按质、按量”到达MERLIC。按时靠触发与带宽,按质靠曝光与增益,按量靠分辨率与ROI。三者都稳定后,MERLIC的处理节拍才具备可预测性,后续的算子优化和并行化才有意义。