Halcon表面划伤检测实例
halcon边缘检测例子

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的重要功能之一,能够帮助用户实现对图像中目标的自动检测和定位。
下面列举了十个关于Halcon目标检测的案例,以展示其在实际应用中的优势和灵活性。
1. 工业品质检测:在工业生产线上,Halcon可以通过目标检测技术实现对产品外观缺陷的检测,如表面瑕疵、颜色偏差等。
通过训练算法,Halcon能够快速准确地检测出产品中的异常情况,提高生产效率和产品质量。
2. 药品包装检测:在药品生产过程中,Halcon可以应用于药品包装的检测和识别。
通过目标检测算法,Halcon可以检测药品包装盒上的标签和二维码等信息,确保药品的包装符合规定标准,从而保证药品的质量和安全性。
3. 路标识别:在智能交通系统中,Halcon可以应用于路标的识别和检测。
通过训练模型,Halcon能够准确地识别出道路上的各种标识,如交通信号灯、限速标志等,为智能驾驶系统提供准确的环境感知能力。
4. 农作物病害检测:在农业领域,Halcon可以应用于农作物病害的检测和识别。
通过图像处理和机器学习算法,Halcon能够自动识别出农作物叶片上的病害,提前预警农民并采取相应的措施,保证农作物的健康生长。
5. 人脸识别:在安防领域,Halcon可以应用于人脸识别系统的开发。
通过目标检测和特征提取算法,Halcon能够对图像中的人脸进行准确的识别,实现对人员身份的自动判断,提高安全性和便利性。
6. 垃圾分类:在环境保护领域,Halcon可以应用于垃圾分类系统的开发。
通过目标检测和图像识别算法,Halcon能够自动识别垃圾中的有害物质,并将其分离出来,实现自动化的垃圾分类,提高垃圾处理的效率和准确性。
7. 医学影像分析:在医疗领域,Halcon可以应用于医学影像的分析和识别。
通过目标检测和图像分割算法,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表面划伤检测实例

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标定例子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标定可以提高机器视觉系统的精度和稳定性,但仍然存在一些局限性,如对标定板的要求较高、对标定图像的要求较严格等。
基于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的刹车片尺寸和表面缺陷检测系统

t e r i s t i c s o f t h e mo r p h o l o y g a n d g r a y v a l u e o f t h e b r a k e,a n d u s e s e d g e d e t e c t i o n a n d l o c a l t h r e s h o l d s e g me n t a t i o n a l g o —
测 系统 该 系统充分利 用了刹车片的形 态学和灰度值特征 , 运 用边缘提 取和局 部 阈值 分割算 法 , 定位 出刹车 片外边缘 , 最终计算 出刹车片尺寸 , 并标记 出缺 陷位 置。通过 对 2 0 0张图像 样本进 行测试 , 检测 系统将尺 寸误差控 制在 0 . 4 7 %, 刹
S h a n g h a i 2 0 0 0 9 3,C h i n a )
Ab s t r a c t A d e t e c t i o n s y s t e m b a s e d o n ma c h i n e v i s i o n s o f t wa r e n a me d HAL CON i s p r o p o s e d i n t h e p a p e r i n f a c e o f t h e l o w e ic f i e n c y o f t h e s i z e a n d i mp e fe r c t i o n d e t e c t i o n o f t h e b r a k e .T h e s y s t e m ma k e s f u l l u s e o f t h e e h a r a c —
r i t h m .Th e s y s t e m l o c a t e s p o s i t i o n o f ma r g i n.c a l c u l a t e s t h e s i z e o f b r a k e a n d ma r k s t h e l o c a t i o n o f s u r f a c e d e f e c t f i . n a l l y 。 Ac c o r d i n g t o t h e r u n n i n g r e s u l t o f t h e s y s t e m wi t h t h e i n p u t o f 2 0 0 ig f u r e s a mp l e s ,i t h a s a v e r yh i g h a c c u r a c y
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)。