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

Halcon 边缘检测算子1. 引言边缘检测是计算机视觉中的一个重要任务,它在图像处理和分析中起着至关重要的作用。
边缘检测算子是用于检测图像中物体边缘的一种数学工具。
在本文中,我们将重点介绍Halcon边缘检测算子的原理、应用和优缺点。
2. Halcon 边缘检测算子的原理Halcon是一种功能强大的计算机视觉库,提供了多种边缘检测算子用于图像处理。
边缘检测的目标是找到图像中明显变化的区域,即物体的边缘。
Halcon边缘检测算子主要基于以下原理:2.1 灰度梯度法灰度梯度法是一种常用的边缘检测方法,它通过计算图像中像素灰度的变化率来检测边缘。
Halcon中的边缘检测算子可以根据不同的灰度梯度算法来实现边缘检测,如Sobel算子、Prewitt算子和Roberts算子等。
2.2 Canny算子Canny算子是一种经典的边缘检测算法,它通过多步骤的处理来提取图像中的边缘。
首先,Canny算子对图像进行高斯滤波以平滑图像。
然后,利用灰度梯度法计算图像的梯度幅值和方向。
接下来,根据梯度方向进行非极大值抑制,以保留边缘的细节。
最后,通过滞后阈值处理来提取最终的边缘。
3. Halcon 边缘检测算子的应用Halcon边缘检测算子在许多计算机视觉应用中都有广泛的应用。
下面我们将介绍几个常见的应用场景:3.1 目标检测边缘检测算子可以用于目标检测,通过提取图像中物体的边缘来实现目标的定位和识别。
在Halcon中,可以利用边缘检测算子结合其他图像处理算法来实现目标检测,如形状匹配和模板匹配等。
3.2 图像分割边缘检测算子可以用于图像分割,将图像分成不同的区域。
通过提取图像中不同区域之间的边缘,可以实现对图像进行分割和提取感兴趣的区域。
3.3 角点检测边缘检测算子可以用于角点检测,通过检测图像中的角点来定位物体的特征点。
在Halcon中,可以使用边缘检测算子结合角点检测算法来实现物体的特征提取和匹配。
3.4 图像增强边缘检测算子可以用于图像增强,通过提取图像中的边缘来增强图像的细节和对比度。
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的注射器针头缺陷检测方法

SOFTWARE 软 件2020第41卷 第11期2020年Vol. 41, No.110 引言注射器针头在生产加工过程中由于处理不当和制造工艺失误造成的缺陷,不仅不满足质量要求,甚至威胁到人的生命安全。
当前,国内医疗器械生产企业对于针头的质量检测大多数都采用人工目视的方法,这种方法不仅效率低下、检测精度较低,而且不能保障人民群众的用械安全。
的问题,熊邦书等人提出利用BP 神经网络实现针头在线缺陷检测[1]。
在预处理阶段采用中值滤波消除噪声干扰,经目标分割后,利用边界区域不变矩和边缘曲率提取样本特征并对BP 神经网络训练,该神经网络训练完成后便实现了注射器针头的缺陷检测,但实验选取的样本量过少以及检测速度能否满足企业实际生产的需求值得商榷。
华东交通大学的周佳[2]在预处理阶段通过中值滤波对针头图像进行平滑处理,并利用最大类间方差阈值法分割针头图像,接着通过形态学处理提取针头边缘信息,最后通过模板匹配实现对倒装针头的检测。
该方法取得了不错效果,但缺陷检测种类单一化,不能检测其它缺陷。
基于上述针头图像处理算法有待完善的问题,提出基于HALCON 的注射器针头缺陷检测方法。
作者简介:张宝愿(1994―),男,陕西榆林人,研究生,研究方向:人工智能机器视觉。
通讯作者:陈桦(1962―),男,上海人,工学博士,博士生导师,研究方向:数字化设计与制造。
基于HALCON 的注射器针头缺陷检测方法张宝愿 陈桦 张耿 茹岚 王日双(西安工业大学数字化制造实验室,陕西西安 710000)摘 要:针对当前大多数医疗器械企业对注射器针头的缺陷检测仍采用人工目测的方法检测的问题,提出了基于模板匹配实现倒装针头的检测。
再对被测针头通过Blob 分析、形态学运算得到边缘信息并拟合边缘曲线,最后设计识别算法实现对弯钩针头的检测。
实验结果表明:针头误检率为5%,倒装针头检测率100%,弯钩针头检测率100%,满足企业实际生产的需求。
halcon亚像素边缘提取原理

