无需下载直接进入的网站的代码,购物网站黑白,wordpress商品缩略图 不,工商企业信息查询网站缺陷检测技术详解#xff08;含 Halcon 示例#xff09;一、缺陷检测概述缺陷检测是通过图像分析技术识别产品表面或内部的异常区域#xff08;如划痕、凹陷、污渍、裂纹等#xff09;#xff0c;广泛应用于工业制造#xff08;电子、汽车、食品包装等#xff09;、医疗…缺陷检测技术详解含 Halcon 示例一、缺陷检测概述缺陷检测是通过图像分析技术识别产品表面或内部的异常区域如划痕、凹陷、污渍、裂纹等广泛应用于工业制造电子、汽车、食品包装等、医疗影像等领域。核心目标是快速、准确地区分合格产品与存在缺陷的产品并定位缺陷位置、判断缺陷类型。缺陷检测的一般流程图像采集工业相机、显微镜等预处理去噪、增强、校正感兴趣区域ROI提取缺陷检测与分割缺陷特征分析大小、形状、灰度等判定与分类合格 / 不合格缺陷类型。二、缺陷检测的关键技术与方法1. 基于灰度差异的检测适用于缺陷与背景灰度值差异明显的场景如白色表面的黑点、金属表面的划痕。原理通过灰度阈值、灰度差分析或滤波提取灰度异常区域。2. 基于形态学的检测适用于缺陷表现为形状异常的场景如孔洞、凸起、边缘缺损。原理利用形态学操作腐蚀、膨胀、开运算、闭运算突出缺陷的形状特征。3. 基于模板匹配的检测适用于有标准模板的场景如零件缺失、装配错误。原理将待检测图像与标准模板对比通过差异区域定位缺陷。4. 基于边缘与轮廓的检测适用于缺陷导致边缘不连续或轮廓异常的场景如裂纹、边缘毛刺。原理提取图像边缘通过边缘完整性或轮廓特征如曲率、长度识别缺陷。5. 基于频域的检测适用于周期性纹理背景中的缺陷如布料、电路板的纹理缺陷。原理通过傅里叶变换过滤背景纹理突出缺陷的高频分量。三、Halcon 缺陷检测核心算子算子类别关键算子功能描述预处理mean_image、gauss_filter平滑去噪emphasize、scale_image增强对比度、灰度缩放阈值分割threshold、dyn_threshold固定阈值、动态阈值分割适应光照变化形态学操作erosion、dilation腐蚀去除小区域、膨胀连接断裂区域opening、closing开运算去噪点、闭运算填孔洞差异分析sub_image计算两幅图像的灰度差模板对比边缘检测edges_sub_pix、canny_edge提取亚像素级边缘、Canny 边缘检测区域特征分析select_shape、area_center根据面积、形状等筛选缺陷区域频域处理fft_image、rft2傅里叶变换、快速傅里叶变换四、Halcon 缺陷检测实例实例 1金属表面划痕检测基于灰度差异与形态学场景检测金属表面的深色划痕划痕灰度低于正常区域。dev_update_off () * 1. 读取图像 read_image (MetalImage, metal_surface.png) dev_close_window () get_image_size (MetalImage, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) dev_display (MetalImage) disp_continue_message (WindowHandle, black, true) stop () * 2. 预处理去噪与增强 mean_image (MetalImage, MeanImage, 5, 5) // 均值滤波去噪 emphasize (MeanImage, EmphasizeImage, 10, 10, 1) // 增强边缘对比度 * 3. 阈值分割提取低灰度区域划痕 threshold (EmphasizeImage, DarkRegions, 0, 80) // 假设划痕灰度≤80 * 4. 形态学处理去除噪声点保留连续划痕 opening_circle (DarkRegions, OpenRegions, 3) // 开运算半径3去小噪点 closing_circle (OpenRegions, DefectRegions, 2) // 闭运算连接断裂划痕 * 5. 筛选缺陷排除过小区域误检 select_shape (DefectRegions, Scratches, area, and, 50, 10000) // 面积≥50像素 * 6. 显示结果 dev_display (MetalImage) dev_set_color (red) dev_display (Scratches) disp_message (WindowHandle, 检测到 |Scratches| 处划痕, window, 10, 10, red, true) stop ()实例 2瓶盖缺陷检测基于模板匹配场景通过标准瓶盖模板与待检测瓶盖的差异定位缺陷如缺口、污渍。dev_update_off () * 1. 读取标准模板与待检测图像 read_image (TemplateImage, cap_template.png) // 无缺陷的标准瓶盖 read_image (TestImage, cap_test.png) // 待检测瓶盖 dev_close_window () get_image_size (TemplateImage, Width, Height) dev_open_window (0, 0, Width*2, Height, black, WindowHandle) * 2. 预处理转为灰度图并归一化 rgb1_to_gray (TemplateImage, TemplateGray) rgb1_to_gray (TestImage, TestGray) scale_image (TemplateGray, TemplateScaled, 1, 0) scale_image (TestGray, TestScaled, 1, 0) * 3. 模板匹配定位瓶盖位置确保两幅图像对齐 create_ncc_model (TemplateGray, auto, 0, 0, auto, use_polarity, ModelID) find_ncc_model (TestGray, ModelID, 0, 0, 0.7, 1, 0.5, true, 0, Row, Col, Angle, Score) clear_ncc_model (ModelID) * 4. 图像对齐将待检测图像与模板对齐消除位置偏差 vector_angle_to_rigid (0, 0, 0, Row, Col, Angle, HomMat2D) affine_trans_image (TestScaled, AlignedTest, HomMat2D, constant, false) * 5. 差异分析计算模板与待检测图像的灰度差 sub_image (TemplateScaled, AlignedTest, DiffImage, 1, 128) // 灰度差图像 threshold (DiffImage, DiffRegions, 30, 255) // 提取差异明显的区域阈值30 * 6. 筛选缺陷排除微小差异噪声 opening_rectangle1 (DiffRegions, DefectRegions, 3, 3) select_shape (DefectRegions, Defects, area, and, 100, 10000) * 7. 显示结果 dev_display (TemplateScaled) dev_set_window (WindowHandle) dev_display (AlignedTest) dev_set_color (red) dev_display (Defects) disp_message (WindowHandle, 模板, window, 10, 10, green, true) disp_message (WindowHandle, 待检测缺陷 |Defects| , window, 10, Width10, red, true) stop ()实例 3电路板焊点缺陷检测基于边缘分析场景通过焊点边缘的完整性判断是否存在虚焊边缘不连续或漏焊。dev_update_off () * 1. 读取图像 read_image (PCBImage, pcb_solder.png) dev_close_window () get_image_size (PCBImage, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) * 2. 预处理增强对比度提取焊点区域 threshold (PCBImage, SolderRegions, 150, 255) // 焊点为高灰度区域 connection (SolderRegions, SingleSolders) // 分割单个焊点 * 3. 边缘提取获取焊点边缘 edges_sub_pix (PCBImage, Edges, canny, 1, 20, 40) // Canny边缘检测亚像素级 segment_contours_xld (Edges, ContoursSplit, lines_circles, 5, 4, 2) // 分割轮廓为线和圆 * 4. 分析边缘筛选边缘不完整的焊点缺陷 gen_empty_obj (DefectSolders) for i : 0 to |SingleSolders| - 1 by 1 select_obj (SingleSolders, Solder, i1) * 提取焊点内的边缘 reduce_domain (PCBImage, Solder, SolderROI) edges_sub_pix (SolderROI, SolderEdges, canny, 1, 20, 40) * 计算边缘长度正常焊点边缘应连续且长度达标 length_xld (SolderEdges, Length) sum_tuple (Length, TotalLength) * 若边缘总长度低于阈值判定为缺陷 if (TotalLength 200) // 阈值根据正常焊点设定 concat_obj (DefectSolders, Solder, DefectSolders) endif endfor * 5. 显示结果 dev_display (PCBImage) dev_set_color (green) dev_display (SingleSolders) dev_set_color (red) dev_display (DefectSolders) disp_message (WindowHandle, 缺陷焊点 |DefectSolders|, window, 10, 10, red, true) stop ()五、缺陷检测的优化技巧图像采集优化确保光照均匀避免反光、阴影选择合适分辨率缺陷尺寸≥2 像素预处理关键噪声处理根据噪声类型选择滤波高斯滤波去高斯噪声中值滤波去椒盐噪声对比度增强对低对比度图像用histogram_equalization或local_std_dev增强阈值自适应对光照不均的场景用dyn_threshold动态阈值替代固定阈值缺陷筛选通过select_shape筛选面积、圆形度、长宽比等特征排除误检如灰尘模板更新对于批量生产中的细微差异定期更新模板以适应产品一致性变化。六、总结缺陷检测的核心是突出缺陷与正常区域的差异根据缺陷类型选择合适的检测方法灰度差异、形态学、模板匹配等。Halcon 提供了丰富的算子支持从预处理到缺陷分析的全流程通过实例中的模板可快速搭建检测系统并结合优化技巧提升检测精度与鲁棒性。