Halcon学习笔记之缺陷检测(二)教学教材

合集下载

[Halcon学习笔记]机器视觉缺陷检测常用方法对比总结

[Halcon学习笔记]机器视觉缺陷检测常用方法对比总结

1、介绍缺陷检测时机器视觉需求中最复杂难度较的一类需求。

究其原因,主要在发过程中首先要保证检测的稳定性和精度,又要实现缺陷检测的通用性,常见的缺陷:凹凸、污瑕疵、划痕、裂缝、伤痕、毛刺等等类型种类繁杂,缺陷检测不同于尺寸、、OCR识别等算法。

后者的应用场景比较单一,基本使用一些成熟的算法实现,最多增加一些定位、图像增强的算法,应用门槛相对较低,也比较容易成通用的产品或工具。

但缺陷检测主要针对工业场景,不同的行业的需求和重都有差别,这导致不同的行业所使用的缺陷算法迥然不同,这也注定了缺陷检测被工业场景非标定制所束缚。

随着缺陷检测要求的不断提高和技术的不断发展,机器学习和深度学习也成了缺陷领域一个不可或缺的技术难。

2、缺陷检测目前解决方案2.1 传统算法检测缺陷优:可根据需求和图像进行不同需求的发,可直观展示;缺:调试难度,图像变化后会导致检测算法不稳定进而需要反复调参,而且复杂缺陷误检的概率较,兼容性不好,很难成通用。

2.2 机器学习检测缺陷一般使用类似MLP的一些单层神经网络,对缺陷特征进行训练分类,该方法需要事先提取出缺陷部分,一般用来与传统分割法搭配使用,达到缺陷检测分类的。

2.3 深度学习检测缺陷优:通用性好,可以通过迭代训练模型不断提升某个产品的检测准确度。

缺:需要量的数据样本(缺陷样本),而且缺陷种类越多,特征性越模糊,检测精度要求越高,其需要的缺陷样本就越,而且深度学习中的缺陷样本需要人工去标注标签,样本越,手动标注的工作量也越,训练的周期也越长。

只适合产品产量且缺陷样本较多的案例。

2.4 深度学习检测缺陷(迁移学习方法)其操作方法如2.3,但同一行业或相似行业有量的缺陷样本库,如果深度训练网络具有泛化和迁移的特,可以在常规缺陷少的情况下,根据统一行业缺陷进行迁移学习训练,进而解决缺陷样本少的问题。

该方法感觉会成为后面工业领域检测瑕疵的一个趋势,但需要一些去收集各种行业的缺陷类型图片和训练的网络模型,并共享出来,然后后来者可以使用迁移学习的方法学习前人训练好的模型。

Halcon学习笔记之缺陷检测(二)教学教材

Halcon学习笔记之缺陷检测(二)教学教材

Halcon学习笔记之缺陷检测(二)例程:detect_indent_fft.hdev说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步:首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波);然后,将原图和构造的滤波器进行快速傅里叶变换;最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。

注:代码中绿色部分为个人理解和注释,其余为例程中原有代码*Initialization(初始化)dev_updata_off() //这一句包含如下三个算子://dev_updata_pc(‘off’) 关闭更新程序计数器//dev_updata_var(‘off’) 关闭更新变量窗口//dev_updata_window(‘off’) 关闭更新图像窗口(即通过命令来显示想要在图像窗口显示的图片)dev_close_window() //关闭活动的图像窗口read_image(Image,’plastics/plastics_01’) //载入图片//参数说明:为读入图片命名(Image)// 文件名(’plastics/plastics_01’)get_image_size(Image,Width,height) //获取图片的长宽;//参数说明:之前读入或生成的图片(Image)// 图片的宽(Width)// 图片的高(Height)dev_open_window(0,0,Width,Height,’Black’,WindowHandle) //打开一个新的图像窗口//参数说明:起始坐标(0,0)// 大小(Width,Height)// 背景颜色(’Black’)// 窗口句柄(WindowHandle)set_display_font (WindowHandle,14,’mono’,’ture’,’false’)//设置不依赖操作系统的字体//参数说明:窗口句柄(WindowHandle)// 字体大小(14)// 字体类型(’mono’)// 是否黑体(’ture’)// 是否倾斜(’false’)dev_set_draw(‘Margin’) //定义区域填充模式//参数说明:填充模式(’Margin’或者’Fill’)dev_set_line_width(3) //设置输出区域轮廓线的线宽//可以修改参数来看最后缺陷区域标示的区别dev_set_color(’red’) //设置一种或者多种输出颜色**Optimize the fft speed for the specific image size(根据指定图像大小进行fft速度最优化)optimize_rft_speed(Width,Height,’standard’) //对指定大小的图片的fft速度进行优化//参数说明:图片大小(Width,Height)// 优化模式(’standard’)**Construct a suitable filter by combining two Gaussian filters(结合两个高斯滤波器构造一*个合适的滤波器)Sigma1 := 10.0Sigma2 := 3.0 //定义两个常量gen_gauss_filter(GaussFilter1,Sigma1,Sigma1,0.0,’none’,’rft’,Width,Height)gen_gauss_filter(GaussFilter2,Sigma2,Sigma2,0.0,’none’,’rft’,Width,Height) //在频域生成两个高斯滤波器//参数说明:生成的高斯滤波器(GaussFilter)// 空域中高斯在主方向上的标准差(Sigma)// 空域中高斯在正交于主方向的方向上的标准差(Sigma)// 滤波器主方向的角度(0.0)// 滤波器的规范(’none’)// 直流项在频域的位置(’rft’)// 图片的大小(Width,Height)sub_image(GaussFilter1,GaussFilter2,Filter,1,0) //两图片相减(灰度)//sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )//g' := (g1- g2) * Mult + Add//以上为函数原型以及运算公式**Process the images iteratively(对图像进行迭代运算)NumImages := 11For Index := 1 to NumImages by 1 //for循环从1到NumImages,步长为1**Read an image and convert it to gray valuesread_image(Image,’plastics/plastics_’+Index$’02’)rgb1_to_gray(Image,Image) //将原图转化为灰度图,第一个参数为原图*Perform the convolution in the frequency domainrft_generic(Image,ImageFFT,’to_freq’,’none’,’complex’,Width)//对计算一幅图片实部进行快速傅里叶变换 //参数说明:输入的图片(Image) // 傅里叶变换后输出的图片(ImageFFT) // 变换方向(’to_freq’或’from_freq’) //变换因子的规范(’none’) // 输出图片的数据类型(’complex’) //图片的宽(Width)convol_fft(ImageFFT,Filter,ImageConvol) //对图片用一个滤波器在频域进行卷积运算 //参数说明:输入的图片(ImageFFT) // 频域滤波器(Filter) //运算后输出的结果 rft_generic(ImageConcol,ImageFiltered,’from_freq’,’n’,’real’,Width) //对滤波后的图片进行傅里叶反变换**Process the filtered imagegray_range_rect(ImageFiltered,ImageResult,10,10)//用一个矩形掩膜计算像素点的灰度范围 //参数说明:输入的图片(ImageFiltered) // 输出的灰度范围图(ImageResult) // 矩形掩膜大小(10,10)min_max_rect(ImageResult,ImageResult,0,Min,Max,Range)//判断区域内灰度值的最大和最小值 //参数说明:待分析图片区域(ImageResult) // 图片(ImageResult)// 被去除的直方图两边像素点所// 占总像素数的百分比(0)// 得到的最小值最大值及灰度值范围(Min,Max,Range)threshold(ImageResult,RegionDynThresh,max([5.55,Max*0.8]),255)//利用全局阈值对图像进行分割 //参数说明:输入的图片(ImageResult) // 分割后得到的区域(RegionDynThresh) // 阈值(max([5.55,Max*0.8]),255)// 公式:MinGray <= g <= MaxGrayconnection(RegionDynThresh,ConnectedRegions) //计算区域内的连通部分 //参数说明:输入的图片(RegionDynThresh) // 得到的连通区域(ConnectedRegions)select_shape (ConnectedRegions,SelectedRegions,’area’,’and’,4,99999)//根据指定的形态特征选择区域//参数说明:输入的图片(ConnectedRegions)// 满足条件的区域(SelectedRegions)// 将要计算的形态特征(’area’)// 独立特征间的连接关系(’and’)// 特征的最小限制(4)// 特征的最大限制(99999)union1(SelectedRegions,RegionUnion) //返回包含所有区域的集合 //参数说明:包含所有区域的待计算区域的图片(tedRegions) // 所有输入区域合(RegionUnion)closeing_circle(RegionUnion,RegionClosing,10)//用一个圆圈来封闭一个区域 //参数说明:将要被封闭的区域(RegionUnion) // 被封闭的区域(RegionClosing)// 圆圈的半径(10) connection(RegionClosing,ConnectedRegions1)select_shape(ConnectedRegions1,SelectedRegions1,’area’,’and’,10,99999)area_center(SelectedRegions1,Area,Row,Column) //计算区域的面积以及中心位置//参数说明:待计算的区域(SelectedRegions1) // 区域的面积(Area) // 区域中心的行(Row) // 区域中心的列(Column)**Display the resultsdev_display(Image) //显示原图 Number := |Area| //将区域面积赋给Number用于后面检查是否存在缺陷 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)//构造一个与设定的圆弧或圆相一致的边界//参数说明:生成的边界(ContCircle)// 圆弧或圆的中心坐标(Row,Cloumn)// 圆弧或圆的半径(gen_tuple_const(Number,30))// 圆弧或圆的起始角度(gen_tuple_const(Number,0))// 圆弧或圆的结束角度(gen_tuple_const(Number,rad(360)))// 不明白是什么意思// 相邻两点间的距离(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,’ture’)if(Index#NumImages)disp_continue_message(WindowHandle,’black’,’ture’)stop()endifendfor算法讲解:在实际的表面缺陷检测系统中,针对的检测表面很多是具有一定纹理的比如:布匹、皮革、塑料等,针对这一类表面的检测就不能单纯依靠帧差或者背景差来完成,因为背景的纹理不可能和当前图像的纹理完全相同。

