4. 图像预处理与增强

在 In-Sight 系统中,相机采集到的原始图像往往并不适合直接送入定位、测量或读码工具。光照不均、传感器噪声、工件表面反光、背景纹理干扰,都会让边缘变钝、对比度下降,最终导致工具找不到特征或测量值跳动。图像预处理与增强的任务,就是在正式检测之前,把图像调整到“特征清晰、干扰可控、结果稳定”的状态。本节围绕灰度变换、滤波去噪、形态学操作、图像锐化、背景校正五类手段,说明它们各自解决什么问题、在 In-Sight 中如何落地,以及如何把它们串成一条合理的预处理链。

一、灰度变换:先把对比度拉到可用区间

灰度变换是逐像素改变亮度值的操作,不改变像素的空间位置。最常用的是线性拉伸和 Gamma 校正。线性拉伸把原图中较窄的灰度区间映射到 0~255 全区间,例如原图有效灰度集中在 80~150,可映射为 g' = (g - 80) × 255 / (150 - 80),使目标与背景的差值被放大。Gamma 校正则用 g' = 255 × (g/255)^γ 调整整体明暗分布:γ<1 提亮暗部,适合暗背景上的浅色工件;γ>1 压暗亮部,适合抑制高光溢出。

在 In-Sight 电子表格中,这类操作可通过 Vision Tools 中的图像处理函数或 ExtractHistogram 先统计灰度分布,再决定拉伸区间。判断依据很直接:处理后在 Histogram 或 Line Profile 上观察目标与背景的双峰是否分离、峰间谷底是否明显。若双峰仍然重叠,说明仅靠灰度变换不够,需要进入下一步滤波或背景校正。

二、滤波去噪:在平滑与保边之间取舍

噪声表现为孤立的亮暗像素点,会干扰边缘提取和 Blob 分析。In-Sight 提供均值滤波、高斯滤波和中值滤波。均值滤波用邻域平均,速度快但会模糊边缘;高斯滤波按距离加权,平滑更自然,适合轻微噪声;中值滤波取邻域中值,对椒盐噪声抑制最好,且能较好保留边缘,是工件表面有随机亮点时的首选。

核尺寸决定效果:3×3 适合细密噪声,5×5 或 7×7 适合较粗噪声,但核越大边缘越钝。实操中可先取 3×3 中值滤波,若噪声仍在再升到 5×5。需要提醒的是,滤波会改变像素值,若后续测量依赖亚像素边缘,应避免过度平滑,否则边缘位置会产生偏移。判断滤波是否合适,可对比处理前后同一 Line Profile 上的噪声幅度与边缘斜率:噪声幅度下降而边缘斜率没有明显变缓,说明参数合理。

三、形态学操作:按形状修整目标区域

形态学操作针对二值或灰度图像中的形状进行处理,核心是腐蚀、膨胀、开运算和闭运算。腐蚀让亮区域收缩,可断开细小连接、去掉毛刺;膨胀让亮区域扩张,可填补小孔、连接断裂。开运算是先腐蚀后膨胀,用于去除小亮点和细桥;闭运算是先膨胀后腐蚀,用于填补小暗孔和裂缝。

在 In-Sight 中,形态学通常配合 Blob 或 FindCircle 使用。例如检测金属件上的黑色字符时,先阈值化得到字符区域,再用 3×3 开运算去掉背景噪点,最后用闭运算把断裂笔画连起来,Blob 的面积和数量才会稳定。结构元素的大小要与目标特征尺度匹配:字符笔画宽约 3 像素时,结构元素不宜超过 3×3,否则笔画会被腐蚀掉。判断标准是处理后目标区域的连通性和面积是否稳定,而不是单纯看图像是否“干净”。

四、图像锐化与背景校正:恢复边缘、压平光照

锐化用于增强边缘对比,常用拉普拉斯锐化或非锐化掩模。非锐化掩模的做法是:先对原图做高斯模糊得到低频分量,再用原图减去模糊图得到高频细节,最后按增益叠加回原图,即 g' = g + k × (g - blur)。k 取 0.5~1.5 较常见,过大时会放大噪声,因此锐化通常放在滤波之后。

