4. 图像预处理流程设计
在 KEYENCE XG-X 系列视觉系统中,图像预处理并不是“把图变好看”的装饰步骤,而是决定后续边缘检测、Blob 分析、模板匹配能否稳定命中的基础环节。XG-X 的流程编辑器中,预处理以“处理单元”的形式串联在相机输入与检测单元之间,每个单元的输出图像直接作为下一单元的输入。因此,顺序错了,参数再调也救不回来;顺序对了,参数才有明确的调节方向。
本节围绕四个核心环节展开:滤波、灰度变换、二值化、形态学处理。我们先建立一条符合 XG-X 实际配置逻辑的处理链,再逐段说明每个环节的输入输出、关键参数以及它们对最终检测结果的影响。
一、滤波:先稳住噪声,再谈特征
XG-X 的滤波单元位于预处理链最前端,目的是抑制传感器噪声、光照不均和表面纹理带来的高频干扰。常用类型有三种:平滑滤波(均值)、中值滤波和高斯滤波。在 XG-X 中配置时,核心参数是核尺寸(Kernel Size),通常取 3×3、5×5 或 7×7。
核尺寸越大,平滑效果越强,但边缘也会被同步模糊。对于金属表面划痕检测,划痕本身是细线特征,若用 7×7 均值滤波,划痕可能被“抹掉”。此时应优先选择 3×3 中值滤波,它在去除椒盐噪声的同时能较好保留边缘。若图像整体偏暗且噪声呈高斯分布,则 5×5 高斯滤波更合适,其权重按距离衰减,对中心像素影响更自然。
一个实用的判断方法是:在 XG-X 的实时图像窗口中切换滤波前后,观察目标边缘的灰度过渡带宽度。过渡带从 2 像素扩展到 5 像素以上,说明滤波过强,需要减小核尺寸或改用中值滤波。
二、灰度变换:把目标从背景中“拉”出来
灰度变换不改变像素的空间位置,只改变灰度值的映射关系。XG-X 提供对比度拉伸、伽马校正和灰度反转三类常用操作。对比度拉伸通过设定输入灰度上下限和输出灰度上下限,把原本集中在 80~140 的灰度区间线性映射到 0~255,使目标与背景的差异被放大。
伽马校正则用于非线性调整:γ<1 提亮暗部,γ>1 压暗亮部。例如检测黑色橡胶上的浅色字符时,暗部细节容易被淹没,取 γ=0.7 可让字符边缘更清晰。灰度反转适用于背景比目标亮的情形,例如白纸上的黑色印刷标记,反转后目标变为高亮,便于后续二值化统一处理。
需要注意的是,灰度变换会同时放大噪声。如果前一步滤波不充分,拉伸后噪声也会被同步增强,导致二值化后出现大量孤立噪点。因此滤波必须在灰度变换之前,这是 XG-X 预处理链中一条不可颠倒的顺序原则。
三、二值化:阈值决定“什么是目标”
二值化把灰度图转换为黑白图,是 Blob 分析和面积测量的前提。XG-X 支持固定阈值和自动阈值两种模式。固定阈值适合光照稳定的场景,例如在封闭光源下检测 PCB 焊盘,阈值可设为 128 并配合 ±10 的偏移量微调。自动阈值(大津法)则根据图像灰度直方图自动寻找类间方差最大的分割点,适合光照缓慢变化的产线。
阈值偏移量是一个容易被忽视但非常关键的参数。当目标边缘存在渐变过渡时,阈值每偏移 10 个灰度级,二值化后的目标面积可能变化 3%~8%。对于尺寸测量任务,这意味着测量结果会随阈值漂移。建议在 XG-X 中开启“阈值预览”功能,拖动阈值滑块观察目标轮廓的收缩与扩张,选择轮廓最稳定的位置作为最终阈值。
四、形态学处理:修形,而不是改变本质
形态学处理在二值化之后进行,用于修正目标的形状缺陷。XG-X 提供腐蚀、膨胀、开运算和闭运算四种基本操作,结构元通常为 3×3 或 5×5 矩形/十字形。
腐蚀使目标缩小,可断开细小的粘连;膨胀使目标扩大,可填补内部空洞;开运算(先腐蚀后膨胀)用于去除毛刺和孤立噪点;闭运算(先膨胀后腐蚀)用于连接断裂区域。例如检测金属件上的冲压孔时,二值化后孔边缘可能出现毛刺,用 3×3 开运算即可平滑轮廓,同时保持孔径基本不变。
形态学参数的影响具有累积性:连续两次 3×3 腐蚀,等效于一次 5×5 腐蚀。因此不建议叠加多个形态学单元,而应在单个单元中选择合适的结构元尺寸和操作类型,避免目标被过度侵蚀。
五、参数联动与验证方法
四个环节的参数并非独立。滤波核增大后,边缘过渡带变宽,二值化阈值需要相应调整;灰度拉伸过强时,形态学开运算的结构元也应适当减小,否则目标会被过度削减。在 XG-X 中验证预处理链是否合理,可以观察三个指标:
- 目标面积稳定性:连续采集 20 帧,同一目标面积波动应小于 2%。
- 边缘重复性:同一位置边缘坐标的标准差应小于 0.5 像素。
- 噪点数量:二值化后孤立小区域(面积小于 10 像素)数量应为 0 或接近 0。
若面积波动大,优先检查二值化阈值是否落在灰度过渡带内;若边缘重复性差,检查滤波是否过强或光照是否稳定;若噪点多,回到滤波环节增加中值滤波或调整形态学开运算。通过这种“指标—环节”对应关系,可以快速定位预处理链中的薄弱点,而不是盲目试参数。
最后需要强调:预处理的目标不是得到“最干净”的图像,而是得到检测单元最容易稳定处理的图像。有时保留少量纹理反而有利于模板匹配的区分度,过度平滑会让不同型号的产品看起来一样。因此,预处理参数应在实际检测结果上验证,而不是仅凭视觉效果判断。