基于机器视觉的工业表面缺陷自动检测系统
项目概述
本项目是一个基于MATLAB开发的工业视觉检测平台,旨在自动化识别与分类工业产品表面(如金属拉丝表面、织物等)的微小缺陷。系统集成了完整的图像处理流程,包括图像通过图形用户界面(GUI)进行交互,支持从原始图像采集到最终报表生成的全流程操作。该代码实现了一个轻量级的演示系统,不仅包含核心检测逻辑,还内置了模拟数据生成器和机器学习模型训练模块。
功能特性
- 交互式GUI界面:基于MATLAB App Designer框架构建的现代化用户界面,支持图像的多阶段可视化(原始/预处理/结果)。
- 自适应图像预处理:内置针对工业环境不均匀光照的光照补偿算法及增强纹理对比度的处理流程。
- 混合模式数据源:支持加载本地图片文件,同时内置了高性能的“模拟缺陷图像生成器”,可实时合成带有划痕、油污及裂纹的仿真工业图像。
- 智能缺陷识别:基于支持向量机(SVM)的多分类算法,结合形态学分割与纹理特征提取。
- 健壮的容错机制:系统自动检测是否安装统计与机器学习工具箱,若未安装则自动降级为基于规则的分类逻辑。
- 自动报表导出:支持将检测结果(类型、置信度、坐标、面积)导出为带有时间戳的CSV格式报表。
系统要求
- MATLAB R2018b 或更高版本(建议使用 R2020a+ 以获得更好的 App Designer 支持)。
- Image Processing Toolbox(必须):用于图像滤波、形态学操作、纹理分析等。
- Statistics and Machine Learning Toolbox(推荐):用于SVM模型的训练与预测;若未安装,系统将使用简易规则进行分类。
使用方法
- 启动系统:运行主脚本,系统会自动进行初始化,训练后台分类模型,并弹出主操作界面。
- 获取图像:点击“导入/生成 图像”按钮,可选择从本地文件夹加载图片,或直接让系统生成一张带有随机缺陷的模拟表面图像。
- 预处理:点击“图像预处理”按钮,系统将执行去噪、光照校正和对比度增强,并在中间窗口显示处理后的灰度图。
- 执行检测:点击“缺陷检测与识别”按钮,系统将自动分割疑似区域,进行特征分类,并在右侧窗口及下方表格中显示标注结果。
- 导出数据:点击“导出Excel报表”按钮,将当前的检测统计数据保存为CSV文件至当前目录。
核心算法与实现细节分析
本系统的核心逻辑完全包含在主程序文件中,主要算法模块实现如下:
1. 在线模型训练与初始化
系统启动时首先执行初始化函数。不同于加载预训练模型,不仅固定了随机种子以保证复现性,还通过代码生成了含有200个样本的模拟特征数据集。
- 特征空间:构建了6维特征向量,包含对比度、相关性、能量、均匀性(来自GLCM)以及偏心率、面积占比(来自几何形态)。
- 样本模拟:针对划痕(高偏心率)、油污(高均匀性、低偏心率)和裂纹(极高对比度)三种类别分别生成符合统计规律的随机特征数据。
- 分类器构建:使用多类错误校正输出代码(ECOC)模型拟合支持向量机(SVM),核函数选用高斯核。
2. 图像预处理流水线
为了应对工业场景中的常见干扰,预处理模块按顺序执行以下操作:
- 去噪:使用高斯滤波(Sigma=1.5)平滑图像,去除传感器噪声。
- 光照补偿:采用Top-hat(顶帽)变换提取亮细节,Bothat(底帽)变换提取暗细节,通过“原图 + 顶帽 - 底帽”的算法校正不均匀光照背景。
- 增强:使用限制对比度自适应直方图均衡化(CLAHE),显著增强表面微小缺陷的纹理对比度。
3. 自适应分割与ROI提取
- 阈值分割:使用自适应阈值算法(Adaptive Thresholding)生成二值掩膜,灵敏度设为0.45,专门设定针对暗色缺陷(ForegroundPolarity='dark')。
- 形态学优化:
*
去噪:使用面积开运算移除小于50像素的微小噪点。
*
闭运算:修复缺陷内部可能存在的断裂或孔洞。
- 连通域分析:提取二值连通域的边界框(BoundingBox)、面积、质心和偏心率,作为感兴趣区域(ROI)。
4. 特征工程与分类决策
对每一个提取出的ROI区域,系统提取其对应的增强后灰度子图,并计算特征向量:
- 纹理特征:计算灰度共生矩阵(GLCM),提取对比度(Contrast)、相关性(Correlation)、能量(Energy)和均匀性(Homogeneity)四个统计量。
- 几何特征:计算偏心率(反映形状细长程度)和面积占比(反映缺陷在包围盒内的填充度)。
- 识别逻辑:
* 优先将6维特征向量输入训练好的SVM模型进行预测,获取类别标签及置信度分数。
* 若未检测到SVM模型,则启用后备逻辑:依据偏心率判断“划痕”,依据能量值判断“油污”,其余归类为“裂纹”。
5. 仿真数据生成器
为了方便无样片时的演示,代码内置了一个复杂的图像合成函数:
- 背景合成:生成高斯噪声背景,并叠加周期性的垂直减法操作,模拟金属表面的拉丝纹理。
- 缺陷植入:
*
划痕:通过画线算法生成具有随机角度和长度的线条。
*
油污:生成圆形区域并降低亮度,通过边缘模糊模拟扩散效果。
*
裂纹:使用随机游走算法生成不规则的折线路径。
6. 数据管理与导出
系统使用全局结构体管理App状态数据。导出功能将内存中的检测结果表格转换为Table对象,并保存为UTF-8编码的CSV文件,文件名包含生成时间(如
DefectReport_20231027_103000.csv),方便追溯。