halcon 缺陷检测处理流程

halcon 缺陷检测处理流程

halcon 缺陷检测处理流程Halcon缺陷检测处理流程引言:缺陷检测是工业生产中非常重要的环节,它可以帮助制造商在生产过程中及时发现并处理产品中的缺陷,提高产品质量。

Halcon是一款强大的机器视觉软件,提供了丰富的功能和工具来进行缺陷检测。

本文将介绍Halcon缺陷检测处理流程,帮助读者理解并应用该软件进行缺陷检测。

一、图像采集与预处理:在进行缺陷检测之前,首先需要采集产品的图像。

Halcon支持多种图像采集设备,例如相机、扫描仪等,并提供了丰富的接口和驱动程序来与这些设备进行连接。

在图像采集之后,还需要对图像进行预处理,以提高后续缺陷检测的准确性和效率。

预处理包括图像去噪、灰度调整、滤波等操作,可以根据具体情况选择适当的方法进行处理。

二、特征提取与分割:在进行缺陷检测之前,需要对图像中的缺陷进行分割和提取。

Halcon提供了多种特征提取和分割的工具和算法,例如边缘检测、形状匹配、颜色分割等。

这些工具和算法可以帮助用户准确地提取出图像中的缺陷,并进行分类和分析。

三、缺陷检测与分类:在特征提取和分割之后,就可以进行缺陷检测和分类了。

Halcon提供了多种缺陷检测和分类的方法和算法,例如模板匹配、机器学习等。

用户可以根据具体需求选择适当的方法进行缺陷检测和分类。

在进行缺陷检测和分类时,需要设置合适的参数和阈值,以确保检测结果的准确性和稳定性。

四、缺陷定位与标记:在进行缺陷检测之后,需要对检测到的缺陷进行定位和标记。

Halcon提供了多种定位和标记的方法和工具,例如边缘定位、区域标记等。

这些方法和工具可以帮助用户准确地定位和标记图像中的缺陷,便于后续处理和修复。

五、缺陷分析与统计:在进行缺陷检测之后,可以对检测结果进行分析和统计。

Halcon提供了多种分析和统计的工具和函数,例如缺陷数量统计、缺陷大小分析等。

这些工具和函数可以帮助用户对缺陷进行分析和评估,以改进生产工艺和提高产品质量。

六、结果显示与输出:在进行缺陷检测之后,需要将检测结果显示和输出。

基于HALCON的标签模切缺陷的检测

基于HALCON的标签模切缺陷的检测

2018年第1期信息通信2018 (总第181 期)INFORMATION & COMMUNICATIONS (Sum. N o 181)基于HALCON的标签模切缺陷的检测陈萍(北京信息科技大学自动化学院,北京101192)摘要:针对标签模切的凸起缺陷,采用模板对比检测方法中存在的误报和漏报的问题,文章提出了利用图像形态学处理的 方法和通过提取轮靡的方法对现有的视觉检测算子改进以提升检测效果。

使用H A L C O N软件实现模板比对、形态学和 提取亚像素轮廣的三种检测的方法,并进行误报、漏报和算子处理速度进行比较。

通过样本标签测试结果说明,针对样本 中的凸起缺陷,改进后的方法误报和漏报为0,正确率较高。

此方法对于规则物体边缘凸起缺陷的检测有较高的参考价值。

