2. 常见缺陷类型:划痕、裂纹、脏污、凹坑、气泡、异物、变形、色差、毛刺、缺料
做工业视觉这几年,我接触过的缺陷种类少说也有几十种。但说实话,真正在产线上反复出现的,翻来覆去就是这十类。你想想看,不管是手机外壳、汽车零件还是食品包装,缺陷的物理本质其实就那么几种——要么是表面受损,要么是内部夹杂,要么是形状不对。
我个人习惯把缺陷分成三大类:表面缺陷、内部缺陷和形状缺陷。这样分类有个好处——你拿到一个项目,先判断缺陷属于哪一类,然后对应的检测思路基本就定了。下面我逐个拆解,每个类型我都会结合项目经验来讲。
核心观点:缺陷分类不是死记硬背,而是为了指导后续的检测算法选择和数据集构建策略。同一个物理缺陷,在不同材质、不同光照下表现完全不同,这才是真正的难点。
2.1 表面缺陷:划痕、裂纹、脏污、凹坑
表面缺陷是最常见的,也是工业视觉检测的基本盘。说白了,就是产品表面出现了不该有的东西,或者表面结构被破坏了。
2.1.1 划痕
划痕的本质是材料表面的连续性被破坏。我在项目中遇到过最头疼的案例——手机中框的细微划痕。那种划痕深度只有几微米,在正常光照下根本看不见,但一到特定角度就原形毕露。
划痕检测的关键点:
- 方向性:划痕通常有明确的方向,可以利用方向滤波增强特征
- 连续性:真正的划痕是连续的,而灰尘或纤维是离散的
- 深度差异:浅划痕和深划痕的成像特征完全不同
我的经验:划痕检测最怕的是纹理干扰。比如拉丝金属表面的划痕,你根本分不清哪条是缺陷、哪条是工艺纹理。我后来用了一个办法——多角度打光,划痕在不同角度下亮度变化比纹理剧烈得多。
2.1.2 裂纹
裂纹和划痕最大的区别在于:裂纹是从内部向外扩展的,而划痕是从外部向内侵入的。裂纹往往意味着结构强度问题,在质检中属于致命缺陷。
我记得有一次做陶瓷基板的裂纹检测,一开始用常规的阈值分割,效果很差。为什么?因为裂纹太细了,像素宽度只有1-2个像素,而且背景纹理复杂。后来改用局部梯度分析,效果才上来。
裂纹检测的难点:
- 宽度极细,容易在降噪过程中被抹掉
- 形态不规则,没有固定的形状模板
- 容易和材料本身的晶界、纹理混淆
2.1.3 脏污
脏污可能是最"烦人"的缺陷。为什么?因为它的形态、大小、位置、颜色完全随机。你今天训练集里全是油污,明天产线上来的是灰尘,后天又变成了指纹。
我曾经在一个食品包装项目上栽过跟头。一开始用颜色特征做脏污检测,效果很好。结果换了批次,包装纸的颜色稍微偏黄了一点,整个模型就崩了。从那以后,我养成了一个习惯——脏污检测一定要做光照归一化。
避坑指南:脏污数据集构建时,千万不要只收集"干净"的脏污样本。实际产线上的脏污往往伴随着其他干扰——比如油污可能沾着灰尘,指纹可能混着水渍。我建议在采集时故意制造一些"混合缺陷"样本。
2.1.4 凹坑
凹坑是表面局部凹陷,常见于冲压件、铸造件。它的成像特征很典型——边缘有阴影,中心区域亮度变化平缓。但问题在于,凹坑的深度、直径、边缘锐利度变化范围很大。
我个人习惯用光度立体法来做凹坑检测。通过多角度光源重建表面法向,凹坑区域的法向变化模式非常清晰。当然,这个方法对硬件要求高,产线上不一定能部署。
2.2 内部缺陷:气泡、异物
内部缺陷藏在材料里面,肉眼看不见,必须借助透射光或X光才能发现。这类缺陷的检测难度往往比表面缺陷高一个量级。
2.2.1 气泡
气泡在透明材料(玻璃、塑料)中非常常见。它的成像特征是:边缘有亮环(折射效应),中心区域亮度偏低。但气泡太小的时候,这个特征就不明显了。
我记得做手机玻璃盖板的气泡检测时,客户要求检出直径0.1mm以上的气泡。这个尺寸在500万像素相机下也就3-4个像素。常规的Blob分析根本不行。后来我用了相位对比成像,利用气泡的折射特性增强对比度,才勉强达到要求。
2.2.2 异物
异物就是材料里面混进了不该有的东西。比如塑料件里的金属屑、玻璃里的结石、食品里的杂质。异物的检测难点在于——你永远不知道它是什么、长什么样。
我曾经遇到过一个案例:锂电池隔膜里的金属异物。这种缺陷如果不检出,电池短路就是迟早的事。但金属异物在X光下的成像特征和气泡很像,都是暗斑。怎么区分?后来我发现,金属异物的边缘比气泡锐利得多,而且没有亮环。就靠这个差异,把误检率降了下来。
关键思路:内部缺陷检测,不要只看灰度值,要关注边缘特征和局部纹理变化。气泡、异物、裂纹在灰度上可能都是暗斑,但边缘的梯度分布完全不同。
2.3 形状缺陷:变形、色差、毛刺、缺料
形状缺陷关注的是产品整体的几何和外观属性。这类缺陷的检测往往需要参考标准件进行对比。
2.3.1 变形
变形是产品的整体形状偏离了设计规格。比如注塑件的翘曲、冲压件的扭曲。变形检测的核心是建立标准形状模型,然后计算实际产品与模型的偏差。
我做过一个汽车内饰件的变形检测项目。一开始用模板匹配,但变形是全局的,局部匹配根本不准。后来改用主动形状模型(ASM),把变形的模式建模成几个主成分,效果好了很多。
2.3.2 色差
色差是产品颜色偏离了标准色。听起来简单,但实际做起来坑很多。最大的坑是——光照变化。同一个产品,上午测和下午测,颜色值能差出好几个ΔE。
我的做法是:用标准色卡做实时校准。每次检测前,先拍一张标准色卡,计算出当前光照下的颜色校正矩阵,然后再测产品。这样能把光照波动的影响降到最低。
2.3.3 毛刺
毛刺是加工边缘残留的多余材料。常见于冲压、注塑、机加工等工艺。毛刺的检测难点在于——它和产品边缘连在一起,很难用简单的分割方法提取。
我建议用边缘轮廓分析。先提取产品的精确轮廓,然后计算轮廓的局部曲率。毛刺所在的位置,曲率会发生突变。这个方法比直接做形态学处理稳定得多。
2.3.4 缺料
缺料就是产品少了不该少的部分。比如注塑件的填充不足、铸件的缩孔。缺料检测的关键是知道"完整"的样子。
我习惯用差分检测:把待测图像和标准图像对齐,然后直接相减。但这里有个前提——对齐必须非常精确。哪怕偏差1个像素,差分结果里全是假阳性。所以我会先用亚像素配准做对齐,再做差分。
2.4 缺陷类型知识图谱
下面这张图总结了十类缺陷的分类体系和检测思路。我建议你把它当作一个快速参考——拿到新项目,先定位缺陷属于哪一类,然后从对应的检测思路里找方案。
2.5 缺陷类型与检测算法匹配
知道了缺陷长什么样,下一步就是选算法。下面这个表格是我多年项目经验的总结,你可以直接拿来当参考。
| 缺陷类型 | 推荐算法 | 适用场景 | 注意事项 |
|---|---|---|---|
| 划痕 | 方向滤波 + 线检测 | 金属、玻璃、塑料表面 | 避免与纹理方向混淆 |
| 裂纹 | 局部梯度分析 | 陶瓷、玻璃、涂层 | 降噪时保留细线特征 |
| 脏污 | 颜色分析 + 纹理特征 | 食品包装、电子元件 | 必须做光照归一化 |
| 凹坑 | 光度立体 / 深度估计 | 冲压件、铸造件 | 对硬件要求较高 |
| 气泡 | 相位对比 + Blob分析 | 透明材料 | 小气泡容易漏检 |
| 异物 | 边缘锐度 + 密度特征 | 食品、电池、塑料 | 需要区分气泡和金属 |
| 变形 | 主动形状模型 / 配准 | 注塑件、冲压件 | 需要建立标准模型 |
| 色差 | 颜色校正 + 色差公式 | 印刷、喷涂、纺织 | 光照波动是最大干扰 |
| 毛刺 | 边缘曲率分析 | 机加工、冲压 | 与产品边缘粘连 |
| 缺料 | 差分检测 + 亚像素配准 | 注塑、铸造 | 配准精度要求极高 |
一个小建议:刚开始做缺陷检测项目时,不要一上来就上深度学习。先试试传统算法——方向滤波、阈值分割、Blob分析。这些方法速度快、可解释性强,而且很多场景下效果已经够用了。深度学习不是万能的,尤其是在样本量不足的时候。