基于多尺度小波变换与形态学的工业表面微小缺陷自动检测系统
项目简介
本项目是一个基于MATLAB开发的高精度工业视觉检测系统原型。旨在解决工业生产中金属、织物或电子元件表面微小缺陷(如划痕、油污、裂纹等)的自动化识别问题。
针对工业场景中常见的光照不均、噪声干扰及背景纹理复杂等挑战,本项目采用了一套完整的图像处理算法流程。通过同态滤波校正光照,利用离散小波变换(DWT)的多分辨率特性抑制背景并增强缺陷细节,结合数学形态学与Otsu阈值法实现精准分割,最后通过几何与纹理特征分析实现对缺陷类型的自动分类。
特别说明:为了便于演示与运行,本项目内置了合成图像生成模块,可在无需加载外部图片文件的情况下,自动生成包含光照梯度、噪声、划痕及斑点缺陷的模拟工业表面图像进行全流程演示。
功能特性
- 自动化图像生成:内置合成算法,动态生成带有复杂背景纹理、非均匀光照及随机缺陷的测试图像。
- 抗干扰预处理:集成同态滤波(频域处理)与自适应中值滤波,有效消除光照梯度影响并滤除椒盐噪声。
- 小波特征增强:利用多尺度小波变换(db4基函数,3层分解),通过抑制低频近似分量,显著增强微弱缺陷的高频边缘信息。
- 高精度分割:结合顶帽变换(Top-hat)、Otsu自适应阈值分割及形态学开闭运算,精确提取缺陷区域并去除伪影。
- 多维特征提取:自动计算缺陷区域的几何特征(面积、周长、偏心率、包围盒)及纹理特征(GLCM能量)。
- 智能分类模拟:基于偏心率等特征的逻辑判断,模拟SVM/KNN分类器行为,能够区分线性缺陷(划痕)与斑点缺陷(油污)。
- 可视化与报告:提供包含原始图、预处理图、增强图、分割掩膜及最终标记结果的多视图可视化界面,并在控制台自动生成模拟的Excel质检报告。
系统要求
- MATLAB R2018b 或更高版本
- Image Processing Toolbox(图像处理工具箱)
- Wavelet Toolbox(小波工具箱)
* *注:若未安装小波工具箱,代码内置了回退机制,将使用拉普拉斯高通滤波作为替代方案。*
使用方法
- 启动 MATLAB。
- 将当前工作目录切换到包含脚本的文件夹。
- 在命令行窗口输入
main 并回车。 - 系统将自动执行以下流程:
* 生成模拟图像。
* 依次进行预处理、增强、分割与识别。
* 弹出可视化窗口显示各阶段主要结果。
* 在命令行窗口输出包含缺陷详情的模拟报表。
详细实现逻辑与算法原理解析
本项目的主程序严格按照工业视觉处理流水线设计,以下是对 main.m 中实际代码实现的详细剖析:
1. 系统初始化与图像获取
系统首先配置全局参数,包括小波基函数(db4)、分解层数(3层)、同态滤波截止频率及最小面积阈值。随后调用内部函数
create_synthetic_image 生成模拟数据。
- 模拟逻辑:构建正弦背景纹理,叠加线性光照梯度,并随机生成“线段型”(模拟划痕)和“高斯斑点型”(模拟油污)暗斑,最后添加高斯噪声。
2. 图像预处理(阶段 I)
旨在提升图像质量,为后续处理做准备。
- 同态滤波:将图像转换至对数域,通过FFT进入频率域。利用构造的高通滤波器(增强高频反射分量,抑制低频光照分量)校正光照不均,最后通过指数变换还原。
- 中值滤波:使用
medfilt2 对同态滤波后的图像进行平滑处理,有效去除由成像传感器引起的椒盐噪声,同时保留边缘信息。
3. 多尺度小波特征增强(阶段 II)
这是本项目的核心算法环节,用于突出背景中的微小缺陷。
- 小波分解:使用
wavedec2 对去噪后的图像进行3级小波分解。 - 频带抑制:代码通过将小波分解结构中的第一层近似系数(Approximation Coefficients,代表低频背景信息)强制置零,实现背景纹理的抑制。
- 图像重构:利用修改后的系数表进行重构(
waverec2),输出的图像保留了高频细节(缺陷边缘),大幅提高了信噪比。
4. 形态学与分割(阶段 III)
将增强后的图像转化为二值掩膜。
- 顶帽变换:先对增强图像求反(因为缺陷通常较暗),然后利用
imtophat 进一步校正局部背景,提取出比周围背景更亮的区域(即缺陷)。 - Otsu阈值分割:使用
graythresh 计算全局最佳阈值,对顶帽变换结果进行二值化。 - 形态学后处理:
* 闭运算(Closing):连接断裂的缺陷边缘。
* 开运算(Opening):去除细小的噪点。
* 面积过滤(Area Opening):使用
bwareaopen 剔除小于设定阈值(50像素)的微小伪影,得到最终的二值掩膜
bw_final。
5. 特征提取与模式识别(阶段 IV)
对分割出的连通域进行量化分析与分类。
- 几何特征:利用
regionprops 提取每个连通域的面积、周长、偏心率(Eccentricity)及外接矩形(BoundingBox)。 - 纹理特征:截取原图中对应Bounding Box区域的ROI,计算灰度共生矩阵(GLCM),并提取“能量(Energy)”作为纹理特征指标。
- 分类逻辑:代码实现了一个基于规则的分类器来模拟SVM/KNN的效果。
*
判定规则:依据偏心率特征。若偏心率 > 0.85,判定为细长的“划痕(Scratch)”,标记为红色;否则判定为“油污/斑点(Spot)”,标记为黄色。
*
置信度模拟:基于缺陷面积计算一个简单的置信度分数。
6. 结果可视化与报告
- 多视图展示:自定义绘图函数将原始图、预处理图、小波增强图、分割掩膜及最终检测图(带有分类标签和置信度的包围框)绘制在同一画布上,便于算法效果评估。
- 数据报表:格式化输出模拟的Excel表格文本,包含每个检测到的缺陷ID、类型、面积像素值、偏心率数值及置信度,直观展示检测统计数据。
关键函数说明
- create_synthetic_image: 模拟生成器。不依赖外部文件,通过数学公式构建含缺陷的灰度图。
- homomorphic_filter: 实现了完整的频率域同态滤波算法,包含对数变换、FFT、高通滤波函数构造、IFFT及指数变换。
- wavelet_enhancement: 封装了小波变换逻辑。包含异常处理机制,若检测到缺失小波工具箱,会自动降级使用拉普拉斯算子进行边缘增强。
- visualize_results: 负责所有图像结果的排版与绘制,包括在原图上叠加矩形框与文本标签。
- generate_excel_report_simulation: 模拟报表生成器,在命令行打印结构化的检测结果数据。