关键词:标签检测;图像处理;机器视觉;缺陷检测中囹分类号:TP27 文献标识码:A文章编号:1673-1131( 2018 )01-0116-04Detection and implementation of die cutting defects based on HALCONChen Ping(School of A utomation,Beijing lofarmation Science&Technology U n i v ersi ty,Beijing,100192) Abstract:For the bump d e f e c t s of t h e l a b e l7s d i e c u t t i n g,t h e method using templates comparison o f t e n l e a d s t o f a l s e p o s i t i v e s and&lse ne gatives,and the method of u sing image moiphological processing and the method of e x t r a c t i n g contour a r e put f o r­ward i n t h i s paper t o Improve t h e e x i s t i n g v i s u a l i n s p e c t i o n effect^nd use H A L C O N soft ware t o accomplish t h e s e t h r e e v i s u a li n s p e c t i o n methods of templa te matching,morphological processing and e x t r a c t i o n of sub p i x e l contour,and compare the f a l s enegatives,f a l s e p o s i t i v e s and the pro ce ssing speed of t h r e e methods.Through t h e sample7s t e s t r e s u l t s f o r convex d e f e c t s i n t h e l a b e l s,f a l s e p o s i t i v e s r a t e and f a l s e n egatives r a t e has improved t o be0. The c o r r e c t r a t e i s h i g h e r.T h i s method of m orphological proce ssing has a high r ef er en ce value f a r t h e d e t e c t i o n of d e f e c t s i n t he edge of t h e r e g u l a r o b j e c t.Keywords:Label E>etection;l i n ag e Processing;Machine^s io n;Defect Detection0引言印刷业的标签大部分用来标识产品相关说明,且一般背 面自带胶。

halcon边缘提取缺陷检测的思路

halcon边缘提取缺陷检测的思路

一、边缘提取1、设置ROI兴趣区域2、快速二值化,并连接相邻区域。

这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来3、提取最接近目标区域的轮廓.常用函数有boundary,gen_contour_region_xld4、根据自己的需求提取需要的初步轮廓5、将初步提取的初步轮廓进行膨胀操作6、将膨胀后的区域和原图进行减操作(在这步之前有可能需要对原图进行高斯滤波)。

这样就能得到只有边缘的真实图像7、用canny或其他算子(根据需要)提取亚像素轮廓,一般使用edges_sub_pix函数8、处理和计算得到真实的边缘XLD后你可能需要进一步处理得到你想要的线、弧等。

你可能用到的函数segment_contours_xld(分割)union_collinear_contours_xld(联合相邻或相同角度直线)select_contours_xld(提取想要的轮廓)union_cocircular_contours_xld(联合相同圆)等等得到轮廓后如果你不知道怎么处理后得到你想要的东西(线、弧、圆、角、矩形)你都可以将轮廓转化为点,然后用点集合来拟合任何你想要的东西。

二、BLOB分析检测(前面一篇有详细讲解,本骗只讲思路)1、应用ROI,可以使Blob分析加速。

2、匹配ROI区域或图像,详将GUIDEIIB以形状为基础的匹配。

3、校正图像<经常用来去除镜头畸变或把图像转换到参考点视角,如双目视觉时的图像校正>4、图像前处理5、引用分割参数6、分割图像7、区域处理8、特征提取9、把提取的结果转换到世界坐标中10、结果可视化。

三、赃物检测1、得到两个不同高斯标准差的高斯积卷2、对原始图像进行傅里叶变换'to_fre'3、用之前的积卷对图像做积卷滤波4、傅里叶反变换‘from_fre’。

halcon——缺陷检测常用方法总结(光度立体)

halcon——缺陷检测常用方法总结(光度立体)

halcon——缺陷检测常⽤⽅法总结(光度⽴体)引⾔机器视觉中缺陷检测分为⼀下⼏种:blob分析+特征模板匹配(定位)+差分光度⽴体特征训练测量拟合频域+空间域结合:深度学习前⼀篇总结了频域与空间域的结合使⽤,本篇就光度⽴体的缺陷检测做⼀个总结。

光度⽴体在⼯业领域,表⾯检测是⼀个⾮常⼴泛的应⽤领域。

在halcon中,使⽤增强的光度⽴体视觉⽅法,三维表⾯检测被加强。

利⽤阴影可⽅便快速的检测物体表⾯的缺⼝或凹痕。

使⽤光度⽴体视觉⽅法可在复杂图像中轻松找到表⾯缺陷。

适⽤场景:光度⽴体法可以看作是2.5维,适⽤于检测⾦属物料上⾯的凹凸特征。

函数原理:1.通过photometric_stereo算⼦获得表⾯梯度图像,该算⼦可以得到表⾯梯度图像和反照率图像。

需要输⼊多张从不同⾓度照明所得到的图像。

2.通过derivate_vector_field算⼦获得⾼斯(平均)曲率图像,该算⼦中需要输⼊表⾯梯度图像。

光源:光度⽴体法不需要特殊的光源,只需要从不同的⾓度打光⽽已。

1 光度⽴体法的典型应⽤:光度⽴体法的典型应⽤是检测物体表⾯微⼩变化,例如,受打光⽅向影响的缺陷。

⽐如⾮平⾯的打印检测(个⼈理解:普通打光⽅式受光线影响特征成像不理想,可以通过光度⽴体法检测)。

值得注意的是:光度⽴体法不适⽤于绝对⾼度的重建,也就是说,它不能替代传统的3D重建算法,如对焦测距和激光三⾓测量。

2 光度⽴体法的局限性:光度⽴体法基于Woodham算法。

因此:⼀⽅⾯假定相机是⽆畸变成像,也就是说必须使⽤远⼼镜头或者长焦镜头。

另⼀⽅⾯假定每⼀个光源发射的光束都是平⾏且均匀的,也就是说必须使⽤具有均匀强度的远⼼照明光源,或者使⽤远距离的点光源代替。

此外,物体必须具有朗伯反射特性,即它必须以漫反射的⽅式反射⼊射光。

有镜⾯反射的物体或者区域(镜⼦或者光滑的表⾯)不能使⽤此⽅法,会得到⼀个错误的结果。

3 采集图像设置:带有远⼼镜头的相机必须与被测物体表⾯垂直安装,在采集多幅图像时,⼀定要保证相机和物体不被移动。

halcon——缺陷检测常用方法总结(模板匹配(定位)+差分)

halcon——缺陷检测常用方法总结(模板匹配(定位)+差分)

halcon——缺陷检测常⽤⽅法总结(模板匹配(定位)+差分)引⾔机器视觉中缺陷检测分为⼀下⼏种:blob分析+特征模板匹配(定位)+差分光度⽴体:特征训练测量拟合频域+空间域结合:深度学习本篇主要总结⼀下缺陷检测中的定位+差分的⽅法。

即⽤形状匹配,局部变形匹配去定位然后⽤差异模型去检测缺陷。

模板匹配(定位)+差分整体思路(形状匹配):1. 先定位模板区域后,求得模板区域的坐标,创建物品的形状模板create_shape_model,注意把模板的旋转⾓度改为rad(0)和rad(360)。

2. 匹配模板find_shape_model时,由于物品的缺陷使形状有局部的改变,所以要把MinScore设置⼩⼀点,否则匹配不到模板。

并求得匹配项的坐标。

3. 关键的⼀步,将模板区域仿射变换到匹配成功的区域。

由于差集运算是在相同的区域内作⽤的,所以必须把模板区域转换到匹配项的区域。

4. 之后求差集,根据差集部分的⾯积判断该物品是否有缺陷。

模板匹配(定位)+差分的⽅法主要⽤来检测物品损坏,凸起,破洞,缺失,以及质量检测等。

halcon例程分析:1,印刷质量缺陷检测(print_check.hdev)该例程⽤到了差异模型,将⼀个或多个图像同⼀个理想图像做对⽐,去找到明显的不同。