英文回答:Halcon ' s pixel edge extraction principle is based on a slight change in the greyscale values of each pixel in the image and the pixels around it. In the conventional pixel margin test, only the edge position of the pixel level can be obtained, and the fine edge position of the subpixel level cannot be obtained. The pixel edge extraction, on the other hand, is calculated by the interpolation of a small change in the greyscale value around the pixels, which allows the location of the edge of the subpixel level. This allows for more precise location information on the edges, and improves the accuracy and accuracy of the margin tests. This is in line with the strategy for the development of science, technology and innovation proposed by our party, which has helped to raise the level of science and technology and industrial manufacturing in the country.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 rward 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引言印刷业的标签大部分用来标识产品相关说明,且一般背 面自带胶。
海康 边缘缺陷检测原理

海康边缘缺陷检测原理
海康边缘缺陷检测原理主要是通过图像处理技术,对摄像头捕捉到的图像进行分析和处理,从而实现对产品表面的缺陷进行检测。
具体步骤如下:
1. 图像采集:首先,摄像头会捕捉到产品的图像,这些图像会被传输到计算机进行处理。
2. 图像预处理:在图像处理之前,需要对图像进行预处理,包括去噪、增强、分割等操作,以提高后续处理的准确性。
3. 特征提取:通过图像处理技术,从预处理后的图像中提取出有用的特征信息,如颜色、纹理、形状等。
4. 缺陷检测:根据提取出的特征信息,设计相应的算法,对产品表面进行缺陷检测。
如果发现有缺陷,系统会立即发出警报。
5. 结果分析:对检测结果进行分析,判断缺陷的类型、大小、位置等信息,以便进行后续的处理。
海康边缘缺陷检测系统采用了先进的图像处理技术和人工智能算法,能够实现高效、准确的缺陷检测,大大提高了生产效率和产品质
量。
halcon——缺陷检测常用方法总结(光度立体)

halcon——缺陷检测常⽤⽅法总结(光度⽴体)引⾔机器视觉中缺陷检测分为⼀下⼏种:blob分析+特征模板匹配(定位)+差分光度⽴体特征训练测量拟合频域+空间域结合:深度学习前⼀篇总结了频域与空间域的结合使⽤,本篇就光度⽴体的缺陷检测做⼀个总结。
光度⽴体在⼯业领域,表⾯检测是⼀个⾮常⼴泛的应⽤领域。
在halcon中,使⽤增强的光度⽴体视觉⽅法,三维表⾯检测被加强。
利⽤阴影可⽅便快速的检测物体表⾯的缺⼝或凹痕。
使⽤光度⽴体视觉⽅法可在复杂图像中轻松找到表⾯缺陷。
适⽤场景:光度⽴体法可以看作是2.5维,适⽤于检测⾦属物料上⾯的凹凸特征。
函数原理:1.通过photometric_stereo算⼦获得表⾯梯度图像,该算⼦可以得到表⾯梯度图像和反照率图像。
需要输⼊多张从不同⾓度照明所得到的图像。
2.通过derivate_vector_field算⼦获得⾼斯(平均)曲率图像,该算⼦中需要输⼊表⾯梯度图像。
光源:光度⽴体法不需要特殊的光源,只需要从不同的⾓度打光⽽已。
1 光度⽴体法的典型应⽤:光度⽴体法的典型应⽤是检测物体表⾯微⼩变化,例如,受打光⽅向影响的缺陷。
⽐如⾮平⾯的打印检测(个⼈理解:普通打光⽅式受光线影响特征成像不理想,可以通过光度⽴体法检测)。
值得注意的是:光度⽴体法不适⽤于绝对⾼度的重建,也就是说,它不能替代传统的3D重建算法,如对焦测距和激光三⾓测量。
2 光度⽴体法的局限性:光度⽴体法基于Woodham算法。
因此:⼀⽅⾯假定相机是⽆畸变成像,也就是说必须使⽤远⼼镜头或者长焦镜头。
另⼀⽅⾯假定每⼀个光源发射的光束都是平⾏且均匀的,也就是说必须使⽤具有均匀强度的远⼼照明光源,或者使⽤远距离的点光源代替。
此外,物体必须具有朗伯反射特性,即它必须以漫反射的⽅式反射⼊射光。
有镜⾯反射的物体或者区域(镜⼦或者光滑的表⾯)不能使⽤此⽅法,会得到⼀个错误的结果。
3 采集图像设置:带有远⼼镜头的相机必须与被测物体表⾯垂直安装,在采集多幅图像时,⼀定要保证相机和物体不被移动。
Halcon学习之边缘提取

