3. 图像预处理与增强
在工业视觉项目中,相机采集到的原始图像往往并不适合直接送入定位、测量或检测工具。光照不均、对比度不足、噪声干扰、边缘模糊、背景纹理杂乱,都会让后续算法的稳定性大打折扣。图像预处理与增强的任务,就是在正式分析之前,把图像“整理”成更利于算法判断的形态。VisionPro 提供了从灰度变换、空间滤波到形态学处理的一整套工具,它们既可以作为独立工具在 Job 中调用,也可以组合成预处理链,为 CogFindLine、CogBlob、CogPMAlign 等工具提供更干净的输入。
一、灰度变换:先解决“看得清”的问题
灰度变换是最基础的一类增强手段,它逐像素地改变灰度值,不改变像素的空间位置。VisionPro 中常用的工具包括 CogIPOneImageTool 与 CogImageConvertTool,前者支持线性拉伸、阈值化、反相、伽马校正等操作,后者用于彩色到灰度的转换以及位深调整。
线性灰度拉伸是最常用的手段。假设当前图像灰度集中在 60~150 之间,而目标与背景的差异只有 20 个灰度级,此时可以设置输入区间 [60, 150]、输出区间 [0, 255],把有效灰度拉开到整个动态范围。VisionPro 的 CogIPOneImageTool 中对应参数为 MapMode = Linear,配合 InputLow/InputHigh 与 OutputLow/OutputHigh。如果图像整体偏暗但高光部分已经饱和,则更适合用伽马校正,例如 Gamma = 0.7 可以提亮中间调,同时避免高光溢出。
需要特别注意的是,灰度变换是全局操作。当图像存在明显的光照梯度时,全局拉伸会把亮区推爆、暗区仍然压死。这时应改用局部自适应方法,例如 VisionPro 的 CogIPOneImageTool 中的 LocalThreshold 或结合 CogHistogramTool 先统计灰度分布,再决定拉伸区间。一个实用的判断依据是:如果直方图呈单峰且集中在窄区间,线性拉伸有效;如果直方图呈双峰但两峰高度差异极大,说明背景占比过高,可能需要先做掩膜或 ROI 限制。
二、滤波:在“去噪”与“保边”之间取舍
滤波处理的是像素邻域关系,核心矛盾是噪声抑制与边缘保留。VisionPro 中常用的滤波工具是 CogIPOneImageTool 的卷积模式以及 CogMedianImageTool、CogGaussianFilterTool。
均值滤波实现简单,对高斯噪声有一定抑制,但会模糊边缘。VisionPro 中可通过 CogIPOneImageTool 设置 KernelSize = 3×3 或 5×5 的均值核。中值滤波对椒盐噪声效果显著,且比均值滤波更能保留边缘,典型参数为 KernelSize = 3 或 5,适合处理表面划痕、脏点等孤立异常像素。高斯滤波则用于平滑过渡,Sigma 控制平滑程度,Sigma 越大越平滑,但边缘定位精度下降。
实际调参时,建议先用 CogHistogramTool 观察噪声幅度,再决定核大小。一个经验规则是:核大小不应超过目标特征宽度的 1/3。例如检测宽度约 6 像素的细线,3×3 核尚可,5×5 核就可能把线“吃掉”。如果滤波后边缘仍不清晰,不要继续加大核,而应转向锐化或形态学方法。
三、形态学操作:改变目标的“形状”
形态学操作基于结构元对图像进行集合运算,最常用的是腐蚀、膨胀、开运算和闭运算。VisionPro 中对应工具为 CogMorphologyTool,核心参数包括 Operation(Erode/Dilate/Open/Close)、StructureShape(矩形/圆形/十字)和 KernelSize。
腐蚀会缩小亮区域,适合去除细小的毛刺和孤立亮点;膨胀会扩大亮区域,适合填补小孔洞和连接断裂。开运算是先腐蚀后膨胀,用于去除小物体而保持大物体尺寸基本不变;闭运算是先膨胀后腐蚀,用于填补目标内部的小孔和缝隙。结构元的选择同样关键:矩形结构元对水平和垂直边缘更敏感,圆形结构元对方向不敏感,适合处理圆形目标。
一个典型的应用场景是:金属表面检测中,目标区域存在大量细小反光点,先用 3×3 矩形结构元做开运算,可以去掉这些孤立亮点,同时保留目标主体的轮廓。如果目标内部有细小孔洞需要填补,则改用闭运算。需要注意的是,形态学操作会改变目标的实际尺寸,因此如果后续要做亚像素级测量,应谨慎使用,或在使用后重新标定。
四、组合使用与参数调优建议
实际项目中,预处理往往不是单一操作,而是按“灰度变换 → 滤波 → 形态学”的顺序组合。VisionPro 中可以通过 Job 将多个工具串联,前一个工具的输出图像作为后一个工具的输入。调参时建议遵循以下原则:
- 先看直方图,再决定灰度变换方式,避免盲目拉伸。
- 滤波核大小不超过目标特征宽度的 1/3,优先选中值滤波保边。
- 形态学结构元从 3×3 开始尝试,逐步增大,观察目标尺寸变化。
- 每一步处理后都用
CogHistogramTool或CogBlobTool验证效果,不要一次性堆叠过多操作。
OutputImage 显示在 CogDisplay 中,逐级对比处理前后的图像差异。如果某一级处理后目标反而变差,应回退该级参数,而不是继续叠加后续操作。
总结来说,灰度变换解决“对比度”问题,滤波解决“噪声与边缘”问题,形态学解决“目标形状”问题。三者不是孤立的,而是根据图像质量与检测目标的特点,有选择地组合使用。掌握每一步的参数含义与调优边界,才能让 VisionPro 的后续工具在稳定、干净的图像上发挥出应有的精度与鲁棒性。