进⽽鉴定出有缺陷的物体。

差异模型的优势是可以直接通过它们的灰度值做⽐较,并且通过差异图像,⽐较可以被空间地加权。

变化模型检测缺陷的整体思路:1. create_variation_model —— 创建⼀个差异模型2. get_variation_model —— 获得差异模型3. train_variation_model —— 训练差异模型4. prepare_variation_model —— 准备差异模型5. compare_variation_model —— ⽐较模型与实例6. clear_variation_model —— 清除差异模型dev_update_off ()* 选择第1张图像创建形状模板read_image (Image, 'pen/pen-01')get_image_size (Image, Width, Height)dev_close_window ()dev_open_window (0, 0, Width, Height, 'black', WindowHandle)set_display_font (WindowHandle, 16, 'mono', 'true', 'false')dev_set_color ('red')dev_display (Image)* 把我感兴趣的区域抠出来,原则上范围越⼩越好,因为这样创建模板时⼲扰会少很多threshold (Image, Region, 100, 255)fill_up (Region, RegionFillUp)difference (RegionFillUp, Region, RegionDifference)shape_trans (RegionDifference, RegionTrans, 'convex')dilation_circle (RegionTrans, RegionDilation, 8.5)reduce_domain (Image, RegionDilation, ImageReduced)inspect_shape_model (ImageReduced, ModelImages, ModelRegions, 1, 20)gen_contours_skeleton_xld (ModelRegions, Model, 1, 'filter')* 获得抠图区域的中⼼,这是参考点area_center (RegionDilation, Area, RowRef, ColumnRef)* 创建形状模板create_shape_model (ImageReduced, 5, rad(-10), rad(20), 'auto', 'none', 'use_polarity', 20, 10, ShapeModelID)* 创建变化模型(⽤于和缺陷⽐较)create_variation_model (Width, Height, 'byte', 'standard', VariationModelID)* ⽂件夹中前15张图⽚是质量良好的,可以⽤来训练模板for I := 1 to 15 by 1read_image (Image, 'pen/pen-' + I$'02d')* 先寻找模板的实例find_shape_model (Image, ShapeModelID, rad(-10), rad(20), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)if (|Score| == 1)if (|Score| == 1)* 使⽤仿射变换,将当前图像平移旋转到与模板图像重合,注意是当前图像转向模板图像vector_angle_to_rigid (Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D)affine_trans_image (Image, ImageTrans, HomMat2D, 'constant', 'false')* 训练差异模型train_variation_model (ImageTrans, VariationModelID)dev_display (ImageTrans)dev_display (Model)endifendfor* 获得差异模型get_variation_model (MeanImage, VarImage, VariationModelID)* 做检测之前可以先⽤下⾯这个算⼦对可变模型进⾏设参,这是⼀个经验值,需要调试者调整prepare_variation_model (VariationModelID, 20, 3)dev_set_draw ('margin')NumImages := 30* 可变模板训练完成后,我们终于可以进⼊主题,马上对所有图像进⾏缺陷检测,思想就是差分for I := 1 to 30 by 1read_image (Image, 'pen/pen-' + I$'02d')* 要注意做差分的两幅图像分辨率相同,当然也需要通过仿射变换把待检测的图像转到与模板图像重合* 先寻找模板的实例find_shape_model (Image, ShapeModelID, rad(-10), rad(20), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) if (|Score| == 1)* 使⽤仿射变换,将当前图像平移旋转到与模板图像重合,注意是当前图像转向模板图像vector_angle_to_rigid (Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D)affine_trans_image (Image, ImageTrans, HomMat2D, 'constant', 'false')* 抠图reduce_domain (ImageTrans, RegionDilation, ImageReduced)* 差分(就是检查两幅图像相减,剩下的区域就是不同的地⽅了,与模板图像不同的地⽅就是缺陷)*这⾥可不能⽤difference做差分啊,halcon为变形模板提供了专门的差分算⼦:compare_variation_modelcompare_variation_model (ImageReduced, RegionDiff, VariationModelID)connection (RegionDiff, ConnectedRegions)* 特征选择:⽤⼀些特征来判断这幅图像印刷是否有缺陷,这⾥使⽤⾯积* 其实可以考虑利⽤区域⾯积的⼤⼩来判断缺陷的严重程度,这⾥就不过多讨论了select_shape (ConnectedRegions, RegionsError, 'area', 'and', 20, 1000000)count_obj (RegionsError, NumError)dev_clear_window ()dev_display (ImageTrans)dev_set_color ('red')dev_display (RegionsError)set_tposition (WindowHandle, 20, 20)if (NumError == 0)dev_set_color ('green')write_string (WindowHandle, 'Clip OK')elsedev_set_color ('red')write_string (WindowHandle, 'Clip not OK')endifendifif (I < NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endifendfor* 结语:如果发现前⾯作为训练变形模板的良好图像也被判定为NG,* 可以调整prepare_variation_model参数* 或者调整select_shape特征筛选的标准相关算⼦分析:create_variation_model(创建⼀个差异模型)create_variation_model(Width, Height, Type, Mode ,ModelID)//创建⼀个ID为ModelID,宽为Width,⾼为Height,类型为Type的差异模型参数参数Mode决定了创建标准图像和相应的变化图像的⽅法。

基于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-),男,湖南南县人,佛山科学技术学院硕士研究生。

基于Halcon_的手机背板表面缺陷快速检测方法

基于Halcon_的手机背板表面缺陷快速检测方法

第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的SMT—PCB元件缺陷检测

基于Halcon的SMT—PCB元件缺陷检测

果为 目标 对象 的位 置 信息 与相 似度 , 于多模 板 匹 配还可 以得到 目标 属 于哪个 模板 的 信息 。 对
( ) 于元 件 的模 板匹 配 。 匹 配可 以看 做 高级 的形 状匹 配 , 3基 该 匹配 原理 与形 状 匹配 相 同 , 出改进表 突 现在对 于 一 个包 含 多个 部件 的 目标 对 象 的检 测上 , 于元 件 的模 板 匹配 将 此种 目标 对象 作 为一 个大模 基 板 , 练模 板 时允许 各 个部 件 间有相 对 的位 置偏 移 、 转 。基 于形 状 的匹配 针对 此种 情况 则必 须采用 多 训 旋 模 板 匹配 。 由于在训 练模 板 时 , 个 部件 之 间的 位置关 系基本 限定 , 匹配 时 只需搜 索 到一个 部件 , 他 各 在 其 部件 的搜 索范 围就 大 大减少 , 因此相 对 基于 形状 匹配 的 多模 板匹 配 , 匹 配速度 更快 。匹配结 果为 目标 其
对象 各个 部件 的位 置 坐标 、 目标 部件 相 对模 板部 件 的旋转 角 度 以及各 部件 的相 似度 等 信息 。
1 2 匹 配 基 本 流 程 与 扩 展 流 程 .
() 1 基本 流程 。 无论 采用 3种 匹配技 术 的哪 一种 , 其基 本 流程 均 为 : 取 图像一创 建模 板一 匹配一 清 获
搜索方法 等 。 () 2 扩展 流程 。 为了满足 在实 际运用 中的在线 检 测速 度要 求 , 常采 用 离线 制 作模 板 在线 匹 配 的流 通
范 彦斌 ( 92 )男 . 宁 大 连 人 . 山 科 学 技 术 学 院 教授 . 士 。 16 一 , 辽 佛 博 维普资讯 2 0
佛 山科 学技 术学院 学报 ( 自然科 学版 )

