4. 图像预处理与增强

在 In-Sight 视觉系统中,相机采集到的原始图像往往并不适合直接送入缺陷检测工具。光照不均、镜头渐晕、传感器噪声、工件表面纹理干扰等因素,都会让真正需要关注的缺陷在灰度上"淹没"在背景里。图像预处理与增强的任务,就是在不改变缺陷本质特征的前提下,重新分配图像的灰度分布、抑制干扰、突出目标,使后续的 Blob、边缘、斑点或缺陷检测工具能够稳定地"看见"缺陷。

本节围绕三类核心手段展开:灰度变换、滤波、形态学操作,并针对低对比度缺陷给出可落地的预处理策略组合。

一、灰度变换:重新分配亮度,拉开缺陷与背景的差距

灰度变换是逐像素操作,输出像素值只由输入像素值决定,不依赖邻域。它解决的核心问题是"对比度不足"和"亮度偏移"。

线性拉伸是最基础的手段。设输入灰度范围为 [Imin, Imax],希望映射到 [Omin, Omax],则输出为 O = (I − Imin) × (Omax − Omin) / (Imax − Imin) + Omin。例如某金属件图像灰度集中在 90~150,缺陷与背景仅差 8 个灰度级,肉眼几乎不可分。若将 90 映射到 0、150 映射到 255,则原本 8 级的差异被放大到约 34 级,缺陷立刻显现。In-Sight 中可通过"Extract Histogram"先统计实际灰度分布,再据此设定拉伸区间,避免盲目拉伸导致过曝或截断。

伽马变换 O = 255 × (I/255)^γ 用于非线性调整。γ < 1 提亮暗部,适合暗背景上的亮缺陷;γ > 1 压暗亮部,适合亮背景上的暗缺陷。当缺陷只出现在某一亮度区间时,伽马变换比线性拉伸更精准。

阈值分割可视为最极端的灰度变换:将灰度二值化为 0/255。它既是增强手段,也是缺陷提取的前置步骤。关键在于阈值选取——固定阈值适合光照稳定的产线,自适应阈值(如基于局部均值的动态阈值)适合光照波动或曲面工件。

二、滤波:在空间域抑制噪声、保留缺陷边缘

滤波是邻域操作,输出像素由周围像素共同决定。选择滤波器的核心矛盾是:平滑噪声与保留边缘往往相互冲突。

均值滤波用邻域平均替代中心像素,能有效抑制随机噪声,但会模糊缺陷边缘,对细小缺陷不利。高斯滤波按距离加权,平滑更自然,边缘模糊程度低于同尺寸均值滤波,是通用去噪的首选。中值滤波取邻域中值,对椒盐噪声(孤立亮点/暗点)效果极佳,且能较好保留边缘,适合表面有灰尘、反光点的场景。

当缺陷本身是"边缘型"(如划痕、裂纹)时,应使用锐化或边缘增强而非平滑。拉普拉斯算子、Sobel 算子可突出灰度突变区域。In-Sight 的"Filter"工具支持在预处理链中串联多个滤波步骤,建议顺序为:先去噪(中值/高斯),再增强边缘(锐化),避免先锐化把噪声也放大。

三、形态学操作:按几何形状筛选缺陷

形态学操作基于结构元素(核)对二值或灰度图像进行形状运算,是缺陷增强中"按形状筛选"的利器。

腐蚀使亮区域收缩,可消除小于结构元素的亮点噪声;膨胀使亮区域扩张,可填补缺陷内部的小孔洞、连接断裂的缺陷区域。开运算(先腐蚀后膨胀)去除小亮点、保留大目标;闭运算(先膨胀后腐蚀)填补小暗孔、平滑缺陷轮廓。

举例:某塑料件表面有直径约 0.3 mm 的黑点缺陷,同时存在大量 0.05 mm 的灰尘亮点。若直接做 Blob 分析,灰尘会被误判。此时可先做一次开运算,结构元素选 3×3 圆形,灰尘亮点被消除,而 0.3 mm 缺陷保留;再做闭运算填补缺陷内部反光造成的小孔,最后送入 Blob 工具统计面积与圆度,即可稳定区分真实缺陷与干扰。

低对比度缺陷预处理链:从原始图像到可判缺陷 原始图像 缺陷/背景差≈8级 灰度变换 线性拉伸 90→0,150→255 伽马 γ=0.7 提亮暗部 自适应阈值分割 对比度提升至≈34级 滤波 中值 3×3 去椒盐噪声 高斯 5×5 平滑随机噪声 Sobel 增强划痕边缘 噪声↓ 边缘保留↑ 形态学操作 开运算 3×3 圆 去小亮点 闭运算 3×3 圆 填小孔 按形状筛选缺陷 灰尘消除 缺陷保留 Blob 判定 关键参数与效果对照(示例参数,需按实际工件标定) 处理步骤 示例参数 作用 观察指标 线性拉伸 Imin=90, Imax=150 拉开缺陷/背景灰度差 直方图双峰分离度 中值滤波 核 3×3 去除孤立亮点/暗点 噪声点数量下降 高斯滤波 核 5×5, σ=1.0 平滑随机噪声 背景均匀度提升 开运算 结构元 3×3 圆 消除小于核的亮点 灰尘误判数下降 闭运算 结构元 3×3 圆 填补缺陷内部小孔 缺陷面积稳定性

四、低对比度缺陷的预处理策略

低对比度缺陷的典型特征是:缺陷与背景灰度差小(常小于 15 个灰度级)、缺陷尺寸小、背景纹理复杂。针对这类缺陷,单一手段往往不够,需要组合策略。

策略一:先拉伸,再滤波,后形态学。顺序不能颠倒。若先滤波,低对比度缺陷的边缘会被进一步模糊;若先形态学,噪声会被当作缺陷放大。正确顺序是:线性拉伸或伽马变换先把灰度差拉开,再用中值/高斯去噪,最后用开/闭运算按形状筛选。

策略二:局部对比度增强替代全局拉伸。当光照不均时,全局拉伸会把亮区过曝、暗区仍不足。此时可用"背景估计 + 差分":先对图像做大核高斯模糊得到背景,再用原图减去背景,得到仅保留局部变化的残差图。缺陷在残差图中表现为局部亮/暗斑,对比度显著提升。In-Sight 中可用"Image Math"或"Filter"组合实现。

策略三:多尺度形态学。对尺寸未知的缺陷,用不同大小的结构元素分别做开运算,取各尺度结果的差异或并集,可同时捕获大缺陷和小缺陷,避免单一核尺寸漏检。

实操建议:在 In-Sight 中搭建预处理链时,每增加一步都应在同一张图上对比处理前后效果,并记录 Blob 工具的面积、圆度、灰度均值等特征值变化。建议保留原始图像与处理后图像的双窗口对照,便于快速判断某一步是否真正提升了缺陷可分离度,而不是仅凭肉眼"看起来更清楚"。
常见误区:过度滤波会抹掉细小缺陷;过度膨胀会让相邻缺陷粘连,导致面积统计偏大;阈值分割前未做光照校正,会导致同一工件不同区域判定不一致。预处理的目标是"让缺陷可被稳定测量",而非"让图像好看"。

总结来说,灰度变换解决"看不看得见",滤波解决"干不干净",形态学解决"是不是缺陷"。三者按"拉伸→去噪→形状筛选"的顺序组合,并针对低对比度场景引入局部增强与多尺度策略,才能让 In-Sight 的缺陷检测工具在复杂工况下保持稳定、可重复的判定能力。