halcon基于边缘的模板匹配算法
halcon多模板匹配方法
halcon多模板匹配方法【最新版5篇】篇1 目录1.引言2.Halcon 软件概述3.模板匹配方法1.基于组件的匹配2.基于灰度值的匹配3.基于形状的匹配4.模板匹配的步骤1.读入图片2.选取 ROI3.预处理4.得到模板区域5.创建模板6.保存模板5.参数优化1.影响模板搜索和匹配的参数2.协调参数以提高匹配精度6.总结篇1正文一、引言在计算机视觉领域,模板匹配是一种常用的图像处理方法,其主要目的是在一个图像中查找与已知的模板图像相匹配的子图像。
Halcon 是德国 MVTec 公司开发的一款机器视觉开发软件,提供了许多实用的图像处理功能,其中包括多种模板匹配方法。
本文将对 Halcon 中的多模板匹配方法进行详细介绍。
二、Halcon 软件概述Halcon 是一款功能强大的机器视觉软件,它具有丰富的图像处理功能,可以满足各种图像分析和处理任务的需求。
Halcon 提供了多种模板匹配方法,包括基于组件的匹配、基于灰度值的匹配和基于形状的匹配等,以适应不同的图像特征和应用场景。
三、模板匹配方法1.基于组件的匹配:该方法通过对图像中的组件(如边缘、角点等)进行匹配,找到与模板中相应组件相匹配的子图像。
2.基于灰度值的匹配:该方法通过比较图像中相应区域的灰度值,找到与模板中灰度值相匹配的子图像。
3.基于形状的匹配:该方法通过比较图像中相应区域的形状特征,如轮廓、纹理等,找到与模板中形状特征相匹配的子图像。
四、模板匹配的步骤1.读入图片:首先,需要读入待处理的图像。
2.选取 ROI:在图像中选取感兴趣区域(ROI),以减少计算量。
3.预处理:对 ROI 进行预处理,如阈值处理、连接、选择形状等,以提高匹配精度。
4.得到模板区域:在预处理后的 ROI 中,提取用于匹配的模板区域。
5.创建模板:根据提取的模板区域,创建模板图像。
6.保存模板:将创建好的模板图像保存,以便后续匹配使用。
五、参数优化1.影响模板搜索和匹配的参数:在模板匹配过程中,一些参数会影响到模板的搜索和匹配效果,如旋转角度、缩放因子、灰度值阈值等。
HALCON形状匹配总结
HALCON形状匹配总结Halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类本文只对形状匹配做简要说明和补充:Shape_Based匹配方法:上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。
先要补充点知识:形状匹配常见的有四种情况一般形状匹配模板shape_model、线性变形匹配模板planar_deformable_model、局部可变形模板local_deformable_model、和比例缩放模板Scale_model第一种是不支持投影变形的模板匹配,但是速度是最高的,第二种和第四种是支持投影变形的匹配,第三种则是支持局部变形的匹配。
一般形状匹配模板是最常用的,模板的形状和大小一经制作完毕便不再改变,在查找模板的过程中,只会改变模板的方向和位置等来匹配目标图像中的图像。
这个方法查找速度很快,但是当目标图像中与模板对应的图像存在比例放大缩小或是投影变形如倾斜等,均会影响查找结果。
涉及到的算子通常为create_shape_model 和find_shape_model线性变形匹配模板planar_deformable_model是指模板在行列方向上可以进行适当的缩放。
行列方向上可以分别独立的进行一个适当的缩放变形来匹配。
主要参数有行列方向查找缩放比例、图像金字塔、行列方向匹配分数(指可接受的匹配分数,大于这个值就接受,小于它就舍弃)、设置超找的角度、已经超找结果后得到的位置和匹配分数线性变形匹配又分为两种:带标定的可变形模板匹配和不带标定的可变形模板匹配。
涉及到的算子有:不带标定的模板:创建和查找模板算子create_planar_uncalib_deformable_model和find_planar_uncalib_deformable_model带标定模板的匹配:先读入摄像机内参和外参read_cam_par 和read_pose 创建和查找模板算子create_planar_calib_deformable_model和find_planar_calib_deformable_model局部变形模板是指在一张图上查找模板的时候,可以改变模板的尺寸,来查找图像上具有局部变形的模板。
Halcon中模板匹配方法的总结归纳
Halcon中模板匹配方法的总结归纳基于组件的模板匹配:应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合。
算法步骤:1.获取组件模型里的初始控件gen_initial_components()参数:ModelImage [Input] 初始组件的图片InitialComponents [Output] 初始组件的轮廓区域ContrastLow [Input] 对比度下限ContrastHigh [Input] 对比度上限MinSize [Input] 初始组件的最小尺寸Mode[Input] 自动分段的类型GenericName [Input] 可选控制参数的名称GenericValue [Input] 可选控制参数的值2.根据图像模型,初始组件,训练图片来训练组件和组件相互关系train_model_components()3.创建组件模型create_trained_component_model()4.寻找组件模型find_component_model()5.释放组件模型clear_component_model()基于形状的模板匹配:应用场合:定位对象内部的灰度值可以有变化,但对象轮廓一定要清晰平滑。
1.创建形状模型:create_shape_model()2.寻找形状模型:find_shpae_model()3.释放形状模型:clear_shape_model()基于灰度的模板匹配:应用场合:定位对象内部的灰度值没有大的变化,没有缺失部分,没有干扰图像和噪声的场合。
1.创建模板:create_template()2.寻找模板:best_match()3.释放模板:clear_template()基于互相关匹配:应用场合:搜索对象有轻微的变形,大量的纹理,图像模糊等场合,速度快,精度低。
1.创建模板:create_ncc_model()2.寻找模板:find_ncc_model()3.释放模板:clear_ncc_model()基于变形匹配:应用场合:搜索对象有轻微的变形。
Halcon编程-基于形状特征的模板匹配
Halcon编程-基于形状特征的模板匹配halcon软件最⾼效的⼀个⽅⾯在于模板匹配,号称可以快速进⾏柔性模板匹配,能够⾮常⽅便的⽤于缺陷检测、⽬标定位。
下⾯以⼀个简单的例⼦说明基于形状特征的模板匹配。
为了在右图中,定位图中的三个带旋转箭头的圆圈。
注意存在,位置、旋转和尺度变化。
上halcon程序1 * This example program shows how to find scaled and rotated shape models.2 dev_update_pc ('off')3 dev_update_window ('off')4 dev_update_var ('off')5 read_image (Image, 'green-dot')6 get_image_size (Image, Width, Height) 获取了图像⼤⼩7 dev_close_window ()8 dev_open_window (0, 0, Width, Height, 'black', WindowHandle)9 dev_set_color ('red')10 dev_display (Image)11 threshold (Image, Region, 0, 128) 对图像进⾏⼆值化12 connection (Region, ConnectedRegions) 区域⽣长得到连通域13 select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10000, 20000) 通过⾯积进⾏筛选,得到⾥⾯的圆14 fill_up (SelectedRegions, RegionFillUp) 对圆进⾏填充15 dilation_circle (RegionFillUp, RegionDilation, 5.5) 对填充区域进⾏膨胀16 reduce_domain (Image, RegionDilation, ImageReduced) ROI操作得到imagereduced17 create_scaled_shape_model (ImageReduced, 5, rad(-45), rad(90), 'auto', 0.8, 1.0, 'auto', 'none', 'ignore_global_polarity', 40, 10, ModelID)//基于区域创建匹配模型,得到模型的ID modelID18 get_shape_model_contours (Model, ModelID, 1) 基于模型ID 得到模型的轮廓 model19 area_center (RegionFillUp, Area, RowRef, ColumnRef) 获得⾥⾯圆中⼼位置,相对于全图来说20 vector_angle_to_rigid (0, 0, 0, RowRef, ColumnRef, 0, HomMat2D) //vector_angle_to_rigid只需要⼀个点对及⼀个⾓度对即可计算刚性变换矩阵,所以可利⽤find_shape_model的结果//HomMat2D 通过顶点得到其变换矩阵21 affine_trans_contour_xld (Model, ModelTrans, HomMat2D) //对XLD轮廓(contour)进⾏⼀个任意⼆维仿射变换。
HALCON形状匹配总结
HALCON形状匹配总结Halcon有三种模板匹配方法:即Component-Based. Gray-Value-Based> Shaped based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配, 此外还有变形匹配和三维模型匹配也是分属于前面的大类本文只对形状匹配做简要说明和补充:Shape. Based匹配方法:上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。
先要补充点知识:形状匹配常见的有四种情况一般形状匹配模板shape_model.线性变形匹配模板planar deformable, model 局部可变形模板local deformable model.和比例缩放模板 Scale model 第一种是不支持投影变形的模板匹配,但是速度是最高的, 第二种和第四种是支持投影变形的匹配,第三种则是支持局部变形的匹配。
一般形状匹配模板是最常用的,模板的形状和大小一经制作完毕便不再改变,在查找模板的过程中,只会改变模板的方向和位置等来匹配目标图像中的图像。
这个方法查找速度很快,但是当目标图像中与模板对应的图像存在比例放大缩小或是投影变形如倾斜等,均会影响查找结果。
涉及到的算子通常为create shape model 和 find shape model线性变形匹配模板planar deformable model是指模板在行列方向上可以进行适当的缩放。
行列方向上可以分别独立的进行一个适当的缩放变形来匹配。
主要参数有行列方向查找缩放比例、图像金字塔、行列方向匹配分数(指可接受的匹配分数,大于这个值就接受,小于它就舍弃)、设置超找的角度、已经超找结果后得到的位置和匹配分数线性变形匹配又分为两种:带标定的可变形模板匹配和不带标定的可变形模板匹配。
涉及到的算子有:不带标定的模板:创建和查找模板算子create_planar uncalib deformable model 和 find planar uncalib deformable model 带标定模板的匹配:先读入摄像机参和外参read cam par 和read_pose 创建和查找模板算子create_planar calib deformable model 和 find planar calib deformable model 局部变形模板是指在一图上查找模板的时候,可以改变模板的尺寸,来查找图像上具有局部变形的模板。
halcon 模板匹配结果按列排序算子
halcon 模板匹配结果按列排序算子
在HALCON中,可以使用算子`affine_trans_contour_xld`对模板匹配结果进行按列排序。
该算子的函数原型为`affine_trans_contour_xld(Contours : ContoursAffineTrans : HomMat2D : )`,其中`Contours`为输入的XLD轮廓,`ContoursAffineTrans`为转换后的XLD轮廓,`HomMat2D`为输入的转换矩阵。
仿射变换由`HomMat2D`中给出的齐次变换矩阵来描述,该矩阵可以使用`hom_mat2d_identity`、`hom_mat2d_scale`、`hom_mat2d_rotate`、`hom_mat2d_translate`等运算符创建,也可以是`vector_angle_to_rigid`等运算符的结果。
齐次变换矩阵的组成部分解释如下:图像的行坐标对应于定义变换矩阵的坐标系的x,列坐标对应于定义变换矩阵的坐标系的y。
这对于获得图像的右手坐标系是必要的。
特别是,这样可以确保在正确的方向上执行旋转。
注意,矩阵的(x,y)顺序与图像中坐标的通常(行、列)顺序相对应。
通过使用`affine_trans_contour_xld`算子,可以将任意仿射2D变换(如缩放、旋转、平移和倾斜)应用于轮廓中给定的XLD轮廓,并返回变换后的轮廓。
这样,就可以根据需要对模板匹配结果进行按列排序。
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模板匹配的案例:1. 准备模板图像和待匹配图像。
模板图像是参考图像,待匹配图像是需要进行匹配的图像。
2. 使用Halcon的create_template操作来创建模板。
这个操作会在模板图像上提取出特征,并将这些特征保存到一个模板文件中,以供后续的匹配使用。
3. 使用Halcon的find_template操作来进行模板匹配。
这个操作会在待匹配图像中找到与模板相似的区域,并返回一个包含匹配结果的数据结构。
4. 通过分析匹配结果,可以得到匹配的位置、角度、缩放因子等信息。
可以根据这些信息来进一步处理图像,如将匹配结果标记在图像上,或者计算两个匹配图像之间的差异。
下面是一个简单的Halcon模板匹配案例的代码:```read_image(模板图像, 模板图像对象)read_image(待匹配图像, 待匹配图像对象)create_template(模板图像对象, 模板参数)find_template(待匹配图像对象, 模板参数, 匹配结果)get_shape_model_origin(模板参数, 模板原点X, 模板原点Y) NumMatches := num_instances(匹配结果)for i := 1 to NumMatchesget_instance_contour(匹配结果, 匹配轮廓, i)get_match_result(匹配结果, 匹配位置X, 匹配位置Y, 匹配角度, 匹配缩放因子, i)// 对匹配位置、角度、缩放因子进行进一步处理endfor```这只是一个简单的模板匹配案例,实际使用时可能需要根据具体情况进行一些调整和优化。
Halcon提供了许多其他的操作和函数,可以根据需要进行进一步的图像处理和分析。
halcon模板匹配算法
Halcon模板匹配算法1. 算法概述模板匹配是一种常用的计算机视觉算法,它能够在图像中寻找与给定模板最相似的区域并进行定位。
Halcon是一款强大的机器视觉开发工具,提供了丰富的模板匹配功能,可以用于各种应用领域,如工业自动化、品质检测等。
2. 原理介绍Halcon模板匹配算法主要基于灰度图像进行处理。
其基本原理是通过将待匹配图像与模板图像进行相似度计算,找到最相似的区域,并输出其位置信息。
具体步骤如下: - 加载图像和模板:首先需要加载待匹配的图像和用于匹配的模板图像。
- 预处理:对加载的图像和模板进行预处理,如灰度化、滤波等。
这一步旨在提取出关键特征以便进行后续计算。
- 创建模板:根据预处理后的模板图像,使用Halcon提供的函数创建一个模板对象。
- 匹配:使用创建好的模板对象对待匹配的图像进行匹配操作。
Halcon提供了多种匹配函数,如find_shape_model、find_scaled_shape_model等,可以根据实际需求选择合适的函数。
- 结果输出:匹配完成后,可以获取到匹配的结果,如匹配区域的位置、相似度等信息。
根据这些信息可以进行后续的处理和判断。
3. 算法优势Halcon模板匹配算法具有以下几个优势: - 高效性:Halcon采用了高度优化和并行化的算法实现,能够在短时间内完成大量图像的匹配任务。
- 鲁棒性:Halcon提供了多种参数调整选项,能够适应不同场景下的光照变化、尺度变化等因素对匹配结果的影响。
- 易用性:Halcon提供了丰富的图形界面和编程接口,使得用户可以方便地进行算法调试和参数设置。
- 可扩展性:Halcon支持多种图像处理操作和其他机器视觉算法,可以与其他功能模块进行组合使用,满足复杂应用需求。
4. 应用场景Halcon模板匹配算法广泛应用于各种工业自动化和品质检测场景中。
以下是一些常见应用场景: - 产品质检:利用模板匹配算法可以对产品外观进行检测,如检测产品是否存在缺陷、是否符合规定的尺寸等。
基于HALCON的模板匹配方法总结
基于HALCON的模板匹配方法总结分类:halcon学习2013-06-26 16:02 47人阅读评论(0) 收藏举报halcon形状匹配算法德国MVTec公司开发的HALCON机器视觉开发软件,提供了许多的功能,在这里我主要学习和研究了其中的形状匹配的算法和流程。
HDevelop开发环境中提供的匹配的方法主要有三种,即Component-Based、Gray-Value-Based、Shape-Based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。
这三种匹配的方法各具特点,分别适用于不同的图像特征,但都有创建模板和寻找模板的相同过程。
这三种方法里面,我主要就第三种-基于形状的匹配,做了许多的实验,因此也做了基于形状匹配的物体识别,基于形状匹配的视频对象分割和基于形状匹配的视频对象跟踪这些研究,从中取得较好的效果,简化了用其他工具,比如VC++来开发的过程。
在VC下往往针对不同的图像格式,就会弄的很头疼,更不用说编写图像特征提取、模板建立和搜寻模板的代码呢,我想其中间过程会很复杂,效果也不一定会显著。
下面我就具体地谈谈基于HALCON的形状匹配算法的研究和心得总结。
1. Shape-Based matching的基本流程HALCON提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。
基本流程是这样的,如下所示:⑴首先确定出ROI的矩形区域,这里只需要确定矩形的左上点和右下点的坐标即可,gen_rectangle1()这个函数就会帮助你生成一个矩形,利用area_center()找到这个矩形的中心;⑵然后需要从图像中获取这个矩形区域的图像,reduce_domain()会得到这个ROI;这之后就可以对这个矩形建立模板,而在建立模板之前,可以先对这个区域进行一些处理,方便以后的建模,比如阈值分割,数学形态学的一些处理等等;⑶接下来就可以利用create_shape_model()来创建模板了,这个函数有许多参数,其中金字塔的级数由Numlevels指定,值越大则找到物体的时间越少,AngleStart和AngleExtent决定可能的旋转范围,AngleStep指定角度范围搜索的步长;这里需要提醒的是,在任何情况下,模板应适合主内存,搜索时间会缩短。
Halcon中模板匹配方法的总结归纳
Halcon中模板匹配⽅法的总结归纳基于组件的模板匹配:应⽤场合:组件匹配是形状匹配的扩展,但不⽀持⼤⼩缩放匹配,⼀般⽤于多个对象(⼯件)定位的场合。
算法步骤:1.获取组件模型⾥的初始控件 gen_initial_components()参数:ModelImage [Input] 初始组件的图⽚InitialComponents [Output] 初始组件的轮廓区域ContrastLow [Input] 对⽐度下限ContrastHigh [Input] 对⽐度上限MinSize [Input] 初始组件的最⼩尺⼨Mode[Input] ⾃动分段的类型GenericName [Input] 可选控制参数的名称GenericValue [Input] 可选控制参数的值2.根据图像模型,初始组件,训练图⽚来训练组件和组件相互关系 train_model_components()3.创建组件模型 create_trained_component_model()4.寻找组件模型 find_component_model()5.释放组件模型 clear_component_model()基于形状的模板匹配:应⽤场合:定位对象内部的灰度值可以有变化,但对象轮廓⼀定要清晰平滑。
1.创建形状模型:create_shape_model()2.寻找形状模型:find_shpae_model()3.释放形状模型:clear_shape_model()基于灰度的模板匹配:应⽤场合:定位对象内部的灰度值没有⼤的变化,没有缺失部分,没有⼲扰图像和噪声的场合。
1.创建模板:create_template()2.寻找模板:best_match()3.释放模板:clear_template()基于互相关匹配:应⽤场合:搜索对象有轻微的变形,⼤量的纹理,图像模糊等场合,速度快,精度低。
1.创建模板:create_ncc_model()2.寻找模板:find_ncc_model()3.释放模板:clear_ncc_model()基于变形匹配:应⽤场合:搜索对象有轻微的变形。
halcon常用的匹配算法
halcon常用的匹配算法摘要:1.halcon 简介2.匹配算法的定义与作用3.halcon 常用的匹配算法及其特点4.匹配算法的应用场景5.结语正文:【1.halcon 简介】Halcon 是德国MVTec 公司开发的一款图像处理软件库,它具有强大的处理性能和灵活的编程接口,被广泛应用于工业自动化、机器视觉等领域。
在Halcon 中,匹配算法是一种图像处理技术,用于在图像中查找与模板图像相似的区域。
匹配算法在物体识别、定位、检测等方面具有重要意义。
【2.匹配算法的定义与作用】匹配算法是一种图像处理技术,用于在图像中查找与模板图像相似的区域。
其主要作用是在物体识别、定位、检测等方面。
匹配算法的目的是在图像中找到与模板图像相似的区域,从而实现对物体的定位和识别。
【3.halcon 常用的匹配算法及其特点】Halcon 中常用的匹配算法包括以下几种:1.异或运算(XOR):异或运算是一种简单的匹配算法,它将模板图像与搜索图像进行逐位异或运算,得到匹配结果。
该算法简单易实现,但对噪声敏感。
2.算术运算(AND、OR):算术运算是将模板图像与搜索图像进行逐像素的加、减、与、或等运算,得到匹配结果。
该算法对噪声具有一定抗干扰能力,但计算量较大。
3.汉明距离(Hamming Distance):汉明距离是一种常用的匹配算法,它计算模板图像与搜索图像中对应像素之间的差的绝对值之和。
该算法计算简单,但对噪声敏感。
4.归一化相关系数(Normalized Cross Correlation):归一化相关系数是一种常用的匹配算法,它通过计算模板图像与搜索图像的归一化相关系数来评价二者之间的相似度。
该算法具有较好的抗噪声性能,但计算量较大。
5.最小二乘法(Least Squares):最小二乘法是一种常用的匹配算法,它通过计算模板图像与搜索图像之间的最小二乘距离来评价二者之间的相似度。
该算法具有较好的抗噪声性能,但计算量较大。
halcon模板形状匹配参数
NumLevels越大,找到匹配使用的时间就越小。
另外必须保证最高层的图像具有足够的信息(至少四个点)。
可以通过inspect_shape_model函数查看设置的结果。
如果最高层金字塔的消息太少,算法内部会自动减少金字塔层数,如果最底层金字塔的信息太少,函数就会报错。
如果设为auto,算法会自动计算金字塔的层数,我们可以通过get_shape_model_params 函数查看金字塔的层数。
如果金字塔的层数太大,模板不容易识别出来,这是需要将find_shape_model函数中MinScore和Greediness参数设置的低一些。
如果金字塔层数太少找到模板的时间会增加。
可以先使用inspect_shape_model函数的输出结果来选择一个较好的金字塔层数。
参数AngleStart、AngleExtent定义了模板可能发生旋转的范围。
注意模板在find_shape_model函数中只能找到这个范围内的匹配。
参数AngleStep定义了旋转角度范围内的步长。
如果在find_shape_model函数中没有指定亚像素精度,这个参数指定的精度是可以实现find_shape_mode函数中的角度的。
参数AngleStep的选择是基于目标的大小的,如果模板图像太小不能产生许多不同离散角度的图像,因此对于较小的模板图像AngleStep应该设置的比较大。
如果AngleExtent不是AngleStep的整数倍, 将会相应的修改AngleStep。
如果选择complete pregeneration ,不同角度的模板图像将会产生并保存在内存中。
用来存储模板的内存与旋转角度的数目和模板图像的的点数是成正比的。
因此,如果AngleStep 太小或是AngleExtent太大, 将会出现该模型不再适合(虚拟)内存的情况。
在任何情况下,模型是完全适合主存储器的,因为这避免了操作系统的内存分页,使得寻找匹配模板的时间变短。
halcon模板匹配原理
halcon模板匹配原理
Halcon是一种图像处理软件,它具有强大的功能和灵活的操作性,被广泛应用于人工智能、机器视觉等领域。
模板匹配是Halcon中的一个重要功能,它可以用来在一张图像中寻找与另一张图像相似的区域。
以下是halcon模板匹配原理的分步骤阐述。
1.准备模板图像和待匹配图像
首先,需要准备要进行模板匹配的两张图像:模板图像和待匹配图像。
模板图像是被匹配的模板,待匹配图像是需要在其中寻找模板的图像。
2.把模板图像加载到内存中
利用Halcon中的load_image函数,可以将模板图像加载到内存中。
3.计算模板图像的特征值
Halcon中有多种特征值可供选择,例如灰度平均值、二阶矩或Harris角等。
根据需要选择一种或多种特征值来描述模板图像。
4.把待匹配图像加载到内存中
同样,利用load_image函数,可以将待匹配图像加载到内存中。
5.计算待匹配图像的特征值
同样根据需要选择一种或多种特征值来描述待匹配图像。
6.在待匹配图像中搜索与模板图像相似的区域
利用Halcon中的find_shape_model函数,可以在待匹配图像中搜索与模板图像相似的区域。
该函数可以设置匹配的精度、匹配的区域等参数。
7.显示匹配结果
根据匹配结果,可以在待匹配图像上显示匹配区域,并且可以用Halcon中的disp_image函数将匹配结果可视化。
总之,Halcon模板匹配原理可以通过以上步骤的操作实现。
这在机器视觉、人工智能等领域有着广泛的应用。
HALCON形状匹配总结
HALCON形状匹配总结Halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类本文只对形状匹配做简要说明和补充:Shape_Based匹配方法:上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。
先要补充点知识:形状匹配常见的有四种情况一般形状匹配模板shape_model、线性变形匹配模板planar_deformable_model、局部可变形模板local_deformable_model、和比例缩放模板Scale_model第一种是不支持投影变形的模板匹配,但是速度是最高的,第二种和第四种是支持投影变形的匹配,第三种则是支持局部变形的匹配。
一般形状匹配模板是最常用的,模板的形状和大小一经制作完毕便不再改变,在查找模板的过程中,只会改变模板的方向和位置等来匹配目标图像中的图像。
这个方法查找速度很快,但是当目标图像中与模板对应的图像存在比例放大缩小或是投影变形如倾斜等,均会影响查找结果。
涉及到的算子通常为create_shape_model 和find_shape_model线性变形匹配模板planar_deformable_model是指模板在行列方向上可以进行适当的缩放。
行列方向上可以分别独立的进行一个适当的缩放变形来匹配。
主要参数有行列方向查找缩放比例、图像金字塔、行列方向匹配分数(指可接受的匹配分数,大于这个值就接受,小于它就舍弃)、设置超找的角度、已经超找结果后得到的位置和匹配分数线性变形匹配又分为两种:带标定的可变形模板匹配和不带标定的可变形模板匹配。
涉及到的算子有:不带标定的模板:创建和查找模板算子create_planar_uncalib_deformable_model和find_planar_uncalib_deformable_model带标定模板的匹配:先读入摄像机内参和外参read_cam_par 和read_pose 创建和查找模板算子create_planar_calib_deformable_model和find_planar_calib_deformable_model局部变形模板是指在一张图上查找模板的时候,可以改变模板的尺寸,来查找图像上具有局部变形的模板。
Halcon模板匹配
Halcon模板匹配使⽤find_scaled_shape_models来做模板匹配,发现⽹上竟然⼀点都找不到关于这个算⼦的⽂章,只有少数的find_scaled_shape_model相关的,但是我想同时做多个模板匹配,不想⼀个个来。
接昨天的那个问题,就是配置可接受的最⼩分数值,这个分数值明明远远低于实际得分,但是就是匹配不上的问题。
后来经过多此测试及重新阅读官⽅⽂档发现,多个模板,如果可接受最低分数都是相同的,那么确实可以只写⼀个值,问题到底在哪⾥呢?今天测试发现阈值调整为0.4之后,有不该被匹配上的部分匹配上了,这是⾮常糟糕的,这部分的得分为4.6左右,⼀般来说,真正能够匹配上的得分通常在0.8以上。
为了解决这个问题,我决定把阈值重新调整为0.5,不出所料,这⼀块确实匹配不上了,另⼏处应该匹配的也匹配不上了,简直是。
问题发现过程:找到了唯⼀⼀个halcon提供的包含该算⼦的例程,发现⾥⾯⽤的分数只有⼀个,没有⽤数组,排除这个原因;Maxoverlap和我设置的不相同,这个参数的涵义是可搜索到的模板实例之间最⼤的重叠,设置为相同值之后,没有效果;使⽤halcon hdevelop中的Matching助⼿,测试相同的图⽚和模板,阈值调整为0.5,能够匹配到,这就很奇怪了,助⼿使⽤的是find_scaled_shape_model,难道是这两个算⼦本⾝其实是不相同的?为了找到问题,插⼊代码,⼀个个参数对⽐。
最终发现是贪⼼算法的那个参数可能不恰当。
这个参数在0-1之间,越⼩搜索的越仔细,耗时越久;越⼤搜索的越不仔细,耗时越短。
之前是配置成了0.9,这是⼀个官⽅推荐值,⽂档上说⼀般来说得分在0.9以上的,配置成0.9的贪⼼算法,基本上都能找出来。
真是个坑,我有个图得分就有0.92,但是就是没有找出来。
⽽且官⽅那个例程上⽤的都是0.8。
后来通过⼀点点调⼩测试,最终确定为0.5,因为对耗时没有那么⾼的要求,暂定先⽤这个值,配上0.5的可接受的最低分数,测试⼀段时间看看效果。
halcon模板匹配算法原理
halcon模板匹配算法原理
Halcon模板匹配算法是一种用于在图像中寻找特定模式的技术。
其原理基于以下步骤:
1. 模板提取,首先,从给定的模板图像中提取特征,这些特征
可以是边缘、角点、颜色分布等。
这些特征将用于后续的匹配过程。
2. 图像预处理,对待匹配的图像进行预处理,例如去噪、灰度化、边缘检测等,以便提取图像中的特征以进行匹配。
3. 特征匹配,将模板图像中提取的特征与待匹配图像中的特征
进行比对,寻找相似的特征点或特征组合。
4. 匹配评分,根据匹配的特征点或特征组合,计算匹配的得分
或相似度,以确定模板在图像中的位置和旋转角度。
5. 匹配结果,根据匹配得分,确定模板在图像中的位置,并可
以进行后续的处理,例如目标定位、跟踪等。
总的来说,Halcon模板匹配算法通过提取模板和图像的特征,
进行特征匹配和评分,最终确定模板在图像中的位置和相似度,从而实现对特定模式的检测和定位。
halcon 中模板匹配的一般步骤
halcon 中模板匹配的一般步骤摘要:本文将介绍在HALCON中执行模板匹配的一般步骤。
模板匹配是一种图像处理技术,用于在图像中查找与预先定义的模板相似的区域。
本文将讨论HALCON软件中模板匹配的过程,包括预处理、特征提取、相似性计算和结果输出。
1. 安装和配置HALCON软件在开始模板匹配之前,确保已经正确安装了HALCON软件并正确配置了环境。
HALCON是一个强大的计算机视觉工具箱,提供了丰富的图像处理和计算机视觉功能,包括模板匹配。
2. 准备图像和模板首先,需要准备输入图像和要匹配的模板。
输入图像通常是一个较大的图像,而模板是一个较小的图像,通常包含感兴趣的特征或对象。
可以使用图像处理工具(如裁剪、缩放和旋转)来准备这些图像,以便在后续步骤中更好地进行匹配。
3. 预处理在进行模板匹配之前,通常需要对图像进行预处理,以减少噪声和不相关的区域。
预处理步骤可能包括滤波(如高斯滤波、中值滤波等)、去噪(如波器、边缘检测等)和平滑等。
这些步骤有助于提高匹配的准确性和效率。
4. 特征提取特征提取是从图像中提取有用信息的过程,以便在后续步骤中与模板进行比较。
在HALCON中,可以使用多种特征提取方法,如边缘检测、角点检测、轮廓提取等。
这些特征可以用于计算图像之间的相似性。
5. 相似性计算相似性计算是模板匹配过程中的关键步骤,用于确定输入图像中与模板最相似的区域。
在HALCON中,可以使用多种相似性度量方法,如欧氏距离、高斯距离、互相关等。
这些度量方法可以帮助找到合适的匹配结果。
6. 结果输出和评估一旦找到相似的图像区域,可以将匹配结果输出并进行评估。
在HALCON 中,可以使用各种评估指标(如匹配率、召回率等)来评估模板匹配的性能。
此外,还可以使用可视化工具(如直方图、伪彩色映射等)来展示匹配结果,以便更好地理解和处理数据。
7. 优化和调整在实际应用中,可能需要根据具体问题和需求对模板匹配过程进行优化和调整。
基于HALCON的模板匹配方法总结(转)
基于HALCON的模板匹配⽅法总结(转)很早就想总结⼀下前段时间学习HALCON的⼼得,但由于其他的事情总是抽不出时间。
去年有过⼀段时间的集中学习,做了许多的练习和实验,并对基于HDevelop的形状匹配的参数优化进⾏了研究,写了⼀篇《基于HDevelop的形状匹配算法参数的优化研究》⽂章,总结了在形状匹配过程中哪些参数影响到模板的搜索和匹配,⼜如何来协调这些参数来加快匹配过程,提⾼匹配的精度,这篇paper放到了中国论⽂在线了,需要可以去下载。
德国MVTec公司开发的HALCON机器视觉开发软件,提供了许多的功能,在这⾥我主要学习和研究了其中的形状匹配的算法和流程。
HDevelop开发环境中提供的匹配的⽅法主要有三种,即Component-Based、Gray-Value-Based、Shape-Based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。
这三种匹配的⽅法各具特点,分别适⽤于不同的图像特征,但都有创建模板和寻找模板的相同过程。
这三种⽅法⾥⾯,我主要就第三种-基于形状的匹配,做了许多的实验,因此也做了基于形状匹配的物体识别,基于形状匹配的视频对象分割和基于形状匹配的视频对象跟踪这些研究,从中取得较好的效果,简化了⽤其他⼯具,⽐如VC++来开发的过程。
在VC下往往针对不同的图像格式,就会弄的很头疼,更不⽤说编写图像特征提取、模板建⽴和搜寻模板的代码呢,我想其中间过程会很复杂,效果也不⼀定会显著。
下⾯我就具体地谈谈基于HALCON的形状匹配算法的研究和⼼得总结。
1. Shape-Based matching的基本流程HALCON提供的基于形状匹配的算法主要是针对感兴趣的⼩区域来建⽴模板,对整个图像建⽴模板也可以,但这样除⾮是对象在整个图像中所占⽐例很⼤,⽐如像视频会议中⼈体上半⾝这样的图像,我在后⾯的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后⾯再讲。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章主题:Halcon基于边缘的模板匹配算法探析
一、引言
在机器视觉领域,模板匹配是一种常用的图像处理方法,用于在一幅
图像中寻找特定的模式或对象。
而Halcon作为一款智能视觉软件库,其基于边缘的模板匹配算法备受关注。
本文将就Halcon基于边缘的模板匹配算法进行深入探讨,以帮助读者更全面地理解这一主题。
二、Halcon基于边缘的模板匹配算法概述
Halcon基于边缘的模板匹配算法是一种高级的模式识别技术,它通过检测图像中的边缘信息,并利用这些边缘特征进行模式匹配。
该算法
主要包括边缘提取、模板生成和匹配验证三个步骤。
1. 边缘提取
在Halcon中,边缘提取是通过边缘检测滤波器进行的。
常用的边缘检测算子包括Sobel、Prewitt和Canny等。
通过这些算子可以将图像
中的边缘特征提取出来,形成边缘模型。
2. 模板生成
在模板生成阶段,Halcon会通过提取的边缘信息来生成待匹配的模板。
模板的生成需要考虑到图像的尺度、旋转、光照等因素,以保证模板
的鲁棒性和准确性。
3. 匹配验证
匹配验证是模板匹配算法的核心步骤,Halcon基于边缘的模板匹配算法通过对图像进行模板匹配,并对匹配结果进行验证和优化,以确保
匹配的准确性和稳定性。
三、Halcon基于边缘的模板匹配算法的特点
相比于传统的模板匹配算法,Halcon基于边缘的模板匹配算法具有以下几点突出特点:
1. 鲁棒性强
由于边缘特征包含了物体的轮廓和形状等重要信息,因此Halcon基于边缘的模板匹配算法对光照、变形等因素的鲁棒性较强,能够更准确
地匹配目标对象。
2. 适用性广
Halcon基于边缘的模板匹配算法不受物体颜色、纹理等因素的影响,因此适用于各种场景和对象的匹配识别,具有较强的通用性和适用性。
3. 计算速度快
由于边缘特征的提取和匹配计算相对简单,Halcon基于边缘的模板匹配算法在计算速度上具有一定的优势,能够实现实时性要求较高的应
用场景。
四、个人观点与总结
在我看来,Halcon基于边缘的模板匹配算法在实际应用中具有广泛的前景。
它不仅可以应用于工业检测、自动化生产等领域,还可以在医
学影像、安防监控等领域发挥重要作用。
然而,也需要意识到基于边
缘的模板匹配算法在应对复杂场景和大尺度图像上仍存在一定的挑战,需要进一步改进和优化。
Halcon基于边缘的模板匹配算法是一种颇具潜力的图像处理技术,它的发展将为机器视觉领域带来更多可能性和机遇。
结语
通过对Halcon基于边缘的模板匹配算法的探讨,相信读者对这一主题已经有了更深入的理解。
在未来的学习和实践中,希望大家可以结合
案例和实际需求,更好地运用这一技术,推动机器视觉领域的发展与
创新。
五、Halcon基于边缘的模板匹配算法的应用案例
1. 工业自动化
在工业自动化领域,Halcon基于边缘的模板匹配算法可以应用于产品的质量检测和生产线上的自动化操作。
通过对产品图像进行模板匹配,可以实现对产品表面缺陷、尺寸偏差等问题的快速检测,提高产品质
量和生产效率。
2. 医学影像
在医学影像领域,Halcon基于边缘的模板匹配算法可以应用于医学影像的分析和识别。
可以用于医学影像中的组织结构分析、病变识别等
方面,帮助医生进行诊断和治疗。
3. 安防监控
在安防监控领域,Halcon基于边缘的模板匹配算法可以应用于视频监控图像的实时识别和跟踪。
通过对监控图像中的目标对象进行模板匹配,可以实现对可疑对象的自动识别和报警,提高监控效率和安全性。
六、Halcon基于边缘的模板匹配算法的发展展望
1. 深度学习整合
随着深度学习技术的发展,Halcon基于边缘的模板匹配算法可以整合深度学习模型,进一步提高匹配的准确性和鲁棒性。
通过学习丰富的
图像特征,可以更好地应对复杂场景和大尺度图像的匹配识别问题。
2. 实时性优化
随着智能视觉应用场景的不断扩大,对于实时性要求较高的场景,Halcon基于边缘的模板匹配算法需要进一步优化,提高匹配的速度和效率,以满足实时性要求。
3. 多模态匹配
未来Halcon基于边缘的模板匹配算法可以进一步发展多模态匹配技术,将边缘特征与颜色、纹理等多种特征进行融合,提高匹配的准确性和
鲁棒性,拓展匹配的适用范围和场景。
七、结语
通过对Halcon基于边缘的模板匹配算法的应用案例和发展展望的探讨,我们可以看到这一技术在各个领域都具有广阔的应用前景,并且未来
还有很大的发展空间和潜力。
希望在未来的学习和实践中,能够更好
地运用这一技术,推动机器视觉领域的发展与创新。