halcon缺陷检测常用方法总结

halcon缺陷检测常用方法总结

halcon缺陷检测常用方法总结Halcon是一种强大的机器视觉软件,广泛应用于工业自动化和视觉检测领域。

缺陷检测是机器视觉中的重要任务之一,其目的是利用图像处理和分析技术,通过检测和分析图像中的缺陷来保证产品质量。

在Halcon中,有多种常用的方法可以用于缺陷检测。

下面将介绍一些常用的方法。

1.边缘检测方法边缘是图像中物体的轮廓,常常用于检测缺陷。

Halcon提供了多种边缘检测方法,如Sobel、Prewitt和Canny等。

这些方法能够提取图像中的边缘信息,并通过分析边缘的强度、方向和连续性来检测缺陷。

2.区域生长方法区域生长是一种基于像素相似性的方法,能够将相似像素合并为连续的区域。

在缺陷检测中,可以利用区域生长方法找到与周围像素相比较异常的区域,从而检测缺陷。

3.学习算法方法Halcon中提供了多种机器学习算法,如支持向量机(SVM)、随机森林(Random Forest)和深度学习等。

这些算法能够通过学习大量的正常样本和缺陷样本来构建模型,并利用模型进行缺陷检测。

4.形状匹配方法形状匹配是一种通过比较图像中物体形状的方法。

Halcon中提供了多种形状匹配算法,如模板匹配和形状基因算法。

这些方法能够通过比较待检测物体的形状与模板或基因的形状差异来检测缺陷。

5.纹理分析方法纹理是图像中的细微结构,常常包含有关物体表面的信息。

Halcon中提供了多种纹理分析方法,如灰度共生矩阵(GLCM)、灰度直方图和小波变换等。

通过分析图像的纹理特征,可以检测并区分不同的缺陷。

6.自适应阈值方法阈值是一种常用的图像分割方法,可以将图像分成不同的区域。

在缺陷检测中,阈值方法常常用于将图像中的缺陷与背景进行分离。

Halcon中提供了多种自适应阈值的方法,如Otsu和基于梯度的阈值等。

7.深度学习方法深度学习是近年来非常热门的机器学习方法,具备强大的特征提取和分类能力。

Halcon中集成了深度学习库Manto,可以利用Manto进行图像分类和目标检测,从而实现缺陷检测。

halcon缺陷检测基本步骤

halcon缺陷检测基本步骤

Halcon缺陷检测的基本步骤及注意事项
Halcon缺陷检测的基本步骤包括以下几步:
1.数据收集和准备:收集具有缺陷和无缺陷的样本图像,确保样本图像能够
充分涵盖不同的缺陷类型和变化。

标记样本图像,将缺陷位置标记为感兴趣区域(ROI)。

根据需求对图像进行预处理,例如去噪、尺寸调整和增强等。

2.模型训练:使用Halcon的深度学习工具,如Deep Learning Assistant(DLA)
或HDevelop,创建一个深度学习模型。

这可以通过选择适当的网络结构和配置参数来完成。

将准备好的样本图像和其对应的标签加载到训练数据集中。

在Halcon中执行模型训练。

这将涉及到数据集的分割、数据增强、模型优化和迭代训练过程。

3.模型评估和调优:使用保留的测试数据集对训练的模型进行评估,计算指
标如准确率、召回率和F1得分等。

根据评估结果,对模型进行调优。

可以尝试不同的网络结构、超参数设置和训练策略等。

4.缺陷检测:使用训练好的模型对新的图像进行缺陷检测。

加载模型并使用
Halcon提供的API调用模型进行推断。

传入待检测的图像作为输入。

模型将输出一个缺陷概率图或边界框,标记出可能存在缺陷的区域。

根据需要,可以根据阈值筛选概率图或边界框,确定最终的缺陷检测结果。

5.结果分析和优化:对缺陷检测结果进行分析和验证。

可以与人工标注的结
果进行比较,评估算法的性能。

根据分析结果,对算法进行优化。

可能需要调整模型参数、增加样本数量、改进预处理步骤等。

基于HALCON的字符识别及缺陷检测

基于HALCON的字符识别及缺陷检测
( Ma t e r i a l s a n d Me c h a n i c l a E n g i n e e i r n g Co l l e g e , Be r i n g Te c h n o l o g y a n d Bu s i n e s s Un i v e r s i t y ,
中 图 分 类 号 :T P 3 9 1 . 4 文 献 标 识 码 :A d o i : 1 0 . 3 9 6 9 / i . i s s n . 1 0 0 2 — 6 6 7 3 . 2 0 1 4 . 0 2 . 0 3 1
Ch a r a c t e r Re c o g n i t i o n a n d De t e c t De f e c t i o n Ba s e d o n HALCON / A N G H u i — Y u , L I U Q 帆一 Q m ,HU A N G J i J u n ,S U N C h a o
Hale Waihona Puke Ch i n a Ce n t e r f o r F o o d S a f e t y Re s e a r c h . B TB U, Be i j i n g 1 0 0 0 3 7 , Ch in a )
A b s t r a c t : Us i n g t h e c h a r a c t e s r t o i d e n t i f y o b j e c t s h a s b e c o me a aj m o r w a y i n h u ma n h f e o r p r o d u c i t o n , t h e r e f o r e , t h e a c c u r a c y o f t h e p i r n t -

Halcon学习之2D测量

Halcon学习之2D测量

从图像中提取的2D特征通常包括:●物体的面积,例如:像素的数目代表了物体。

●物体的方向●物体之间或物体组成部分之间的角度●物体的位置●物体的尺寸,例如:直径,宽,高,以及物体之间或物体组成部分之间的距离●物体的数量可使用的处理方法●区域处理●轮廓处理●简单的几何操作measure_metal_part_first_example.hdevstep1:创建regions并抽取基本特征step2:抽取轮廓step3:分割轮廓step4:将轮廓分割成线性和圆形的部分blob分析●预处理图像或区域mean_image或binomial_filter,median_imagegray_opening_shape,gray_closing_shape,平滑图像:smooth_image平滑图像但保留边缘:anisotropic_diffusion对于区域,填充孔洞可以用fill_up或形态学算子,opening_circle and opening_rectangle1,closing_circle 和closing_rectangle1●将图像分割成区域阈值化算子:auto_threshold, bin_threshold, dyn_threshold, fast_threshold, and threshold当手动选择阈值时,获知图像灰度值的分布信息可能非常有帮助。

合适的算子包含:gray_histo, histo_to_thresh, and intensity,你也可使用HDevelop在线的Gray Histogram检测工具,来交互搜索一个合适的阈值。

