一、项目概述
T恤印花缺陷检测是通过机器视觉技术自动识别印花过程中出现的颜色偏差、图案模糊、漏印、重影、斑点、边缘不清晰等质量问题。本项目基于Halcon机器视觉平台,构建一套完整的自动化缺陷检测系统。
二、工作方案
2.1 需求分析与缺陷定义
第一步:明确检测目标
与生产方共同定义各类缺陷的标准,包括:
| 缺陷类型 | 描述 | 检测方法建议 |
|---|---|---|
| 颜色偏差 | 印花颜色与标准色样不符 | 色彩空间转换+颜色比较 |
| 图案模糊/边缘不清 | 印花边缘不清晰、有毛边 | 形状匹配+边缘检测 |
| 漏印 | 印花区域缺失 | 模板匹配+差分 |
| 重影/套色不准 | 图案错位、重影 | 形状匹配+位置偏差计算 |
| 斑点/脏污 | 印花区域有异物或污点 | Blob分析+纹理分析 |
| 图案变形 | 印花形状发生扭曲 | 形状匹配+仿射变换对比 |
第二步:制定检测标准
-
确定缺陷的量化指标(如面积阈值、灰度差异阈值、位置偏差容限等)
-
明确合格品与不合格品的判定规则
2.2 硬件系统搭建
一个完整的工业视觉系统由图像采集单元、图像传输单元、图像处理单元、决策输出单元和人机交互单元组成。
(1)相机选型
-
推荐:工业面阵相机(如海康威视、大恒图像等品牌)
-
分辨率:根据检测精度需求,建议500万像素以上
-
接口:GigE或USB3.0
(2)镜头选型
-
根据视场大小和工作距离选择合适焦距的工业镜头
-
建议使用定焦镜头,保证图像一致性
(3)光源方案(关键)
光源是影响检测效果的核心因素:
-
推荐:环形LED光源或条形LED光源
-
颜色:根据印花颜色选择互补色光源以增强对比度
-
安装方式:采用45°或90°打光方式,减少反光干扰
(4)机械平台
-
固定相机和光源的支架
-
传送带或载物台(在线检测场景)
2.3 软件环境配置
| 组件 | 推荐方案 |
|---|---|
| 操作系统 | Windows 10/11 64位 |
| Halcon版本 | Halcon 22.11 或更高版本(建议24.11) |
| 开发语言 | Halcon HDevelop(原型开发)+ C#/.NET(工程化部署) |
| 相机SDK | 相机品牌对应SDK(如海康MVS) |
环境搭建步骤:
-
安装Halcon并配置许可证
-
安装相机SDK并验证相机连接
-
配置开发环境(Visual Studio + Halcon .NET接口)
2.4 算法开发方案
T恤印花缺陷检测的核心算法流程如下:
text
图像采集 → 预处理 → 模板匹配定位 → 仿射变换校正 →
缺陷检测(差分/Blob分析/频域分析)→ 缺陷判定 → 结果输出
方案一:基于模板匹配+差分的传统方法(推荐作为首选方案)
适用于图案固定、位置一致的T恤印花检测。
-
图像采集:获取待检测T恤图像
-
图像预处理:去噪、灰度化、对比度增强
-
模板匹配定位:使用形状匹配(Shape-Based Matching)精确定位印花位置
-
仿射变换校正:将当前图像校正到与模板图像一致的位置和角度
-
差分检测:将校正后的图像与标准模板图像做差,提取差异区域
-
Blob分析:对差异区域进行连通域分析,根据面积、形状等特征判定是否为缺陷
-
结果输出:标记缺陷位置,输出判定结果
方案二:基于频域分析的纹理检测方法
适用于印花区域有复杂纹理、缺陷隐藏在纹理中的场景。
-
将图像转换到频域(FFT)
-
设计滤波器抑制正常纹理频率成分
-
逆FFT转回空间域,缺陷被增强凸显
-
阈值分割提取缺陷区域
Halcon官方例程 detect_mura_defects_texture.hdev 可作为参考。
方案三:基于深度学习的检测方法(进阶方案)
当传统算法难以处理复杂缺陷时,可考虑Halcon深度学习模块:
-
使用Halcon DLTool进行数据集标注和模型训练
-
支持图像分类、目标检测、语义分割等任务
-
Halcon 25.11已支持Continual Learning持续学习功能
2.5 系统集成与部署
-
界面开发:使用C# + WinForms/WPF开发上位机界面
-
相机集成:通过相机SDK采集图像,传递给Halcon处理
-
PLC通信:通过串口或以太网与PLC通信,发送检测结果
-
数据记录:记录检测日志和统计数据
三、工作计划(8周)
| 阶段 | 周次 | 工作内容 | 交付物 |
|---|---|---|---|
| 需求分析与方案设计 | 第1周 | ①与生产方确认缺陷类型和标准 ②确定硬件选型方案 ③完成软件架构设计 | 《需求规格说明书》《系统设计文档》 |
| 硬件搭建与环境配置 | 第2周 | ①采购并安装相机、镜头、光源 ②搭建图像采集平台 ③安装Halcon及开发环境 | 硬件平台搭建完成、环境验证通过 |
| 图像采集与样本制作 | 第3周 | ①采集良品和缺陷样本图像(各50-100张) ②制作标准模板图像 ③建立样本库 | 样本图像库、标准模板 |
| 算法开发与调优 | 第4-5周 | ①开发图像预处理模块 ②开发模板匹配定位模块 ③开发缺陷检测算法(差分+Blob) ④参数调优 | 可运行的Halcon检测程序 |
| 系统集成 | 第6周 | ①开发上位机界面 ②集成相机采集 ③集成PLC通信 | 集成测试通过 |
| 测试与优化 | 第7周 | ①用样本库进行批量测试 ②统计检测率(准确率、误检率) ③针对问题优化算法参数 | 《测试报告》 |
| 现场部署与验收 | 第8周 | ①现场安装调试 ②操作培训 ③项目验收 | 系统正式上线 |
四、Demo示例
以下是一个基于Halcon的T恤印花缺陷检测Demo程序(HDevelop脚本格式):
hdev
* ============================================================
* T恤印花缺陷检测 Demo
* 功能:基于模板匹配 + 差分法检测印花缺陷
* ============================================================
dev_update_off ()
dev_close_window ()
* -------------------- 1. 读取模板图像和待检测图像 --------------------
* 模板图像(良品标准图)
read_image (TemplateImage, 'tshirt_template.jpg')
* 待检测图像
read_image (TestImage, 'tshirt_test.jpg')
get_image_size (TemplateImage, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
* -------------------- 2. 图像预处理 --------------------
* 彩色转灰度
rgb1_to_gray (TemplateImage, TemplateGray)
rgb1_to_gray (TestImage, TestGray)
* 增强对比度(可选)
emphasize (TemplateGray, TemplateEnhanced, 7, 7, 1)
emphasize (TestGray, TestEnhanced, 7, 7, 1)
* -------------------- 3. 创建形状模板(在模板图像上) --------------------
* 绘制ROI区域(框选印花区域)
* 实际使用中可用draw_rectangle1交互绘制,此处用固定坐标
gen_rectangle1 (TemplateROI, 100, 150, 500, 650)
reduce_domain (TemplateEnhanced, TemplateROI, TemplateReduced)
* 创建形状模板
* 参数说明:金字塔层数auto、起始角度-0.39rad、角度范围0.79rad
create_shape_model (TemplateReduced, 'auto', -0.39, 0.79, 'auto', 'auto', \
'use_polarity', 'auto', 'auto', ModelID)
* 获取模板轮廓用于可视化
get_shape_model_contours (ModelContours, ModelID, 1)
* -------------------- 4. 模板匹配定位(在待检测图像上) --------------------
find_shape_model (TestEnhanced, ModelID, -0.39, 0.79, 0.5, 1, 0.5, \
'least_squares', 0, 0.9, Row, Column, Angle, Score)
if (|Score| > 0)
* -------------------- 5. 仿射变换校正 --------------------
* 获取模板中心
area_center (TemplateROI, Area, CenterRow, CenterCol)
* 生成仿射变换矩阵(将当前图像对齐到模板位置)
vector_angle_to_rigid (Row, Column, Angle, CenterRow, CenterCol, 0, HomMat2D)
* 对待检测图像进行仿射变换,使其与模板图像对齐
affine_trans_image (TestEnhanced, TestAligned, HomMat2D, 'constant', 'false')
* -------------------- 6. 差分检测(核心步骤) --------------------
* 将模板图像与对齐后的待测图像做差
sub_image (TemplateEnhanced, TestAligned, DiffImage, 1, 128)
* 阈值分割提取差异区域(缺陷候选区域)
threshold (DiffImage, DefectRegions, 30, 255)
* 形态学处理:去除噪声小区域
opening_circle (DefectRegions, DefectRegionsOpened, 2.5)
connection (DefectRegionsOpened, ConnectedRegions)
* 根据面积筛选真正的缺陷(去除误检小点)
select_shape (ConnectedRegions, SelectedDefects, 'area', 'and', 30, 999999)
* -------------------- 7. 结果显示 --------------------
dev_display (TestImage)
dev_set_color ('red')
dev_set_line_width (2)
if (|SelectedDefects| > 0)
* 显示缺陷区域
dev_display (SelectedDefects)
* 统计缺陷数量
count_obj (SelectedDefects, DefectCount)
disp_message (WindowHandle, '发现 ' + DefectCount + ' 处缺陷', 'window', 12, 12, 'red', 'true')
* 输出缺陷面积信息
area_center (SelectedDefects, DefectAreas, DefectRows, DefectCols)
for i := 1 to DefectCount by 1
disp_message (WindowHandle, '缺陷' + i + ' 面积: ' + DefectAreas[i-1], \
'window', 12 + i*30, 12, 'red', 'true')
endfor
else
disp_message (WindowHandle, '检测通过:无缺陷', 'window', 12, 12, 'green', 'true')
endif
* 显示匹配轮廓
dev_set_color ('green')
dev_display (ModelContours)
else
* 模板匹配失败
disp_message (WindowHandle, '警告:未找到印花图案', 'window', 12, 12, 'yellow', 'true')
endif
* -------------------- 8. 清理资源 --------------------
clear_shape_model (ModelID)
Demo代码说明
| 步骤 | 算子/功能 | 说明 |
|---|---|---|
| 图像读取 | read_image |
读取模板和待测图像 |
| 灰度转换 | rgb1_to_gray |
彩色图转灰度图 |
| 模板创建 | create_shape_model |
创建形状模板用于定位 |
| 模板匹配 | find_shape_model |
在待测图中查找印花位置 |
| 仿射变换 | vector_angle_to_rigid + affine_trans_image |
将图像对齐到模板坐标系 |
| 差分检测 | sub_image |
计算模板与待测图的差异 |
| 缺陷提取 | threshold + connection + select_shape |
提取并筛选缺陷区域 |
运行效果预期
-
良品:差分图像无明显区域,输出"检测通过"
-
缺陷品:差分图像出现异常区域,红色标记缺陷位置,输出缺陷数量和面积信息
五、注意事项与建议
5.1 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 误检率高 | 光照不稳定或图像噪声大 | 优化光源方案、增加预处理滤波 |
| 漏检 | 缺陷特征不明显 | 调整阈值参数、尝试频域分析方法 |
| 定位失败 | 印花位置偏差过大 | 扩大模板匹配的角度和缩放范围 |
| 检测速度慢 | 模板匹配范围过大 | 缩小搜索范围、降低金字塔层数 |
5.2 调优建议
-
光源调试是第一步:好的图像质量是检测成功的基础
-
阈值参数需根据实际图像调试:Demo中的参数(如阈值30、面积30)需要根据实际图像调整
-
复杂纹理场景考虑频域方法:对于有复杂纹理的T恤面料,频域滤波能有效抑制背景纹理
-
建立缺陷样本库:持续收集各类缺陷图像,用于算法验证和深度学习训练
-
考虑使用Halcon纹理检测模型 :Halcon提供了专门的纹理检测算子(
apply_texture_inspection_model),仅需少量参数即可实现对纹理表面的检测