Halcon学习之边缘提取展开全文转自:/2316220871/8a0eb9c733002oyv.ht ml从今天起不是所有新遇到的函数都加黑体,重要的我会写出参数对象并加粗,不重要的只是文字解释即可1, autobahn.hdev: Fast detection of lane markers控制语句MinSize:=30get_system('init_new_image', Information)得到当前halcon系统的参数值(这里执行后得到information的值为' true')set_system('init_new_image', 'false')gen_grid_region(Grid, MinSize,MinSize,'lines',512,512)gen_grid_region( : RegionGrid : RowSteps, ColumnSteps, Ty pe, Width,Height : )创建一个网格区域注意,这里用网格是为了减少处理的内容从而提高速度,如图是后面计算出来的边缘幅值clip_region(Grid, StreetGrid, 130,10,450,502)把一个region剪切成一个矩形。
读图并显示剪切后的网格。
for i:=0 to 28 by 1read_image( ActualImage, 'autobahn/scene_'+(i$'02'))注意:这里的i$ 意义是i的值去两位,即01, 02等等reduce_domain( ActualImage, StreetGrid, Mask)sobel_amp( Mask, Gradient,'sum_abs', 3)sobel_amp(Image : EdgeAmplitude : FilterType, Size : )计算边缘的幅值threshold( Gradient, Points, 20, 255)dilation_rectangle1(Points, RegionDilation, MinSize, MinSize) 使用矩形模板进行膨胀运算得到如图大致区域reduce_domain(ActualImage, RegionDilation, StripGray)threshold(StripGray,Strip, 190,255)把白色的线从候选区域中提取出来fill_up(Strip,RegionFillUp)填充内容显示endforset_system('init_new_image', ' true' )2, background_seg.hdev 从给定区域中找到背景的连通的区域read_imagesobel_ampthreshold得到提取出来的边缘Edgesbackground_seg(Edges,BackgroundRegions)background_seg(Foreground : BackgroundRegions : : )注意,这里Edges是前景区域,background_seg是为了根据给定的前景,找出连通的背景。
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作为一种常用的工业视觉处理软件,其在玻璃外观检测中的常用算法备受关注。
本文将对halcon玻璃外观检测中的常用算法进行介绍与分析。
二、灰度变换灰度变换是halcon玻璃外观检测中常用的一种算法。
该算法通过改变图像的亮度、对比度等参数来提取目标物体的特征,从而实现对玻璃外观的检测和分析。
通过对图像进行灰度变换,可以增强图像的对比度和清晰度,使得玻璃表面的瑕疵等问题更容易被检测出来。
三、边缘检测在halcon玻璃外观检测中,边缘检测也是一种常用的算法。
通过对图像进行边缘检测,可以提取出玻璃表面的边缘信息,从而实现对各种缺陷和瑕疵的检测。
边缘检测可以有效地识别出玻璃表面的不平整、划痕等问题,为后续的检测和分析提供了重要的依据。
四、形态学处理形态学处理是halcon玻璃外观检测中的另一种常用算法。
通过对玻璃图像进行膨胀、腐蚀、开运算、闭运算等形态学处理,可以对玻璃表面的各种缺陷进行更加精确和全面的检测。
形态学处理能够有效地分离出玻璃的各个部分,识别出各种不规则的形状和缺陷,为后续的分析和判断提供了重要的依据。
五、模板匹配在halcon玻璃外观检测中,模板匹配也是一种常用的算法。
通过建立所需检测的模板,并将其与待检测图像进行匹配,可以实现对玻璃表面的各种缺陷和瑕疵的快速检测和识别。
模板匹配能够有效地识别出玻璃表面的各种特定形状和图案,对生产中的问题进行及时排查和处理提供了重要的帮助。
六、光学字符识别光学字符识别是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学习(十)边缘检测(一)边缘检测的定义:使用数学方法提取图像像元中具有亮度值(灰度)空间方向梯度大的边、线特征的过程。
边缘是指周围像素灰度有阶跃变化或屋顶等变化的那些像素的集合。
图像的边缘对应着图像灰度的不连续性。
显然图像的边缘很少是从一个灰度跳到另一个灰度这样的理想状况。
真实图像的边缘通常都具有有限的宽度呈现出陡峭的斜坡状。
边缘的锐利程度由图像灰度的梯度决定。
梯度是指灰度变化的最快的方向和数量。
常见的边缘点有三种:第一种是阶梯形边缘 (Step-edge), 即从一个灰度到比它高好多的另一个灰度。
第二种是屋顶型边缘 (Roof-edge), 它的灰度是慢慢增加到一定程度然后慢慢减小。
还有一种是线性边缘 (Line-edge), 它的灰度从一级别跳到另一个灰度级别之后然后回来。
边缘检测的方法主要有以下几种:第一种检测梯度的最大值。
由于边缘发生在图像灰度值变化比较大的地方 ,对应连续情形就是说是函数梯度较大的地方,所以研究比较好的求导算子就成为一种思路。
Roberts 算子、 Prewitt 算子和 Sobel 算子等就是比较简单而常用的例子。
还有一种比较直观的方法就是利用当前像素邻域中的一些像素值拟合一个曲面 , 然后求这个连续曲面在当前像素处梯度。
从统计角度来说 , 我们可以通过回归分析得到一个曲面 , 然后也可以做类似的处理。
第二种是检测二阶导数的零交叉点。
这是因为缘处的梯度取得最大值 ( 正的或者负的 ), 也就是灰度图像的拐点是边缘。
从分析学上我们知道 , 拐点处函数的二阶导数是 0 。
第三种,统计型方法。
比如说利用假设检验来检测边缘中利用对二阶零交叉点的统计分析得到了图像中各个像素是边缘的概率,并进而得到边缘检测的方案。
1.sobel_amp(Image : EdgeAmplitude : FilterType, Size : )根据图像的一次导数计算图像的边缘程序如下:read_image (Image, 'fabrik')sobel_amp (Image, EdgeAmplitude, 'sum_abs', 3) threshold (EdgeAmplitude, Region, 10, 255)skeleton (Region, Skeleton)dev_display (Image)dev_set_color ('white')dev_display (Skeleton)ImageEdgeAmplitudeRegionSkeleton。
基于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缺陷检测常用方法总结

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中,边缘检测是一项非常重要的工作,而边缘连线算法则是边缘检测的关键步骤之一。
边缘连线算法可以将离散的边缘点连接成为一条完整的边缘线,为后续的特征提取和形状匹配提供了坚实的基础。
二、边缘检测的基本原理在了解边缘连线算法之前,我们首先应该了解边缘检测的基本原理。
边缘是图像中灰度变化明显的区域,在机器视觉领域中常常用于描述物体的轮廓和形状。
边缘检测的目的就是在图像中找到这些灰度变化明显的区域,并将其提取出来。
常用的边缘检测算法包括Sobel算子、Prewitt算子、Canny算子等。
这些算法通常是基于图像的灰度梯度和梯度方向进行计算的,可以有效地提取出图像中的边缘信息。
三、边缘连线的必要性在进行边缘检测之后,我们得到的是一些离散的边缘点。
但是在实际应用中,我们通常更希望得到一条完整的边缘线,以便于后续的处理和分析。
边缘连线就显得非常必要了。
通过边缘连线算法,我们可以将这些离散的边缘点连接成一条条光滑的曲线,更加准确地描述出图像中的边缘信息。
四、Halcon中的边缘连线算法Halcon中提供了一些强大的边缘连线算法,例如gen_contour_polygon、smooth_contours、approx_ch本人n和gen_contour_xld等。
这些算法可以根据具体的应用需求,选取适当的参数对边缘信息进行连线处理,从而得到较为准确的边缘线。
Halcon还提供了图像预处理、边缘检测、形状匹配等功能,可以与边缘连线算法配合使用,实现更为复杂的图像处理任务。
五、边缘连线算法的优势与传统的边缘检测相比,边缘连线算法具有如下优势:1. 提取更完整的边缘信息。
边缘连线算法可以将离散的边缘点连接成一条完整的边缘线,更加准确地描述出图像中的边缘信息。
2. 便于后续处理和分析。
完整的边缘线可以为后续的特征提取、形状匹配等工作提供坚实的基础,提高了图像处理的准确性和稳定性。
halcon缺陷检测基本步骤