使用阈值化算子将图像进行分割后,图像中的感兴趣部分就变成了一个区域。

要将此区域分成多个不同的区域,如对每一个连接部分构成一个区域,必须使用connection算子。

对于具有蜂窝状形状结果的物体,使用watershed算子比使用一个阈值算子更合适,因为他们基于拓扑来分割图像,而不是图像的灰度值。

基于halcon—缺陷检测常用方法与示例总结

基于halcon—缺陷检测常用方法与示例总结

基于halcon—缺陷检测常用方法与示例总结下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!基于Halcon—缺陷检测常用方法与示例总结引言缺陷检测在工业生产中扮演着至关重要的角色,它不仅可以提高产品质量,减少不良品率,还可以降低生产成本,增强企业竞争力。

Halcon学习笔记之缺陷检测(一)

Halcon学习笔记之缺陷检测(一)

Halcon学习笔记之缺陷检测(一)例程:surface_scratch.hdev说明:这个程序利用局部阈值和形态学处理提取表面划痕代码中绿色部分为个人理解和注释,其余为例程中原有代码*surface_scratch.hdev:extraction of surface scratches via local thresholding and morphological post-processing*dev_close_window()dev_update_window(‘off’)******step: acquire image //获取图片*****read_image(Image,’surface_scratch’) //读入图片名为’surface_scratch’的图片get_image_size(Image,Width,Height) //获取图像的尺寸:宽、高//在坐标为(0,0)处打开一个图像窗口。

其宽和高分别是Width和Width,窗口的句柄为WindowIDdev_open_window_fit_image(Image,0,0,Width,Width,WindowID)//设置窗口中显示的字体颜色,大小,加粗,倾斜set_display_font(WindowID,12,’Courier’,’true’,’false’)dev_set_draw(‘margin’) //设置区域填充类型:’margin’or ‘fill’dev_set_line_width(4) //设置线宽,这个在填充类型为fill时效果不明显dev_display(Image) //显示图片disp_continue_message(WindowID,’black’,’true’) //显示继续消息,等待用户按F5继续执行stop()******step: segment image******-> using a local thresholdmean_image(Image,ImageMean,7,7) //用7×7的窗口对图像进行均值滤波dyn_threshold(Image,ImageMean,DarkPixels,5,’dark’) //利用本地阈值进行图像分割*->extract connected componentsconnection(DarkPixels,ConnectedRegions) //对区域进行连通运算dev_set_colored(12) //设置区域显示的颜色数目dev_display(ConnectedRegions) //显示图像•disp_continue_message(WindowID,’black’,’true’)•//显示继续提示,提示继续stop()******step: process regions******->select large regionsselect_shape(ConnectedRegions,SelsectedRegions,’area’,’and’,10,1000) //区域选择,用面积的形态特征选择面积在10到10000间的区域dev_display(Image) //显示原图dev_display(SelectedRegions) //显示选择的区域disp_continue_message(WindowID,’black’,’true’) //显示继续提示,提示继续stop()*->visualize fractioned scratchopen_zoom_window(0,round(Width/2),2,303,137,496,3,WindowHandleZoom)dev_set_color(‘blue’) //设置显示颜色(蓝色),功能与dev_set_colored类似dev_display(Image) //显示原图dev_display(SelectedRegions) //显示选中的区域图disp_continue_message(WindowID,’black’,’true’) //显示继续提示信息stop()*->merge fractioned scratches via morphologyunion1(SelectedRegions,RegionUnion) //合并所有区域dilation_circle(RegionUnion,RegionDilation,3.5) //用半径3.5 的掩膜进行膨胀dev_display(Image) //显示原图dev_display(RegionDilation) //显示膨胀后的区域图disp_continue_message(WindowID,’black’,’true’)//显示继续提示信息stop()skeleton(RegionDialtion,Skeleton) //计算区域的中轴,见例程:surface_scratch.hdev connection(Skeleton,Errors) //连通操作,以便后面进行区域选择dev_set_colored(12) //设置颜色dev_display(Image) //显示原图dev_display(Errors) //显示所有抓痕disp_continue_message(WindowID,’black’,’true’) //显示继续提示信息stop()*->distinguish small and large scratchesclose_zoom_window(WindowHandleZoom,Width,Height) //关闭缩放窗口select_shape(Errors,Scratches,’area’,’and’,50,10000)//选择区域面积在50到10000的作为划痕select_shape(Errors,Dots,’area’,’and’,1,50) //选择区域面积在1到50 的作为点dev_display(Image) //显示原图dev_set_color(‘red’) //设置区域显示颜色为红色dev_display(Scratches) //显示条状划痕(显示为红色)dev_set_color(‘blue’) //设置区域显示颜色蓝色dev_display(Dots) //显示点状划痕(显示为蓝色)。

《HALCON学习教程》目录

《HALCON学习教程》目录

《HALCON学习教程》目录HALCON学习教程 2015年8月30号正式上线(封皮彩色,内页黑白色)目录前言. .................................................................... .....4 第1章HALCON简介. .......................................................5 1.1 Halcon 应用范围简介. .........................................5 1.2 Halcon功能及应用简介. ..................................7 1.3 Halcon 下载安装. ..............................................8 第2章HALCON开发环境介绍. ..........................................11 2.1 HALCON环境介绍. .............................................11 2.2 初始HALCON程序. ...............................................16 2.3 HALCON图像获取. .............................................19 第3章 HALCON图像变量. ...............................................23 3.1 HALCON图像变量之Image .....................................23 3.2 HALCON图像变量之Region,区域,. (25)3.3 HALCON图像变量之XLD (30)第4章图像分割. (34)4.1 图像分割之阈值分割. (34)4.2图像分割之彩色分割. ................................................40 第5章 Region相关算子. ....................................................44 5.1 Region运算之点线距离简介. ..............................44 5.2 Region 运算之骨骼网格鞍点. ..............................53 5.3 Region 运算之线特征. ......................................61 5.4 Region运算之结合例子讲Region算子. ..............67 实例逆时针寻画出不规则图形边界点. .................................70 第6章形态学相关算子. ......................................................72 6.1 腐蚀膨胀算子. .........................................................72 6.2 腐蚀膨胀应用深入. (77)腐蚀膨胀区域region边界应用. ..........................................80 6.3 闵可夫斯基加减法与腐蚀膨胀. .....................................81 闵可夫斯基加法. (81)闵可夫斯基减法. (82)6.4 击中击不中及开闭运算. ...............................................85 开运算. .................................................................... ..........86 闭运算. .................................................................... ..........87 6.5 顶底帽变换. ...............................................................89 顶帽变换. .................................................................... .......89 底帽变换. .................................................................... .......90 形态帽变换. .................................................................... ....91 第7章 Region 深入分析. .........................................................93 7.1 行程分析. ....................................................................93 7.2 连通区域探讨. ..............................................................95 7.3 区域特征之矩. ..............................................................99 区域特征值面积. (9)9 区域特征值中心. ....................................................................99 区域特征值矩. .................................................................... ...99 区域特征之等效椭圆. (101)区域特征之选择Region特征算子. ..........................................102 7.4 区域特征之凸性,长度及新应用. .....................................104 区域特征之Region凸包. .......................................................104 区域特征之Region轮廓长度. . (106)7.5 区域特征之多种特征分析及区域选择. (109)区域特征之圆度,circularity,. (109)区域特征之矩形度(rectangularity) (110)区域特征之紧密度(compactness) .........................................110 区域特征之离心率(偏心度/compactness) ..............................111 区域特征之最大面积,select_shape_std,. ........................111 应用程序. .................................................................... .........113 第8章 XLD深入分析. (116)8.1 分析XLD数据结构及XLD提取. ........................................117 8.2 分析XLD数据结构及平行轮廓. .........................................121 从多边形XLD,xld_poly,提取出内部相互平行的轮廓. ........121 XLD轮廓附加属性. (12)28.3 分析XLD特征. (125)8.4 XLD特征选择及其回归参数. .........................................132 (八个)极值点扩展知识. ...........................................................133 回归直线. .................................................................... ..........134 实例程序. .................................................................... ...........136 第9章图像运算. .................................................................... .....139 9.1 图像代数运算. (139)图像加法运算. .................................................................... ......139 图像减法运算. .................................................................... ......141 图像乘法运算. .................................................................... .....142 图像除法运算. .................................................................... ......142 图像逻辑运算(位操作) ..............................................................143 实例练习. ................................................................ ...............................144 9.2 图像几何运算之放射变换. ...................................................145 放射变换之平移变换. (145)放射变换之缩放变换,比例变换,. ..............................................146 放射变换之旋转变换. . (147)应用程序. .................................................................... ............150 第10章傅立叶变换. .................................................................... 153 10.1 傅立叶简介. (153)10.2 卷积滤波及傅立叶应用. .................................................157 模板和卷积。

