Halcon表面划伤检测实例
- 格式:docx
- 大小:678.33 KB
- 文档页数:10
halcon边缘检测例子Halcon是一款功能强大的机器视觉库,其边缘检测功能可以帮助我们在图像中找出物体的边缘,从而实现目标检测和分割。
下面将以Halcon边缘检测例子为题,列举一些常用的边缘检测方法和技巧。
一、Sobel算子边缘检测Sobel算子是一种常用的边缘检测算法,它通过计算图像的一阶导数来寻找边缘。
Halcon中可以使用函数SobelA来实现Sobel算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
二、Canny算子边缘检测Canny算子是一种经典的边缘检测算法,它结合了高斯滤波、梯度计算和非最大值抑制等步骤,可以得到更准确的边缘检测结果。
Halcon中可以使用函数EdgesSubPix来实现Canny算子的边缘检测,可以设置不同的参数来调整检测结果的质量和灵敏度。
三、Laplacian算子边缘检测Laplacian算子是一种基于二阶导数的边缘检测算法,它可以检测出图像中的高频变化,从而找到边缘。
Halcon中可以使用函数Laplace来实现Laplacian算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
四、Roberts算子边缘检测Roberts算子是一种简单但有效的边缘检测算法,它通过计算图像中像素点的灰度差来判断是否存在边缘。
Halcon中可以使用函数RobertsA来实现Roberts算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
五、Prewitt算子边缘检测Prewitt算子是一种基于一阶导数的边缘检测算法,它通过计算图像中像素点的灰度变化来寻找边缘。
Halcon中可以使用函数PrewittA来实现Prewitt算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
六、Scharr算子边缘检测Scharr算子是一种改进的Sobel算子,它可以更好地抵抗噪声干扰,提供更准确的边缘检测结果。
Halcon中可以使用函数ScharrA来实现Scharr算子的边缘检测,可以设置不同的参数来调整检测结果的灵敏度。
halcon目标检测案例Halcon是一款强大的机器视觉软件,拥有丰富的图像处理和分析功能。
其中,目标检测是Halcon的重要功能之一,能够帮助用户实现对图像中目标的自动检测和定位。
下面列举了十个关于Halcon目标检测的案例,以展示其在实际应用中的优势和灵活性。
1. 工业品质检测:在工业生产线上,Halcon可以通过目标检测技术实现对产品外观缺陷的检测,如表面瑕疵、颜色偏差等。
通过训练算法,Halcon能够快速准确地检测出产品中的异常情况,提高生产效率和产品质量。
2. 药品包装检测:在药品生产过程中,Halcon可以应用于药品包装的检测和识别。
通过目标检测算法,Halcon可以检测药品包装盒上的标签和二维码等信息,确保药品的包装符合规定标准,从而保证药品的质量和安全性。
3. 路标识别:在智能交通系统中,Halcon可以应用于路标的识别和检测。
通过训练模型,Halcon能够准确地识别出道路上的各种标识,如交通信号灯、限速标志等,为智能驾驶系统提供准确的环境感知能力。
4. 农作物病害检测:在农业领域,Halcon可以应用于农作物病害的检测和识别。
通过图像处理和机器学习算法,Halcon能够自动识别出农作物叶片上的病害,提前预警农民并采取相应的措施,保证农作物的健康生长。
5. 人脸识别:在安防领域,Halcon可以应用于人脸识别系统的开发。
通过目标检测和特征提取算法,Halcon能够对图像中的人脸进行准确的识别,实现对人员身份的自动判断,提高安全性和便利性。
6. 垃圾分类:在环境保护领域,Halcon可以应用于垃圾分类系统的开发。
通过目标检测和图像识别算法,Halcon能够自动识别垃圾中的有害物质,并将其分离出来,实现自动化的垃圾分类,提高垃圾处理的效率和准确性。
7. 医学影像分析:在医疗领域,Halcon可以应用于医学影像的分析和识别。
通过目标检测和图像分割算法,Halcon能够自动识别医学影像中的病变区域,并提供准确的测量和分析结果,帮助医生进行疾病的诊断和治疗。
Halcon 表面纹理检测案例* This program demonstrates how to detect small texture* defects on the surface of plastic items by using the fast* fourier transform (FFT).* 检测塑料物品表面的小纹理缺陷* First, we construct a suitable filter using Gaussian* filters.创立一个滤波器* Then, the images and the filter are convolved* by using fast fourier transforms.* 图像经过傅里叶变换后,滤波,再经过反变换* Finally, the defects* are detected in the filtered images by using* morphology operators.* 通过形态学检测出缺陷* Initializationsdev_update_off ()dev_close_window ()read_image (Image, 'plastics/plastics_01')get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowHandle) set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_set_draw ('margin')dev_set_line_width (3)dev_set_color ('red')** Optimize the fft speed for the specific image size* 根据具体的图像尺寸优化傅里叶变换的速度(有此函数)optimize_rft_speed (Width, Height, 'standard')** Construct a suitable filter by combining two gaussian* filtersSigma1 := 10.0Sigma2 := 3.0gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height)gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height)sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)** Process the images iterativelyNumImages := 11for Index := 1 to NumImages by 1** Read an image and convert it to gray valuesread_image (Image, 'plastics/plastics_'+Index$'02')rgb1_to_gray (Image, Image)* RGB图-> gray图* Perform the convolution in the frequency domain* 频域图像处理三步,第二步将频域图像和高斯滤波器做卷积rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)convol_fft (ImageFFT, Filter, ImageConvol)rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)** Process the filtered imagegray_range_rect (ImageFiltered, ImageResult, 10, 10)*做一个矩形模板,模板处理图像10*10模板min_max_gray (ImageResult, ImageResult, 0, Min, Max, Range)threshold (ImageResult, RegionDynThresh, max([5.55,Max*0.8]), 255)connection (RegionDynThresh, ConnectedRegions)select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4, 99999)union1 (SelectedRegions, RegionUnion)closing_circle (RegionUnion, RegionClosing, 10)connection (RegionClosing, ConnectedRegions1)select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 10, 99999)area_center (SelectedRegions1, Area, Row, Column)* Display the resultsdev_display (Image)Number := |Area|if (Number)gen_circle_contour_xld (ContCircle, Row, Column, gen_tuple_const(Number, 30), gen_tuple_const(Number, 0), gen_tuple_const(Number, rad(360)), 'positive', 1)ResultMessage := ['Not OK', Number + ' defect(s) found']Color := ['red','black']dev_display (ContCircle)elseResultMessage := 'OK'Color := 'forest green'endifdisp_message (WindowHandle, ResultMessage, 'window', 12, 12, Color, 'true') if (Index#NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endifendfor* this example shows how to detect mura defects* in blurred images 模糊图像中检测污斑* LCD中的污斑缺陷检测dev_close_window ()dev_update_off ()Path := 'lcd/mura_defects_blur_'**定义一个字符串常量,此常量接上字符串索引构成文件名称read_image (Image, Path+'01')get_image_size (Image, Width, Height)dev_open_window_fit_size (0, 0, Width, Height, 640, 480, WindowHandle)set_display_font (WindowHandle, 14, 'courier', 'true', 'false')dev_set_draw ('margin')dev_set_line_width (3)dev_set_color ('red')ScaleFactor := 0.4for f := 1 to 3 by 1read_image (Image, Path+f$'.2i')decompose3 (Image, R, G, B)* correct side illuminationrft_generic (B, ImageFFT, 'to_freq', 'none', 'complex', Width)gen_gauss_filter (ImageGauss, 100, 100, 0, 'n', 'rft', Width, Height)convol_fft (ImageFFT, ImageGauss, ImageConvol)rft_generic (ImageConvol, ImageFFT1, 'from_freq', 'none', 'byte', Width)**傅里叶变换,滤波,反变换sub_image (B, ImageFFT1, ImageSub, 2, 100)**图像相减* perform the actual inspectionzoom_image_factor (ImageSub, ImageZoomed, ScaleFactor, ScaleFactor, 'constant')*avoid border effects when using lines_gauss()*避免边界干扰get_domain (ImageZoomed, Domain)erosion_rectangle1 (Domain, RegionErosion, 7, 7)**腐蚀掉边缘,消除边界干扰,缩小ROIreduce_domain (ImageZoomed, RegionErosion, ImageReduced)**缩小ROIlines_gauss (ImageReduced, Lines, 5, 0.02, 0.3, 'dark', 'true', 'gaussian', 'true')**找线hom_mat2d_identity (HomMat2DIdentity)hom_mat2d_scale_local (HomMat2DIdentity, 1/ScaleFactor, 1/ScaleFactor, HomMat2DScale)affine_trans_contour_xld (Lines, Defects, HomMat2DScale)*dev_display (Image)dev_display (Defects)if (f < 3)disp_continue_message (WindowHandle, 'black', 'true')stop ()endifendfor。
Halcon表面划伤检测实例*关闭活动图形窗口dev_close_window ()* 在程序执行中指定输出行为为off。
dev_update_window ('off')* ***** step: acquire image 步骤:获取图像* ****读入文件名为'surface_scratch' 的图像到Imageread_image (Image, 'surface_scratch')get_image_size (Image, Width, Height)*打开一个和Image宽高比一致的图像窗口dev_open_window_fit_image (Image, 0, 0, Width, Width, WindowID) *设置窗口字体大小为12,字体类型为Courier,粗体不倾斜字体。
set_display_font (WindowID, 12, 'Courier', 'true', 'false')*设置填充模式为'margin'dev_set_draw ('margin')*定义输出轮廓线宽为4dev_set_line_width (4)*显示Image到窗口dev_display (Image)*WindowID窗口使用黑色字体在一个方框内显示按"F5"继续运行字体,并注册F5消息处理disp_continue_message (WindowID, 'black', 'true')stop ()* ***** step: segment image 步骤:图像分割* ***** -> using a local threshold 使用局部阈值* 对Image进行7*7均值滤波mean_image (Image, ImageMean, 7, 7)********************************************************************* *得到的图像为:****用均值滤波图像作为二值化阈值图像,返回小于灰度值小于该点阈值-5的图像。
一、概述随着科技的不断发展,工业生产中对产品质量的要求也越来越高。
而玻璃制品作为一种常见而重要的工业产品,在制造过程中需要进行外观检测以确保产品质量。
而halcon作为一种常用的工业视觉处理软件,其在玻璃外观检测中的常用算法备受关注。
本文将对halcon玻璃外观检测中的常用算法进行介绍与分析。
二、灰度变换灰度变换是halcon玻璃外观检测中常用的一种算法。
该算法通过改变图像的亮度、对比度等参数来提取目标物体的特征,从而实现对玻璃外观的检测和分析。
通过对图像进行灰度变换,可以增强图像的对比度和清晰度,使得玻璃表面的瑕疵等问题更容易被检测出来。
三、边缘检测在halcon玻璃外观检测中,边缘检测也是一种常用的算法。
通过对图像进行边缘检测,可以提取出玻璃表面的边缘信息,从而实现对各种缺陷和瑕疵的检测。
边缘检测可以有效地识别出玻璃表面的不平整、划痕等问题,为后续的检测和分析提供了重要的依据。
四、形态学处理形态学处理是halcon玻璃外观检测中的另一种常用算法。
通过对玻璃图像进行膨胀、腐蚀、开运算、闭运算等形态学处理,可以对玻璃表面的各种缺陷进行更加精确和全面的检测。
形态学处理能够有效地分离出玻璃的各个部分,识别出各种不规则的形状和缺陷,为后续的分析和判断提供了重要的依据。
五、模板匹配在halcon玻璃外观检测中,模板匹配也是一种常用的算法。
通过建立所需检测的模板,并将其与待检测图像进行匹配,可以实现对玻璃表面的各种缺陷和瑕疵的快速检测和识别。
模板匹配能够有效地识别出玻璃表面的各种特定形状和图案,对生产中的问题进行及时排查和处理提供了重要的帮助。
六、光学字符识别光学字符识别是halcon玻璃外观检测中的另一种常用算法。
通过对玻璃图像中的字符和标识进行提取和识别,可以实现对产品标识的检测和溯源。
光学字符识别能够有效地识别出玻璃表面的各种标识和文字信息,帮助企业实现对产品的快速分类和管理,提高生产效率和产品质量。
halcon标定例子Halcon标定是一种用于机器视觉系统中相机和图像采集设备的校准方法。
通过标定,可以获得相机的内部参数和外部参数,从而提高图像处理和计算机视觉系统的精度和稳定性。
下面是十个关于Halcon标定的例子:1. Halcon标定的基本原理Halcon标定是通过采集一系列已知位置和姿态的标定板图像,从而计算出相机的内部参数和外部参数。
这些参数可以用于图像校正、三维重建等应用。
2. Halcon标定的步骤Halcon标定的主要步骤包括:选择标定板、采集标定图像、提取标定板角点、计算相机参数、优化标定结果等。
3. Halcon标定的精度评估Halcon标定的精度可以通过重投影误差来评估,即将标定板上的角点投影到图像上,然后计算投影点与实际角点之间的距离。
4. Halcon标定的误差来源Halcon标定的误差来源主要包括相机畸变、标定板姿态误差、标定板角点检测误差等。
这些误差会影响标定结果的精度。
5. Halcon标定的应用场景Halcon标定广泛应用于机器视觉系统中的目标检测、定位、测量等任务。
通过标定,可以提高系统的测量精度和稳定性。
6. Halcon标定的优化方法Halcon标定可以通过优化算法来提高标定结果的精度。
常用的优化方法包括非线性最小二乘法、Bundle Adjustment等。
7. Halcon标定的注意事项在进行Halcon标定时,需要注意选择合适的标定板、保证标定板的平整度、正确设置相机参数等。
8. Halcon标定的挑战和解决方案Halcon标定在实际应用中可能面临光照变化、相机运动等挑战。
针对这些问题,可以采用多视角标定、动态标定等方法来解决。
9. Halcon标定的未来发展趋势随着机器视觉技术的不断发展,Halcon标定也在不断演进。
未来的发展趋势包括更精确的标定方法、更高效的标定算法等。
10. Halcon标定的局限性虽然Halcon标定可以提高机器视觉系统的精度和稳定性,但仍然存在一些局限性,如对标定板的要求较高、对标定图像的要求较严格等。
第39卷第2期2021年3月佛山科学技术学院学报(自然科学版)Journal of Foshan University(Natural Sciences Edition)Vol.39No.2Mar.2021文章编号:1008-0171(2021)02-0028-05基于Halcon的圆形陶瓷片表面缺陷检测方法贺潇苏彩红仔,詹宁宙2,林军帆-梁智宇1(1.佛山科学技术学院机电工程与自动化学院,广东佛山528000;2.佛山精视自动化科技有限公司,广东佛山528000)摘要:针对圆形陶瓷片的产品特性以及厂家检测的需要,设计了一种基于Halcon平台的表面缺陷分区检测算法。
通过前期预处理中的灰度化、图像增强处理以及ROI的选取后,再针对不同缺陷分别采用阈值分割、极坐标转换及边缘提取等方法获取产品缺陷区域并进行检测。
实验结果证明本检测算法具有较高的准确性,并能较好地满足实际检测要求。
关键词:缺陷检测;Halcon;阈值分割;边缘提取中图分类号:TP391.41;TQ174文献标志码:A圆形陶瓷片在生产过程中,由于生产工艺和生产环境的影响,会出现一定比例的缺陷产品。
如果不能及时筛选出来,对于产品后续的使用会存在一定的安全隐患。
目前针对圆形陶瓷片的缺陷筛选主要是人工目检,而人工目检存在检测效率低、人工成本高等缺点。
近年来,随着图像处理技术和机器视觉技术的不断发展,出现了越来越多的机器视觉检测来代替人工目检的情况。
Halcon是由德国MVTec公司研发的机器视觉图像处理软件,提供了全面的图像处理函数库。
本文基于Halcon算法平台,主要研究了圆形陶瓷片表面的气泡、斑点、粉尘和炸裂等缺陷的图像处理算法。
1缺陷分类及检测流程圆形陶瓷片在生产线上通过面阵CCD进行图像采集,在Halcon软件上进行处理、分析和检测[1]o 圆形陶瓷片的表面缺陷主要包括气泡、斑点、粉尘和炸裂4种,缺陷特点及分类如表1所示。
表1缺陷分类及特点缺陷类型缺陷出现位置缺陷特点气泡外环白色缺损,区域图像灰度比周围背景图像大10以上斑点大内环黑色缺损,区域图像灰度比周围背景图像小15以上粉尘大内环边缘黑色缺陷,区域内连续多个面积大于10的黑色缺陷炸裂内孔边缘白色缺损,内孔边缘出现的裂缝,区域裂缝长度大于5圆形陶瓷片缺陷检测流程如图1所示,检测步骤主要包括:1)利用图像灰度化和增强技术,将原始图片进行预处理;2)利用阈值分割的方法提取图片中各类缺陷对应的感兴趣区域ROI(Region of收稿日期:2020-06-10基金项目:广东省普通高校科研资助项目(2019KZDZX1034)作者简介:贺潇(1996-),男,湖南南县人,佛山科学技术学院硕士研究生。
第37卷第1期湖南理工学院学报(自然科学版)V ol. 37 No. 1 2024年3月 Journal of Hunan Institute of Science and Technology (Natural Sciences) Mar. 2024基于Halcon的手机背板表面缺陷快速检测方法朱志鹏, 陈腾飞, 廖杜杰, 张国云, 赵林(三维重建与智能应用技术湖南省工程研究中心, 湖南岳阳 414006;湖南理工学院信息科学与工程学院, 湖南岳阳 414006)摘要:针对人工检测手机背板表面缺陷效率低、成本高等问题, 提出一种基于Halcon的手机背板表面缺陷检测方法. 该方法可快速定位并校正光照不均、位置偏差等成像不一的背板图像, 同时运用二进制大型对象分析、形态学处理和模板匹配等算法实现对手机背板表面缺陷图像的检测与分类. 针对logo区域和非logo区域, 该检测系统采用不同的策略来检测缺陷. 缺陷分类环节利用Halcon中的分类工具, 结合事先定义的特征集合, 根据其形状、大小和颜色等特征进行分类, 以便后续的品质监控和反馈. 一方面对120张缺陷图片进行检测, 检出113张缺陷图片, 单张图片平均耗时约500 ms, 检出率达94%以上; 另一方面对800张同样条件下的无缺陷图片进行测试, 检出25张误判的图片, 即误判率约3%. 实验表明, 该方法具有较高的准确性和实用性, 相较于传统的人工检测, 可大幅度提升生产效率和检测精度, 有效控制企业人力成本. 该方法已在工业生产线实际应用.关键词:Halcon; 缺陷检测; 手机背板; 图像处理中图分类号: TP391 文章编号: 1672-5298(2024)01-0020-07Surface Defect Detection Rapid Method ofMobile Phone Backplane Based on Halcon ZHU Zhipeng, CHEN Tengfei, LIAO Dujie, ZHANG Guoyun, ZHAO Lin (Hunan Engineering Research Center of 3D Reconstruction and Intelligent Application Technology, Yueyang 414006, China;School of Information Science and Engineering, Hunan Institute of Science and Technology, Yueyang 414006, China) Abstract:Aiming at the problems of low efficiency and high cost of manually detecting defects on the surface of mobile phone backplane, a method based on Halcon was proposed for surface defects detection of mobile phone backplane. The method can quickly locate and correct the backplane images with different images such as uneven illumination and position deviation. At the same time, the algorithm of binary large object analysis, morphological processing and template matching was used to detect and classify the surface defect images of mobile phone backplane. For logo area and non-logo area, the detection system adopts different strategies to detect defects. The defect classification process utilizes the classification tool in Halcon, combined with the predefined feature set, according to its shape, size, color and other characteristics, so as to facilitate subsequent quality monitoring and feedback. On one hand, through the detection experiment of 120 defect diagrams, 113 defect diagrams were detected, and the average time of a single image was about 500 ms, and the detection rate was more than 94%. On the other hand, 800 non-defect pictures were tested under the same conditions, and 25 misjudgments were detected, that is, the misjudgment rate was 3%. The experiment shows that the method has high accuracy and practicability, compared with the traditional manual detection, can greatly improve the production efficiency and detection accuracy, and effectively control the labor cost of enterprises. At the same time, the method has been applied in industrial production lines.Key words: Halcon; defect detection; mobile phone backplane; image processing0 引言随着移动通信技术的快速发展, 智能手机已成为现代社会不可或缺的一部分. 而手机背板作为智能手机的外壳, 不仅承担着保护内部电路和组件的功能, 同时也具备提升美观和质感的重要作用. 然而, 在手机背板的制造过程中, 由于材料、工艺等方面的不确定因素, 不可避免地会产生各种各样的缺陷[1]. 准确、高效地检测手机背板的缺陷, 对于保证产品质量、提高生产效率以及增强品牌竞争力具有重要意义. 而Halcon作为一种先进的机器视觉软件系统, 它提供了大量的视觉处理函数, 支持各种图像采集、处理、收稿日期: 2023-02-15基金项目: 湖南省研究生科研创新项目(CX20221237, CX20221212)作者简介: 朱志鹏, 男, 硕士研究生. 主要研究方向: 机器视觉、人工智能通信作者: 赵林, 男, 博士, 副教授. 主要研究方向: 图像信息处理、智能控制第1期 朱志鹏, 等: 基于Halcon 的手机背板表面缺陷快速检测方法 21 分析、识别和检测任务[2].传统的手机背板表面缺陷检测方法主要是人工检测, 该方法耗时耗力且效率低下, 无法满足大规模生产的质量控制需求[3]. 此外, 人工检测容易受到操作人员主观判断的影响, 导致检测结果的不一致性和可重复性差[4]. 随着计算机视觉技术、图像处理技术以及人工智能的发展, 自动化视觉检测系统能够提供一个高效、准确并且客观的解决方案, 以确保产品质量和提升生产效率[5].本文提出一种基于Halcon 的手机背板表面缺陷检测方法. 通过结合高分辨率成像技术和先进的图像处理算法, 尝试解决实际工业生产线上的手机背板缺陷快速检测问题. 先提出包含图像预处理、特征提取、模板匹配以及缺陷分类等多个步骤的综合解决方案[6], 然后在此基础上开展一系列实验, 验证所提方法的有效性和实用性, 并探讨在实际应用时的潜在挑战及可能的解决策略.1 手机背板表面缺陷检测系统总体方案根据手机背板表面缺陷快速检测的需求构建一个综合性系统, 一方面包括硬件部分对图像的获取和采集, 另一方面包括软件部分对图像的处理以及对缺陷的识别和分类. 旨在通过优化硬件配置和软件算法, 实现自动化的高性能缺陷检测, 从而为手机背板检测提供一个可靠的方案.1.1 机械硬件结构手机背板缺陷检测机械结构包括提取背板的吸盘及气缸、工业相机、光源、工控机、图像采集模块、图像处理模块等. 当机台启动时, 载有手机背板的托盘被送入机台指定位置, 吸盘提取背板并放置在相机下方进行图像采集, 通过相机、光源、传感器等图像采集单元将图像信号传输到工控机上[7]. 工控机上的图像处理模块利用Halcon 中的图像处理算法对背板进行图像定位、图像增强等预处理操作, 然后根据预定的手机背板表面缺陷检测算法判断待检品是否存在缺陷, 最后由运控模块将检测出的OK 、NG 产品分类放置. 手机背板缺陷检测系统如图1所示.1.2 图像处理软件结合VS 2022集成开发环境, 使用图像处理开源库研发, 实现基于Halcon 的手机背板表面缺陷快速检测. Halcon 的开发接口支持几乎所有的工业相机和框架抓取卡, 功能覆盖数学运算、图像滤波、形态学分析、图像校正、颜色处理和几何及模式识别等计算任务. 手机背板的表面缺陷主要包括脏污、划伤、腐蚀点、水渍等. 手机背板的常见表面缺陷如图2所示.图像采集模块载有手机背板的托盘图1 手机背板缺陷检测系统 图2 手机背板常见表面缺陷手机背板缺陷检测流程如图3所示. 检测的主要步骤包括: (1)图像采集模块采集图像传输至图像处理模块; (2)运用图像定位、通道转换、图像增强和感兴趣区域(Region Of Interest, ROI)提取进行图像预处理;(3)将手机背板图像非logo 区域和logo 区域分开; (4)对不同区域进行检测, 并根据各缺陷特征将识别的缺22 湖南理工学院学报(自然科学版) 第37卷进而提取到特定特征点(角点、边缘、logo等)的位置信息, 后续在对齐的图像上应用相应的缺陷检测算法. 图4为部分特征点提取结果展示.2.2 通道转化现场缺陷检测机台CCD相机采集的图像为4096像素×4096像素RGB三通道的彩色图像. 为简化后续图像处理与分析, 并降低计算复杂度, 可将三通道图像转换成单通道图像, 对于特定问题只提取某个通道作为灰度图像. 该环节应尽可能防止手机背板部分颜色信息的丢失, 故按照Halcon中decompose3算子将输入的RGB图像分解为红、绿、蓝三个通道的图像. 图5为通道转换后的相应效果图. 在RGB图像中, 每个像素的颜色由红、绿、蓝三个通道的亮度值确定, 其亮度值范围为0~255, 0最暗, 255最亮. decompose3算子将每个像素的RGB值分别存储在三个通道图像中, 将RGB图像转换为三个独立的8位灰度图像, 每个灰度图像对应一个通道. 分解后的图像, 可根据后期实际项目情况达到特定的图像效果和任务需求.输入:Image输出:Image1输出:Image2输出:Image3图4 图像特征点区域及其坐标信息图5 通道转换效果2.3 图像增强实际检测流水线中采集的手机背板图像数量众多, 且图像易受外界传感器、环境或者传输影响, 带来图3 手机背板缺陷检测流程第1期 朱志鹏, 等: 基于Halcon 的手机背板表面缺陷快速检测方法 23 的变化具有不确定性, 因此成像的统一性是缺陷检测中不可忽视的重要问题之一. 图像增强的作用是改善图像的质量、对比度、清晰度或者细节等以突出图像中的一些重要的缺陷特征, 同时弱化非必要的图像信息. 以腐蚀点缺陷特征为例, 使用scale_image 算子调整图像的对比度, 调整前后对比如图6所示.scale_image 算子根据设定的目标值对输入的手机背板图像像素值进行线性映射, 即scale max min255factor ,value value =- (1) scale min offset factor value ,=-⨯ (2)new scale pixel factor pixel offset.=⨯+ (3)其中max value 、min value 分别是输入图像像素值的最大值和最小值, scale factor 、offset 分别是像素映射的斜率和偏移, new pixel 是线性映射后的新像素值. 通过增强图像, 可以使采集到的图像更易于观察、分析和处理, 以适应不同的要求和环境, 进而提高缺陷检测算法的准确性和效果.2.4 感兴趣区域提取受工业环境复杂性等影响, 实际采集到的手机背板图像有较多非必要背景, 还需将背板图像中的相机孔、logo 区域分离开, 即对感兴趣区域(ROI)进行提取, 以便进行后续的缺陷检测工作. 图7为手机背板部分点位的感兴趣区域提取过程效果图.通过ROI 提取可以减少图像处理的时间和计算量, 进而提高检测算法的效率和性能. 本文数据集单张图片规格为4096像素×4096像素, 占据内存48 MB, 每一组图像(包含可采集到手机背板全部信息的8个点位图像)占内存384 MB, 且每次至少检测100组数据, 因此缺陷检测的数据集属于大型数据集.调整前调整后原图分离背景分离相机孔、logo 图6 scale_image 算子调整图像对比度效果图7 ROI 提取效果 3 手机背板表面缺陷检测智能手机在设计的时候会划分不同的功能和装饰区域, 其中之一是logo 区域. 这个区域通常包括特定图案及文字, 往往会采用不同于手机背板其余区域的材料和颜色等. 由于这种划分, 手机背板的缺陷检测需要能区分这两个区域, 即logo 区域和非logo 区域. 因此, 需根据每个区域的特定性质实施不同的检测策略.3.1 logo 区域检测手机背板上的logo 和小字体通常设计为尺寸、形状固定, 具有高度标准化[8], 模板匹配算法能够轻松识别出其在不同图片中的相似区域. 这种一致性降低了算法出错的可能性, 提高了检测的准确性. 由于logo 等字体区域包含大量可区分的特征信息, 即使存在噪声或图像质量的轻微变化, 模板匹配技术通常也能可靠执行. 本文采用最小二乘法模板匹配遍历待检测图像的每个像素点, 将待检测图像与模板图像进行匹配, 通过对比计算两者对应位置的匹配得分来确定它们之间的差异, 匹配效果如图8所示. 设置一24 湖南理工学院学报(自然科学版) 第37卷个分数阈值, 当匹配得分超过设定的阈值时, 可以认为该位置与模板匹配良好, 从而达到对logo文字区域的检测效果.模板图待检测图8 手机背板logo区域检测3.2 非logo区域检测(1) 缺陷初筛对于非logo区域缺陷的检测, 先读取图像并将其转换为灰度图像, 水平和垂直方向遍历ROI图像的每一个像素点, 根据需求筛选出特定的灰度值. 记录所选灰度值像素点的位置信息, 并绘制出对应的散点图, 通过观察散点图来初步识别缺陷. 如果特定灰度值与缺陷特性相关, 那么这些灰度值的像素点的聚集可能就暗示着潜在缺陷的存在. 同理, 特定灰度值可换成其他缺陷相关的特征信息. 图9为背板ROI图像缺陷初筛灰度散点分布.图9 背板ROI图像缺陷初筛灰度散点分布(2) 缺陷检测初筛之后, 基于Halcon机器视觉软件平台, 对经过预处理的手机背板表面缺陷图像进行二进制大型对象(Blob)分析处理来细化缺陷检测, 提取出脏污、划伤、亮斑、腐蚀点等缺陷特征, 然后使用select_shape( )算子基于面积、周长、圆度、长短轴比、平均灰度等特征将识别出的非缺陷特征部分排除掉. 再采用area_center( )和intensity( )算子计算剩余区域的中心位置、面积和灰度值平均强度、标准偏差, 其中intensity( )算子可分析区域的纹理和一致性. 这种综合利用面积、位置和灰度信息的方法极大提高了对真第1期 朱志鹏, 等: 基于Halcon 的手机背板表面缺陷快速检测方法 25 实缺陷的识别能力. 最后, 通过对剩余候选区域的细致分析, 能够进一步筛选出真正的缺陷, 降低漏检率和误判率, 提高手机背板表面缺陷检测的精确度和可靠性.(3) 缺陷分类 接下来对手机背板表面几种常见工艺缺陷进行特征分析, 目的是选出有效特征进行提取. 这些特征包括几何特征、形状特征、颜色特征等. 为将缺陷及其相关特征进行可视化和量化, 对各类缺陷图像及其特征进行统计, 结果见表1. 每种缺陷类型都会与相应的示例检出图像配对展示, 紧接其后是各自的特征统计数据. 这些数据的统计不仅有助于揭示缺陷的本质和特征, 更重要的是, 为后续的分类算法设计提供了依据. 表1中单位pixel 表示像素.表1 各类缺陷图像及其特征统计特征类别缺陷名称脏污碰伤水渍斑点划伤异色 擦伤面积/pixel 1869 11006 151868 960 9550 365705 11671周长/pixel 213.581 407.061 3248.130126.627 1691.8505014.200 1500.480宽/pixel 40 112 950 36 88 1297 398高/pixel 87 136 274 34 736 560 68最大直径/pixel 90.758 135.724 953.546 38.079 739.899 1401.700 400.522圆度 0.273 0.735 0.200 0.805 0.022 0.154 0.086矩形度 0.820 0.780 0.670 0.851 0.762 0.630 0.610紧密度 1.942 1.198 5.528 1.329 23.851 5.470 15.351凸形 0.929 1.00 0.816 0.944 0.756 0.936 0.669长短轴比 3.664 1.308 3.616 1.042 40.718 2.984 7.723蓬松度 1.035 1.010 1.224 1.017 1.040 1.174 1.237平均灰度67.153 151.121 155.856 39.413 92.731 100.489 121.421 4 实验结果与分析出率是互补的, 其计算公式为FN MR 1DR.TP FN==-+ (5) 误判率是系统错误标记为缺陷的非缺陷项目与所有实际非缺陷项目的比例, 反映系统产生误报的频率, 其计算公式为FP FAR .FP TN=+ (6)26 湖南理工学院学报(自然科学版) 第37卷其中TP为真阳性(正确识别为缺陷的数量), TN为真阴性(正确识别为非缺陷的数量), FP为假阳性(错误识别为缺陷的数量), FN为假阴性(错误识别为非缺陷的数量, 即漏检数).按照本文的缺陷检测方案, 实际的检测结果见表2. 可以看出, 基于Halcon的自动化图像处理系统在扫描手机背板表面缺陷方面表现优异. 该系统的检出率达到94.167%, 这意味着其能够检测到几乎所有缺陷, 确保产品质量的高标准. 同时, 误判率仅为3.125%, 表示它几乎不会将良好的产品错误判定为次品, 这对于减少浪费和维护生产流程的连续性至关重要. 此外, 该系统的图像处理速度达到平均500 ms/张, 这样的速度可以轻松适应快节奏的工业生产线, 确保不会成为生产效率的瓶颈. 与传统的人工检测方式相比, 这种自动化缺陷检测方案显著提升了检测的速度, 同时也提高了结果的一致性和可重复性, 减少了因人为判断不一致引起的误差.表2 检测结果统计有缺陷样本数/个检出数/个检出率/% 平均耗时/ms 120 113 94.167 524.1无缺陷样本数/个检出数/个误判率/% 平均耗时/ms 800 25 3.125 512.75 结束语本文基于Halcon图像处理软件, 提出了一种先进的手机背板表面缺陷检测方法. 该方法利用Halcon 强大的图像分析库, 结合自定义的算法, 实现了对手机背板上各类缺陷的快速准确检测. 通过采集高分辨率图像, 并运用Halcon中的图像预处理、特征提取、分类器训练和模板匹配等多种算子, 本文方案能够有效区分正常品和次品, 提高了生产线的自动化水平和质量控制精度. 实验结果表明, 缺陷检出率达到了94%以上的高水平, 同时将误判率控制在3%左右, 证明了该方法的可靠性和实用性. 此外, 每张图像的平均处理时间约为500 ms, 使得本方法能够适应高速的工业生产环境. 另外, 本文提出的快速检测方法已应用于成都、杭州等地企业的实际项目.本文虽然给出基于工业背景下的手机背板表面缺陷快速检测方法, 但该方法在一些极端工作条件下仍存在一些局限性, 例如在背景复杂或光照条件极端变化时, 检测性能可能受到影响. 因此, 未来的工作将致力于提高算法的鲁棒性, 以确保算法在不同的生产环境下都能保持高效稳定的检测性能. 此外, 随着人工智能和机器学习技术的快速发展, 如何进一步融入深度学习等创新方法以提升检测准确度和速度, 也将是我们下一步研究的重点.参考文献:[1]陶显, 侯伟, 徐德. 基于深度学习的表面缺陷检测方法综述[J]. 自动化学报, 2021, 47(5): 1017−1034.[2]郭绍陶, 苑玮琦. 基于双高斯纹理滤波模板和极值点韦伯对比度的圆柱锂电池凹坑缺陷检测[J]. 电子学报, 2022, 50(3): 637−642.[3]高春艳, 秦燊, 李满宏, 等. 改进YOLOv7算法的钢材表面缺陷检测研究[J/OL]. 计算机工程与应用, 1−12[2024-01-22].[4]CHAO S M, TSAI D M, LI W C, et al. A generalized anisotropic diffusion for defect detection in low-contrast surfaces[C]// Proceedings of the 20thInternational Conference on Pattern Recognition, IEEE, 2010: 4408−4411.[5]曾毅, 郭龙源, 罗百通. 基于BP神经网络和均值差分的TFT-LCD MURA缺陷检测方法[J]. 湖南理工学院学报(自然科学版), 2017, 30(1):32−38.[6]任鹏霏, 周传德, 胡帅, 等. HALCON图像处理在纸杯缺陷检测中的应用[J]. 自动化应用, 2019 (6): 98−99+103.[7]贺振东, 王耀南, 毛建旭, 等. 基于反向P-M扩散的钢轨表面缺陷视觉检测[J]. 自动化学报, 2014, 40(8): 1667−1679.[8]汪成龙, 黄余凤, 陈铭泉, 等. 基于Halcon的字符缺陷检测系统[J]. 制造业自动化, 2018, 40(9): 38−41.。
Halcon表面划伤检测实例
*关闭活动图形窗口
dev_close_window ()
* 在程序执行中指定输出行为为off。
dev_update_window ('off')
* ****
* step: acquire image 步骤:获取图像
* ****读入文件名为'surface_scratch' 的图像到Image
read_image (Image, 'surface_scratch')
get_image_size (Image, Width, Height)
*打开一个和Image宽高比一致的图像窗口
dev_open_window_fit_image (Image, 0, 0, Width, Width, WindowID) *设置窗口字体大小为12,字体类型为Courier,粗体不倾斜字体。
set_display_font (WindowID, 12, 'Courier', 'true', 'false')
*设置填充模式为'margin'
dev_set_draw ('margin')
*定义输出轮廓线宽为4
dev_set_line_width (4)
*显示Image到窗口
dev_display (Image)
*WindowID窗口使用黑色字体在一个方框内显示按"F5"继续运行字体,并注册F5消息处理disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: segment image 步骤:图像分割
* ****
* -> using a local threshold 使用局部阈值
* 对Image进行7*7均值滤波
mean_image (Image, ImageMean, 7, 7)
********************************************************************* *得到的图像为:
*
*
*
*用均值滤波图像作为二值化阈值图像,返回小于灰度值小于该点阈值-5的图像。
dyn_threshold (Image, ImageMean, DarkPixels, 5, 'dark')
***************************************
****得到的区域为:
* -> extract connected components 提取连通分量
*由分割出来的DarkPixels获得连通区域到ConnectedRegions *******得到的连通区域为:
connection (DarkPixels, ConnectedRegions)
*设置混合输出颜色为12种
dev_set_colored (12)
*显示当前图形窗口中的图像对象。
dev_display (ConnectedRegions)
*
disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* step: process regions 处理区域
* ****
* -> select large regions 选取大区域
*从ConnectedRegions中得到面积大于10小于1000的区域到SelectedRegions select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10, 1000)
*设置当期图像窗口的图像对象为Image
dev_display (Image)
* 设置当期图像窗口的图像对象为SelectedRegions
dev_display (SelectedRegions)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* -> visualize fractioned scratch 可视化划分划痕
*打开窗口设置局部
open_zoom_window (0, round(Width/2), 2, 303, 137, 496, 3, WindowHandleZoom) *设置输出颜色为蓝色
dev_set_color ('blue')
dev_display (Image)
dev_display (SelectedRegions)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* -> merge fractioned scratches via morphology 通过形态学合并划痕
*合并SelectedRegions的并集到RegionUnion
union1 (SelectedRegions, RegionUnion)
*以3.5作为圆形区域扩张的半径,对RegionUnion扩张得到RegionDilation dilation_circle (RegionUnion, RegionDilation, 3.5)
dev_display (Image)
dev_display (RegionDilation)
disp_continue_message (WindowID, 'black', 'true')
stop ()
*由RegionDilation获取骨架给Skeleton
skeleton (RegionDilation, Skeleton)
*通过8邻接或四邻接方法将骨架链接后传给Errors connection (Skeleton, Errors)
dev_set_colored (12)
dev_display (Image)
dev_display (Errors)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* -> distinguish small and large scratches 区分大小划痕*关闭窗口
close_zoom_window (WindowHandleZoom, Width, Height) *选择面积大于50小于1000的区域到Scratches
select_shape (Errors, Scratches, 'area', 'and', 50, 10000) *选择面积大于1小于50的区域到Dots
select_shape (Errors, Dots, 'area', 'and', 1, 50)
dev_display (Image) dev_set_color ('red')
dev_display (Scratches) dev_set_color ('blue') dev_display (Dots)。