工业工件表面划痕检测常遇到一类典型问题:单条划痕被污渍、局部反光遮挡断裂成多段,Blob 分析会将其识别成多个独立小连通域,计算得到的划痕长度远小于真实值。本文基于 VisionMaster 现成流水线(图像源→快速匹配→位置修正→阴影校正→图像归一化→图像滤波→形态学处理→Blob 分析),逐个拆解每个算子作用、参数优化逻辑,全程不新增算子,通过原生节点调参实现断点拼接、拉长目标短线划痕,适合金属板材、锂电池极片类表面缺陷落地复用。
整体流水线总览

算子功能介绍
阴影校正 (预处理第一层:抹平全局明暗不均)
针对打光不均、局部阴影、大面积污渍带来的画面亮度偏差,通过滤波平滑背景亮度曲线,校正整体明暗差,弱化大块污渍和工件基底的灰度反差,让被污渍盖住的划痕边缘更容易显现。自带 4 项可调运行参数:滤波尺寸、增益、亮度校正补偿、噪声。
参数
| 参数 | 描述 |
|---|---|
| 滤波尺寸 | 卷积核的大小,取值范围1~50。卷积核越大滤波效果越平滑 |
| 增益 | 增强前景目标,取值范围0~100 |
| 亮度校正补偿 | 对图像整体灰度水平进行调整,取值越高图片整体灰度越高,取值范围0~255 |
| 噪声 | 干扰像素灰度阈值,取值范围0~255。灰度值低于该值的像素点,其灰度值将被置为0 |
滤波尺寸
滤波本质:用固定尺寸的滑动窗口遍历图像所有像素,按预设规则融合窗口内像素灰度值,替换窗口中心原始像素值,实现降噪、边缘保留、模糊等效果。

增益(Gain)
图像传感器采集到微弱光电信号后,电路对原始电压信号做放大处理的倍率,作用是拉高画面亮度,单位常用dB(分贝)或线性倍数标注,是工业相机最常用曝光配套参数。 分为两类:
- 模拟增益:光电信号转数字前放大,信噪比损耗小,优先使用;
- 数字增益:信号模数转换后软件拉升亮度,会同步放大噪点,尽量少用。
光线打在 CMOS/CCD 感光像素→光子转化微弱电信号(电压极小)→增益电路按设定倍率放大电压→模数采样转为图像灰度数据输出。 举个直观例子:原始感光电压仅 2mV,增益设为 4 倍,放大后输出 8mV,最终画面整体亮度提升。

图像归一化
图像归一化可对图像的灰度分布按照规则进行调整,以增强图像局部细节。

第1种:直方图均衡化(暴力拉差距法)
-
大白话原理 :如果全班成绩都挤在60~70分之间,大家拉不开差距。这个算法就"强行"把60分的同学拉到40分,把70分的同学拉到90分。目的不是改分数,而是让大家分数差距变大,好坏一眼就能看出来。
-
处理后的样子 :图片明暗对比特别强烈,暗的地方更暗,亮的地方更亮,画面变"清晰"了,但颜色会有点失真。
-
什么时候用它? 只要想"肉眼看清"图像里的细节,就用它。
- 比如:划痕检测(让细小的划痕和背景黑白分明)、老照片修复、医学看X光片、雾天照片去雾。
-
一句话总结 :为了让你(人眼)看得更清楚。
第2种:直方图归一化(统一尺子法)
-
大白话原理 :不管这张图原本是偏暗(全班都在40分)还是偏亮(全班都在80分),我找出图里最暗的点 和最亮的点,然后按比例把整张图"压缩"或"拉伸",强行把最暗的变成0分,最亮的变成100分。
-
关键区别 :它只动尺子,不动排名。原本比旁边亮的,处理后还是比旁边亮,只是大家站在了同一个起点上。
-
处理后的样子:图片明暗关系没变,只是整体亮度被均匀地拉到了0~255这个标准范围里。
-
什么时候用它? 当你要把多张图片放在一起对比,或者喂给传统电脑程序(非深度学习)时。
- 比如:工厂流水线拍了一百个零件,有的光线亮有的暗,先归一化,让电脑判断时不受亮度干扰。
-
一句话总结 :为了把不同亮度的图片,塞进同一个标准盒子里
第3种:均值标准差归一化(AI专用摆正法)
-
大白话原理 :先算出全班平均分(比如平均60分),然后每个同学的成绩都减去60分。这样一来,比平均亮的变正数,比平均暗的变负数,全班成绩就围绕着"0分"上下波动了。再除以一个波动幅度,把大家的分数聚拢一点。
-
关键警告 :处理完后,图片里有大量的负数 ,如果硬要显示出来,就是一片灰蒙蒙的噪点,根本不是给人看的正常图片。
-
处理后的样子:完全看不出原图的样子(全是灰的),数值在-1到1之间浮动。
-
什么时候用它? 只且仅用于"人工智能(深度学习模型)"训练和推理之前。
- 比如:人脸识别、自动驾驶、AI大模型读图之前的必经步骤。电脑不喜欢看0~255的图片,就喜欢看这种围绕0上下波动的数据,算得快,学得准。
-
一句话总结 :为了把图片加工成电脑爱吃的数据"饲料"
图像滤波
滤波 = 给图片"美颜磨皮"或者"描边勾线"。
它的核心原理就一句话:每个像素点的新数值,由它自己加上周围一圈邻居的数值共同决定。
就像你原来考了60分,但发现前后左右四个同桌都考了90分,老师怀疑你写错卷子,于是把你的分数改成和同桌差不多------这就是滤波的原理。