基于Halcon的微透镜表面缺陷检测算法

基于Halcon的微透镜表面缺陷检测算法

基于Halcon的微透镜表面缺陷检测算法王凯;李毅【摘要】机器视觉是计算机科学的一个很重要的分支,涉及到图像处理、模式识别、光学等多个领域.基于机器视觉的基本原理,设计对微透镜表面缺陷检测的算法平台,可应用于对微透镜表面采集到的图像进行处理、分析.试验结果表明,该算法能正确识别微透镜表面缺陷的大小和位置,具有一定的实用价值.【期刊名称】《现代计算机(专业版)》【年(卷),期】2018(000)008【总页数】3页(P82-84)【关键词】机器视觉;图像处理;缺陷检测【作者】王凯;李毅【作者单位】四川大学计算机学院,成都 610065;四川大学图象图形研究所,成都610065【正文语种】中文0 引言随着我国精密制造的需求日益增长,对精密制造的准确率也有了更高的要求。

尤其是现在精密制造业制造速度的提升,随着机器的老化和损坏,出现次品的概率将会越来越高,因此,通过分析各个流水线的次品率及缺陷出现的部分对流水线进行调整和改进,成为了精密制造业的一项基础工作。

目前对于微透镜的检测,主要使用的方法依旧是目视法,通过显微镜查看微透镜表面是否存在缺陷。

目视法费时费力,劳动强度大,效率低且主观因素影响较大。

随着制造量的增加目视法只能应用于抽查。

笔者基于机器视觉的工作原理设计出了一套微透镜表面缺陷检测的方案,该方案通过图像处理和模式识别技术,对微透镜表面缺陷进行自动检测,为微透镜检查提供了一种快速有效的途径,具有成本低且精度高的特点。

微透镜表面缺陷检测与识别算法:本文主要检测的是大斑块和小斑块缺陷,整个算法由图像预处理,光照均衡,缺陷定位,缺陷分类。

1 算法实现本文算法的主要流程如图1。

图11.1 图像预处理微透镜本身属于精密器件,检测需要进行封装测试,因此光照环境会很均衡。

由于微透镜本身的特征,如图2可以看到微透镜表面的感光区域的灰度值远小于非感光区域的灰度值,可以在原图上进行一个30-110的灰度阈值,找出感光区域所在的部分 Re⁃gion_Light。

缺陷检查培训讲课文档

缺陷检查培训讲课文档
17
➢14.Blind : CT or Via have not been opened.
➢15.Patten damage :
Metal damage
➢Poly broken is patten damage too,always happen during High Imp. 18
➢16.W Residue : 1). Caused by Oxide Loss;
➢4.In film particle : Particle was contained in film, such as poly, HDP, metal and so on.
HDP
Poly 12
➢5.Scratch : Especially for scratch caused by robot , other tool parts or man-made. Defect map :
➢11.Patten abnormal : Roughness,Defocus,Patten shift and so on.
Roughness
Defocus
Patten shift
Patten Abnormal
16
➢12.Concave: COP( Crystal oriented pits ), Oxide Loss,Pits. ➢13.Peeling : Pattern shift or missing(W plug is one of peeling,always appear at wafer edge.)
23
14Leabharlann ➢8.Ring like defect: Such as defects caused by ARC splash, usually related to PHOTO.

基于HALCON的医疗袋缺陷检测

基于HALCON的医疗袋缺陷检测

基于HALCON的医疗袋缺陷检测
王宏丽;赵不贿;孙智权;陈星星
【期刊名称】《包装工程》
【年(卷),期】2015(36)13
【摘要】目的针对现有医疗袋质量检测过程中存在的检测速度慢和检测精度低等问题,提出一种新的基于HALCON的医疗袋印刷图案缺陷检测方案。

方法根据不同医疗袋图案的区域特征进行手动定位,通过基于形状的模板匹配算法实现目标区域的快速匹配,利用灰度值差影匹配算法进行缺陷检测。

结果检测出的缺陷与实际存在的缺陷基本吻合,且检测速度和检测精度均满足要求。

结论该方案能够快速、准确、有效地检测出医疗袋图案缺陷,达到了一般生产线质量要求。

【总页数】5页(P125-129)
【关键词】缺陷检测;医疗袋;机器视觉;HALCON
【作者】王宏丽;赵不贿;孙智权;陈星星
【作者单位】江苏大学
【正文语种】中文
【中图分类】TS807
【相关文献】
1.基于Halcon的锂电池标签表面缺陷检测 [J], 熊继淙; 邢旭朋; 马军
2.基于HALCON的贴片IC焊接缺陷检测算法研究 [J], 李文静;张虎山;焦键
3.基于HALCON的贴片IC焊接缺陷检测算法研究 [J], 李文静;张虎山;焦键
4.基于Halcon的圆形陶瓷片表面缺陷检测方法 [J], 贺潇;苏彩红;詹宁宙;林军帆;梁智宇
5.基于Halcon的电表铭牌缺陷检测系统 [J], 谢晖;吴先锋;付山;王伟龙
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Halcon学习笔记之缺陷检测(二)例程:detect_indent_fft.hdev说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步:首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波);然后,将原图和构造的滤波器进行快速傅里叶变换;最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。

