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何时能拿到图像。自由运行模式下相机按自身帧率连续出图,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节拍对齐
优化时不要孤立地调相机,而要以MERLIC的T_merlic为基准反推采集链路预算。假设MERLIC算子链实测T_merlic约18ms,产线要求总周期不超过40ms,则采集链路(曝光+读出+传输)必须控制在18ms以内,留出约4ms给输出和抖动。若当前曝光8ms、读出5ms、传输6ms,合计19ms,已经超预算,应优先缩小ROI把读出和传输各降2~3ms,或把曝光降到6ms并适当补光。
现场调试建议按以下顺序推进:先用MERLIC的采集诊断或相机厂商工具确认实际帧率、丢帧计数和传输耗时;再固定触发模式,确保触发源与产线节拍同源;然后调整ROI和像素格式,观察T_transfer变化;最后在保证图像质量的前提下微调曝光和增益。每一步只改一个变量,记录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的处理节拍才具备可预测性,后续的算子优化和并行化才有意义。