高斯滤波
原理
依靠邻域像素高斯权重加权平滑,近处像素权重更高,整体过渡柔和,降噪幅度可控。
场景适配 & 参数
- 适用场景:去除成像颗粒噪点、工件浮尘,是细长划痕检测最优可选方案;
- 避坑要点:只用3×3 最小核,核越大越容易模糊划痕头尾弱边缘、缩短识别长度;
- 项目用法:放在图像归一化后、形态学处理前,小力度降噪,保留断点两侧划痕细节,方便后续闭运算拼接长线。
形态学处理
形态学处理模块主要用来从图像中提取出对描绘区域形状有意义的图像分量,使后续的识别工作能够抓住目标对象最为本质的形状特征,如边界和连通区域等。形态学处理针对的是图像中的白色像素点。

核心基础原理
形态学运算依靠**结构元素(卷积模板)**滑动遍历全图像素,按照设定规则改动连通域轮廓,基础运算分腐蚀、膨胀两类,再衍生开闭组合运算:
- 膨胀:以结构元素范围向外扩张亮区域边界,填补细小空隙、拉近分段缺陷;
- 腐蚀:向内收缩亮区域边界,削除细小零散噪点毛刺;
- 闭运算(本项目首选)= 先膨胀 + 后腐蚀 先小幅膨胀补上污渍造成的划痕断点空隙,把同一条划痕断开的两段连成整块连通域;再用同等幅度腐蚀还原划痕原本粗细,不会让线条整体变粗变形,完美适配断续划痕拼接需求;
- 开运算 = 先腐蚀 + 后膨胀:用来剔除小颗粒噪点,不适合修补长线断点。
关键可调参数释义
- 结构元素形状:可选矩形、圆形;细长划痕优先用矩形;
- 尺寸(宽、长、倾斜角度):宽度贴合划痕粗细,长度控制断点填补跨度,角度对齐划痕倾斜方向;
- 迭代次数:控制运算执行轮次,常规场景取 1 次即可,多次迭代会过度粘连相邻划痕。
BLOB分析
BLOB(斑点 / 连通域)分析是视觉检测经典后处理算子,承接形态学处理输出的预处理图像,通过灰度阈值分割提取画面内互相连通的像素区域,计算面积、长度、长宽比等特征筛选真实缺陷,
参数
轴比范围
开启后,算法仅筛选出最小外接矩形短轴长度和长轴长度比值在轴比范围内的blob。
连通性
设置判断图像上像素点是否互相连通的标准,包括4连通和8连通。通常设置为8连通可比设置为4连通获得更大的blob。

4 连通、8 连通基础规则
-
4 连通:只有上下、左右这 4 个正交方向相邻,才算像素连通,斜对角挨着不算连通;
-
8 连通:上下左右 + 4 个斜对角,总共 8 个方向相邻都算连通,判定连通更宽松。
对照两张图解图 19、图 20
图 19(4 连通判定结果:2 块独立连通区)
右侧有一小块白色像素,它只和主色块呈斜对角相邻,4 连通不认斜向相邻,没法和左侧大片白色连通,于是被拆成 2 个独立 Blob(左侧大块、右上角小块分开计数),图里两个橙框就是两块独立区域。
图 20(8 连通判定结果:整块 1 个连通区)
右上角小块和主色块斜向相邻,8 连通把斜向视作连通条件,零散小块并入主体,所有白色像素合并成一整块 Blob,只生成 1 个连通区域,整体被同一个框圈住。
单阈值
通过单阈值算法进行图像二值化,需设置低阈值。该算法适用于对算法效率要求较高或需对较大检测目标进行二值化的场景。该算法二值化处理速度快,但存在空间量化误差,相对精度较低。
不同极性设置下,二值化效果有所差异。极性用于指定在二值化之前,灰度图中前景的灰度是否亮于背景。
-
极性设置为暗于背景时,灰度值小于低阈值的像素点被分割为前景,其余像素点为背景。
-
极性设置为亮于背景时,灰度值大于或等于低阈值的像素点被分割为前景,其余像素点为背景。

单阈值 + 亮于背景 + 低阈值的运算逻辑
图像像素灰度取值范围常规是0(纯黑)~255(纯白):
-
极性设「亮于背景」时,像素灰度 > 低阈值 200 → 判定为前景(划痕 Blob,绿色标记保留);
-
像素灰度 ≤200 → 判定为背景(黑色区域直接忽略); 图里背景灰度远低于 200、划痕亮条灰度高于 200,所以划痕全部被提取、黑背景完全过滤。