背景校正解决的是光照不均问题。当视场中心亮、边缘暗时,固定阈值会在不同区域产生不同分割结果。In-Sight 可用 BackgroundCorrection 或先采集一张无工件的背景图,再用当前图减去背景图,得到仅含目标差异的校正图。另一种方式是形态学大核开运算估计背景,再相减。校正后应重新观察直方图,若原本被光照抬高的背景峰被压回低灰度区,目标峰与背景峰分离度提升,说明校正有效。

In-Sight 图像预处理链:从原始图像到稳定特征 原始图像 光照不均 / 噪声 对比度不足 背景校正 减背景 / 大核开运算 压平光照梯度 滤波去噪 中值 / 高斯 3×3 抑制孤立噪点 灰度变换 线性拉伸 / Gamma 拉开目标背景差 图像锐化 非锐化掩模 增强边缘 形态学操作 开运算去噪点 / 闭运算补断裂 结构元素 3×3,匹配笔画尺度 检测工具 Blob / FindCircle / 读码 / 测量 处理效果判断 直方图双峰分离 Line Profile 边缘斜率 噪声幅度下降 目标面积/数量稳定 边缘无偏移、无过钝 关键参数 拉伸区间 Gamma 值 滤波核尺寸 结构元素 锐化增益 k 背景图 顺序原则:先校正光照 → 再滤波去噪 → 后增强对比 → 最后锐化与形态学修整 每一步处理后都应回到直方图或线剖面确认特征是否更易分离,避免过度处理 效果不达标则回退调整参数

五、预处理链设计:顺序比单步更重要

把上述操作串成一条链时,顺序会显著影响结果。推荐的原则是:先做背景校正,再做滤波去噪,然后做灰度变换,最后做锐化和形态学。原因是背景校正处理的是低频光照,若先滤波会把光照梯度一起平滑掉,反而难以校正;锐化会放大噪声,因此必须放在滤波之后;形态学改变形状,应放在灰度增强之后、检测工具之前。

下面给出一份可直接参考的 In-Sight 预处理链配置示例,参数为教学示例值,实际需按工件和光照调整:

步骤1 背景校正:采集无工件背景图,当前图 - 背景图
步骤2 中值滤波:核 3×3,抑制表面随机亮点
步骤3 线性拉伸:输入区间 [70, 160] → 输出 [0, 255]
步骤4 非锐化掩模:高斯模糊 σ=1.2,增益 k=0.8
步骤5 形态学开运算:结构元素 3×3,去除残留小噪点
步骤6 送入 Blob / FindCircle 工具,观察面积与圆心稳定性

设计时还要注意两点。其一,预处理不是越多越好,每增加一步都会引入计算开销和参数风险,能用光照和镜头解决的,优先在采集端解决。其二,所有参数都应记录在电子表格的注释或作业文件中,便于换线或换批次时快速复现。判断整条链是否合格,最终看检测工具的输出是否稳定:同一工件重复采集 10 次,Blob 面积波动应在 ±2% 以内,圆心坐标波动应在 ±0.5 像素以内;若波动超标,应回到链中定位是哪一步放大了噪声或削弱了边缘。

在 In-Sight 中调试预处理链时,建议把每一步的输出图像单独保存或显示,逐级对比直方图和线剖面,而不是只看最终结果。这样能快速判断问题出在光照、噪声还是参数过激。
避免在锐化之后再做中值滤波,这会把刚增强的边缘重新模糊;也避免在形态学之后做灰度拉伸,因为形态学已改变像素分布,拉伸区间会失去参考意义。

掌握这五类手段及其组合顺序后,面对不同的工件和光照条件,就能有依据地选择处理步骤,而不是盲目堆叠工具。预处理的目标始终是让后续检测工具“看得清、找得稳”,所有参数和顺序都应围绕这一目标来验证和收敛。