注:代码中绿色部分为个人理解和注释,其余为例程中原有代码*Initialization(初始化)dev_updata_off() //这一句包含如下三个算子://dev_updata_pc(‘off’) 关闭更新程序计数器//dev_updata_var(‘off’) 关闭更新变量窗口//dev_updata_window(‘off’) 关闭更新图像窗口(即通过命令来显示想要在图像窗口显示的图片)dev_close_window() //关闭活动的图像窗口read_image(Image,’plastics/plastics_01’) //载入图片//参数说明:为读入图片命名(Image)// 文件名(’plastics/plastics_01’)get_image_size(Image,Width,height) //获取图片的长宽;//参数说明:之前读入或生成的图片(Image)// 图片的宽(Width)// 图片的高(Height)dev_open_window(0,0,Width,Height,’Black’,WindowHandle) //打开一个新的图像窗口//参数说明:起始坐标(0,0)// 大小(Width,Height)// 背景颜色(’Black’)// 窗口句柄(WindowHandle)set_display_font (WindowHandle,14,’mono’,’ture’,’false’)//设置不依赖操作系统的字体//参数说明:窗口句柄(WindowHandle)// 字体大小(14)// 字体类型(’mono’)// 是否黑体(’ture’)// 是否倾斜(’false’)dev_set_draw(‘Margin’) //定义区域填充模式//参数说明:填充模式(’Margin’或者’Fill’)dev_set_line_width(3) //设置输出区域轮廓线的线宽//可以修改参数来看最后缺陷区域标示的区别dev_set_color(’red’) //设置一种或者多种输出颜色**Optimize the fft speed for the specific image size(根据指定图像大小进行fft速度最优化)optimize_rft_speed(Width,Height,’standard’) //对指定大小的图片的fft速度进行优化//参数说明:图片大小(Width,Height)// 优化模式(’standard’)**Construct a suitable filter by combining two Gaussian filters(结合两个高斯滤波器构造一*个合适的滤波器)Sigma1 := 10.0Sigma2 := 3.0 //定义两个常量gen_gauss_filter(GaussFilter1,Sigma1,Sigma1,0.0,’none’,’rft’,Width,Height)gen_gauss_filter(GaussFilter2,Sigma2,Sigma2,0.0,’none’,’rft’,Width,Height) //在频域生成两个高斯滤波器//参数说明:生成的高斯滤波器(GaussFilter)// 空域中高斯在主方向上的标准差(Sigma)// 空域中高斯在正交于主方向的方向上的标准差(Sigma)// 滤波器主方向的角度(0.0)// 滤波器的规范(’none’)// 直流项在频域的位置(’rft’)// 图片的大小(Width,Height)sub_image(GaussFilter1,GaussFilter2,Filter,1,0) //两图片相减(灰度)//sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )//g' := (g1- g2) * Mult + Add//以上为函数原型以及运算公式**Process the images iteratively(对图像进行迭代运算)NumImages := 11For Index := 1 to NumImages by 1 //for循环从1到NumImages,步长为1**Read an image and convert it to gray valuesread_image(Image,’plastics/plastics_’+Index$’02’)rgb1_to_gray(Image,Image) //将原图转化为灰度图,第一个参数为原图*Perform the convolution in the frequency domainrft_generic(Image,ImageFFT,’to_freq’,’none’,’complex’,Width)//对计算一幅图片实部进行快速傅里叶变换 //参数说明:输入的图片(Image) // 傅里叶变换后输出的图片(ImageFFT) // 变换方向(’to_freq’或’from_freq’) //变换因子的规范(’none’) // 输出图片的数据类型(’complex’) //图片的宽(Width)convol_fft(ImageFFT,Filter,ImageConvol) //对图片用一个滤波器在频域进行卷积运算 //参数说明:输入的图片(ImageFFT) // 频域滤波器(Filter) //运算后输出的结果 rft_generic(ImageConcol,ImageFiltered,’from_freq’,’n’,’real’,Width) //对滤波后的图片进行傅里叶反变换**Process the filtered imagegray_range_rect(ImageFiltered,ImageResult,10,10)//用一个矩形掩膜计算像素点的灰度范围 //参数说明:输入的图片(ImageFiltered) // 输出的灰度范围图(ImageResult) // 矩形掩膜大小(10,10)min_max_rect(ImageResult,ImageResult,0,Min,Max,Range)//判断区域内灰度值的最大和最小值 //参数说明:待分析图片区域(ImageResult) // 图片(ImageResult)// 被去除的直方图两边像素点所// 占总像素数的百分比(0)// 得到的最小值最大值及灰度值范围(Min,Max,Range)threshold(ImageResult,RegionDynThresh,max([5.55,Max*0.8]),255)//利用全局阈值对图像进行分割 //参数说明:输入的图片(ImageResult) // 分割后得到的区域(RegionDynThresh) // 阈值(max([5.55,Max*0.8]),255)// 公式:MinGray <= g <= MaxGrayconnection(RegionDynThresh,ConnectedRegions) //计算区域内的连通部分 //参数说明:输入的图片(RegionDynThresh) // 得到的连通区域(ConnectedRegions)select_shape (ConnectedRegions,SelectedRegions,’area’,’and’,4,99999)//根据指定的形态特征选择区域//参数说明:输入的图片(ConnectedRegions)// 满足条件的区域(SelectedRegions)// 将要计算的形态特征(’area’)// 独立特征间的连接关系(’and’)// 特征的最小限制(4)// 特征的最大限制(99999)union1(SelectedRegions,RegionUnion) //返回包含所有区域的集合 //参数说明:包含所有区域的待计算区域的图片(tedRegions) // 所有输入区域合(RegionUnion)closeing_circle(RegionUnion,RegionClosing,10)//用一个圆圈来封闭一个区域 //参数说明:将要被封闭的区域(RegionUnion) // 被封闭的区域(RegionClosing)// 圆圈的半径(10) connection(RegionClosing,ConnectedRegions1)select_shape(ConnectedRegions1,SelectedRegions1,’area’,’and’,10,99999)area_center(SelectedRegions1,Area,Row,Column) //计算区域的面积以及中心位置//参数说明:待计算的区域(SelectedRegions1) // 区域的面积(Area) // 区域中心的行(Row) // 区域中心的列(Column)**Display the resultsdev_display(Image) //显示原图 Number := |Area| //将区域面积赋给Number用于后面检查是否存在缺陷 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)//构造一个与设定的圆弧或圆相一致的边界//参数说明:生成的边界(ContCircle)// 圆弧或圆的中心坐标(Row,Cloumn)// 圆弧或圆的半径(gen_tuple_const(Number,30))// 圆弧或圆的起始角度(gen_tuple_const(Number,0))// 圆弧或圆的结束角度(gen_tuple_const(Number,rad(360)))// 不明白是什么意思// 相邻两点间的距离(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,’ture’)if(Index#NumImages)disp_continue_message(WindowHandle,’black’,’ture’)stop()endifendfor算法讲解:在实际的表面缺陷检测系统中,针对的检测表面很多是具有一定纹理的比如:布匹、皮革、塑料等,针对这一类表面的检测就不能单纯依靠帧差或者背景差来完成,因为背景的纹理不可能和当前图像的纹理完全相同。

相关文档
最新文档