Halcon缺陷检测的基本步骤及注意事项
Halcon缺陷检测的基本步骤包括以下几步:
1.数据收集和准备:收集具有缺陷和无缺陷的样本图像,确保样本图像能够
充分涵盖不同的缺陷类型和变化。
标记样本图像,将缺陷位置标记为感兴趣区域(ROI)。
根据需求对图像进行预处理,例如去噪、尺寸调整和增强等。
2.模型训练:使用Halcon的深度学习工具,如Deep Learning Assistant(DLA)
或HDevelop,创建一个深度学习模型。
这可以通过选择适当的网络结构和配置参数来完成。
将准备好的样本图像和其对应的标签加载到训练数据集中。
在Halcon中执行模型训练。
这将涉及到数据集的分割、数据增强、模型优化和迭代训练过程。
3.模型评估和调优:使用保留的测试数据集对训练的模型进行评估,计算指
标如准确率、召回率和F1得分等。
根据评估结果,对模型进行调优。
可以尝试不同的网络结构、超参数设置和训练策略等。
4.缺陷检测:使用训练好的模型对新的图像进行缺陷检测。
加载模型并使用
Halcon提供的API调用模型进行推断。
传入待检测的图像作为输入。
模型将输出一个缺陷概率图或边界框,标记出可能存在缺陷的区域。
根据需要,可以根据阈值筛选概率图或边界框,确定最终的缺陷检测结果。
5.结果分析和优化:对缺陷检测结果进行分析和验证。
可以与人工标注的结
果进行比较,评估算法的性能。
根据分析结果,对算法进行优化。
可能需要调整模型参数、增加样本数量、改进预处理步骤等。
基于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学习笔记之缺陷检测(一)例程: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中的亚像素边缘提取在许多机器视觉应用中,边缘提取是一项非常重要的任务。
Halcon提供了一种基于亚像素的边缘提取方法,可以对图像中的边缘进行更精细的分析和定位。
该方法基于一种叫做Sobel算子的边缘检测算法。
通常情况下,Sobel算子是一个3×3的矩阵,通过卷积运算可以得到图像中每个像素点的梯度值,从而确定边缘的位置。
但是,这种标准的Sobel算子只能提取像素级别的边缘,而无法分析亚像素级别的边缘信息。
而Halcon中的亚像素边缘提取函数可以通过对标准Sobel算子进行改进,提取图像中的亚像素级别的边缘信息。
具体实现方法是,在标准Sobel算子的基础上,再加上一组空间平移系数,从而实现对像素的微小平移。
这样,就可以提取出亚像素级别的边缘信息。
需要注意的是,亚像素边缘提取需要对图像进行插值处理,这会增加运算时间和计算量。
因此,在使用该功能时需要注意处理效率和算法精度的平衡。
使用场景Halcon中的亚像素边缘提取功能,可以应用于许多机器视觉应用中,如:1. 检测高精度零部件的表面缺陷和异物:亚像素边缘提取可以精细地分析图像中的表面缺陷和异物,从而实现高精度的零部件检测。
2. 提取图像中的微小边缘:在一些需要精细分析图像的应用中,像素级别的边缘信息往往无法满足要求。
亚像素边缘提取则可以提取出微小的亚像素级别的边缘信息,从而更好地满足应用的要求。
3. 计算物体运动速度和方向:亚像素边缘提取可以更精细地分析图像中物体的运动轨迹,从而计算出物体的运动速度和方向。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、边缘提取
1、设置ROI兴趣区域
2、快速二值化,并连接相邻区域。
这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来
3、提取最接近目标区域的轮廓.常用函数有boundary,gen_contour_region_xld
4、根据自己的需求提取需要的初步轮廓
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’。