halcon定位学习基于形状的匹配

合集下载

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算子create_shape_model

(转)基于形状匹配的Halcon算子create_shape_model

(转)基于形状匹配的Halcon算⼦create_shape_model 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——缺陷检测常用方法总结(模板匹配(定位)+差分)

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有三种模板匹配方法:即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形状识别原理Halcon形状识别原理一、引言形状识别是计算机视觉领域中的一个重要研究方向,它可以通过对图像中的形状进行分析和识别,实现对不同物体的自动识别和分类。

Halcon是一种强大的机器视觉软件库,它提供了丰富的形状识别算法和工具,可以帮助开发者快速实现形状识别功能。

二、Halcon形状识别原理Halcon的形状识别原理基于模板匹配和形状匹配两种方法。

1. 模板匹配模板匹配是一种常用的形状识别方法,它通过将已知形状的模板与待识别图像进行匹配,从而找到最佳匹配结果。

Halcon中的模板匹配算法包括灰度匹配、彩色匹配和形状匹配等。

其中,形状匹配是一种基于二值图像的匹配方法,它通过将待识别图像和模板图像进行二值化处理,然后计算它们的形状特征,最后进行形状匹配,找到最佳匹配结果。

2. 形状匹配形状匹配是Halcon独有的形状识别方法,它是一种基于模板匹配的改进算法,可以更好地解决形状变化、光照变化等问题。

形状匹配的原理是将待识别图像和模板图像进行灰度化处理,然后计算它们的形状特征,包括区域面积、周长、中心距等。

接着,通过计算形状特征之间的相似度,找到最佳匹配结果。

三、Halcon形状识别应用Halcon形状识别广泛应用于工业自动化领域,例如产品质量检测、物体定位和识别等。

下面以产品质量检测为例,介绍Halcon形状识别的应用过程。

1. 数据采集需要采集一组有标记的产品样本图像作为训练数据,包括合格品和不合格品。

这些图像可以通过相机进行实时采集,也可以从图像数据库中获取。

2. 数据预处理对于采集到的图像数据,需要进行预处理,包括去噪、灰度化、二值化等操作。

预处理可以提高形状识别的准确性和效率。

3. 模板创建根据合格品的图像样本,可以创建一个或多个形状模板。

模板可以是二值图像,也可以是轮廓点集等形式。

模板的创建可以通过手动标记或自动提取等方式实现。

4. 形状匹配在进行形状匹配之前,需要设置一些匹配参数,如匹配算法、相似度阈值等。

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实现步骤

基于形状的模板匹配原理halcon实现步骤
基于形状的模板匹配是一种图像处理技术,其原理是使用形状模板与目标图像进行匹配,以实现目标检测、识别和定位等功能。

以下是基于形状的模板匹配的原
理和Halcon实现步骤:
原理:
基于形状的模板匹配的原理是将形状模板与目标图像进行匹配,以找到最佳的匹配结果。

该方法通常使用边缘特征、轮廓特征、矩特征等形状特征来描述模板和目标图像的形状特性。

在匹配过程中,通过计算模板与目标图像之间的相似度、距离等度量值,以确定最佳的匹配位置和旋转角度等参数。

Halcon实现步骤:
1.创建形状模板:首先需要准备一个形状模板,可以使用Halcon提供的函数和工具箱
创建或导入已有的模板。

2.加载目标图像:使用Halcon的图像处理函数加载需要进行匹配的目标图像。

3.预处理图像:对目标图像进行必要的预处理,如滤波、降噪、边缘检测等,以提高
匹配精度和稳定性。

4.特征提取:使用Halcon提供的特征提取函数,从形状模板和目标图像中提取形状特
征,如边缘、轮廓、矩等。

5.模板匹配:将提取出的形状特征与形状模板进行匹配,计算相似度、距离等度量值,
以确定最佳的匹配位置和旋转角度等参数。

6.结果输出:将匹配结果输出到控制台或保存到文件中,以便后续处理和应用。

需要注意的是,基于形状的模板匹配方法对于光照变化、噪声干扰、遮挡等情况具有一定的鲁棒性,但在旋转、缩放等情况下可能会出现匹配精度下降的问题。

因此,在实际应用中需要根据具体场景和需求选择合适的算法和参数设置。

openCV实现halcon的基于形状的匹配

openCV实现halcon的基于形状的匹配

openCV实现halcon的基于形状的匹配OpenCV是一个流行的计算机视觉库,提供了许多功能强大的图像处理和分析工具。

在OpenCV中,可以使用不同的方法实现基于形状的匹配,类似于Halcon库中的功能。

基于形状的匹配是通过比较目标形状和参考形状之间的相似性来寻找匹配项。

在OpenCV中,可以使用轮廓特征和模板匹配等技术来实现形状匹配。

首先,通过使用OpenCV的图像处理函数,可以对输入图像进行预处理,以提取感兴趣的区域或形状。

例如,可以使用二值化、边缘检测或形态学操作来提取目标形状的轮廓。

接下来,可以使用轮廓特征来比较目标形状和参考形状之间的相似性。

通过计算轮廓的形状描述符,如Hu矩、Zernike矩或Fourier描述符,可以量化形状的特征。

然后,可以使用形状描述符之间的距离度量来比较目标形状和参考形状之间的相似性。

在OpenCV中,可以使用函数如matchShapes(来计算轮廓的相似性度量。

该函数返回一个介于0和1之间的值,值越接近0表示形状越相似。

另一种常用的基于形状的匹配方法是模板匹配。

模板匹配是在输入图像中寻找与参考形状最相似的图像区域。

在OpenCV中,可以使用函数如matchTemplate(来执行模板匹配操作。

该函数使用滑动窗口的方式在输入图像上移动,并计算每个位置与参考形状的相似度得分。

最后,可以根据得分对匹配结果进行排序,并选择与参考形状相似度最高的匹配项作为最终的识别结果。

需要注意的是,在实现基于形状的匹配时,可能还需要考虑形变、旋转和缩放等因素。

为了提高匹配的准确性和鲁棒性,可以尝试使用图像归一化技术,如尺度不变特征变换(SIFT)或速度与环境不变特征(SURF)等。

总之,OpenCV提供了多种方法来实现基于形状的匹配,类似于Halcon库中的功能。

通过使用轮廓特征和模板匹配等技术,结合适当的图像处理和分析步骤,可以实现准确的形状匹配并应用于各种计算机视觉应用领域。

halcon模板匹配之形状匹配法

halcon模板匹配之形状匹配法

halcon模板匹配之形状匹配法
摘要:
一、Halcon 模板匹配简介
二、形状匹配法在Halcon 模板匹配中的应用
三、Halcon 模板匹配中的形状匹配方法
四、提高形状匹配成功率的参数设置
五、总结
正文:
Halcon 是一种常用的机器视觉开发软件,它提供了丰富的图像处理和分析功能。

在Halcon 中,模板匹配是一种常用的图像匹配方法,可以用于检测图像中的特定目标。

形状匹配法是Halcon 模板匹配的一种重要方法,它通过比较图像中目标的形状来确定匹配成功与否。

形状匹配法在Halcon 模板匹配中的应用十分广泛,它可以用于检测各种形状的目标,如矩形、圆形、椭圆形等。

在形状匹配过程中,Halcon 提供了多种形状匹配方法,如基于轮廓的匹配、基于灰度的匹配、基于组件的匹配和基于互相关的匹配等。

在Halcon 模板匹配中,形状匹配方法的具体实现方式如下:
1.创建模板:首先需要创建一个模板,用于与图像中的目标进行比较。

模板可以是预先定义好的形状,也可以是通过训练得到的形状模型。

2.提取目标特征:对图像中的目标进行特征提取,这一步通常涉及到图像分割、轮廓提取等操作。

3.形状匹配:将提取到的目标特征与模板进行比较,判断它们是否匹配。

如果匹配度满足预设阈值,则认为匹配成功。

在实际应用中,为了提高形状匹配的成功率,可以设置一些参数,如:尺度缩放范围、最小匹配目标个数、最低匹配分数等。

这些参数可以根据具体应用场景进行调整。

总之,形状匹配法在Halcon 模板匹配中具有重要作用,可以有效地检测图像中的特定目标。

halcon模板匹配之形状匹配法

halcon模板匹配之形状匹配法

halcon模板匹配之形状匹配法(最新版)目录一、引言二、形状匹配法的基本概念1.基于形状的模板匹配2.基于轮廓的模板匹配3.基于灰度的模板匹配4.基于组件的模板匹配5.基于互相关匹配三、基于形状和轮廓的匹配1.创建 ROI 标准形状2.模板匹配方法四、HALCON 模板匹配的实例1.适用场景2.对模板的要求3.相关函数五、提升匹配成功率的参数1.适应一定的尺度缩放2.匹配目标个数、最低分数六、结论正文一、引言在计算机视觉领域,模板匹配是一种常见的图像处理方法,其主要目的是通过比较参考图像(模板)与当前图像(目标),找到它们之间的相似性。

其中,HALCON 是一种广泛应用于工业自动化领域的图像处理软件,提供了丰富的模板匹配方法。

本文将介绍 HALCON 模板匹配中的形状匹配法。

二、形状匹配法的基本概念形状匹配法是基于图像的形状特征进行模板匹配的方法,主要包括以下几种:1.基于形状的模板匹配:该方法通过对模板和目标对象的形状特征进行比较,找到它们之间的相似性。

适用于形状特征明显且不变的场景。

2.基于轮廓的模板匹配:该方法通过对模板和目标对象的轮廓特征进行比较,找到它们之间的相似性。

适用于轮廓特征明显且不变的场景。

3.基于灰度的模板匹配:该方法通过对模板和目标对象的灰度特征进行比较,找到它们之间的相似性。

适用于灰度特征明显且不变的场景。

4.基于组件的模板匹配:该方法通过对模板和目标对象的组件特征进行比较,找到它们之间的相似性。

适用于组件特征明显且不变的场景。

5.基于互相关匹配:该方法通过对模板和目标对象的互相关特征进行比较,找到它们之间的相似性。

适用于互相关特征明显且不变的场景。

三、基于形状和轮廓的匹配在实际应用中,我们可以通过创建 ROI(感兴趣区域)标准形状,来实现基于形状和轮廓的模板匹配。

具体步骤如下:1.创建 ROI 标准形状:在 HALCON 中,可以使用 drawrectangle、drawcircle、drawellipse、drawline 等函数创建 ROI 标准形状。

HALCON形状匹配总结

HALCON形状匹配总结

HALCON形状匹配总结HALCON(High-level Algorithm CONnectivity)形状匹配是一种基于几何特征的图像处理技术,用于在图像中检测和识别目标形状。

它可以在不考虑大小、旋转和平移的情况下,快速准确地匹配待识别目标的形状。

HALCON形状匹配的原理是将目标形状与样本形状进行比较,通过计算形状之间的相似度,确定目标形状与样本形状的匹配程度。

它的核心思想是将形状表示为一组关键点,然后将这些关键点与样本形状的关键点进行比对。

关键点是形状中的局部特征,可以通过诸如角点、交点、轮廓曲率等方式来提取。

1.预处理预处理是指对输入图像进行一系列的图像处理操作,以便提高形状匹配的准确性。

其中包括图像灰度化、二值化、滤波、边缘检测等操作。

这些操作可以减少图像中的噪声、增强目标的边缘特征。

2.关键点提取关键点提取是指通过一些特定的算法从目标形状中提取出关键点。

这些关键点通常是形状中的重要特征,如角点、交点、曲率极大值等。

关键点可以用于表示形状的局部特征,方便后续的形状匹配。

3.特征描述特征描述是指将关键点和它们的局部信息转化为一组表示形状特征的向量。

这些向量可以用于比较形状之间的相似度。

常用的特征描述方法包括:形状上的点集、边缘链码、轮廓的矩描述等。

4.匹配匹配是指将待识别目标形状与样本形状进行比对,确定它们之间的相似度。

匹配过程可以通过计算形状特征的相似度值来实现。

常见的匹配算法包括:最小二乘、最近邻等。

匹配结果可以通过设定一个阈值来判定是否匹配成功。

1.高效快速:HALCON形状匹配算法具有高效快速的特点,可以在短时间内完成目标形状匹配任务。

2.鲁棒性强:HALCON形状匹配算法对图像中的噪声、失真等因素有良好的抗干扰性能,可以准确地匹配目标形状。

3.高度可定制化:HALCON形状匹配算法可以通过调整各个算法模块的参数,实现对匹配结果的控制和优化。

4.应用广泛:HALCON形状匹配算法可以应用于多个领域,如工业自动化、机器人导航等,可以实现对不同形状目标的自动检测和识别。

halcon find_shape_model 分数

halcon find_shape_model 分数

在HALCON机器视觉库中,find_shape_model算子是一个用于形状匹配的强大工具。

它通过搜索图像中与给定形状模型最相似的区域来定位目标对象。

在该函数调用后返回的结果中,除了找到的目标的位置(行、列坐标)和旋转角度外,还有一个非常关键的输出参数——匹配分数(Score)。

匹配分数详解:∙定义:匹配分数是衡量所找到的目标轮廓与模型轮廓之间相似度的一个数值量,通常介于0到1之间。

1代表完美匹配,即图像中的形状与模板完全一致;而接近0的值则表示形状间的差异较大,匹配程度低。

∙计算方式:匹配分数的具体计算方法依赖于所选择的拟合策略。

例如,在'least_squares'模式下,分数是基于最小二乘法计算得到的,表示模型轮廓点与图像轮廓点之间的距离平方和的某种加权平均值。

对于其他拟合策略,比如基于灰度信息或特定的距离度量,得分计算方式也会有所不同。

∙阈值设定:在实际应用中,通常会设置一个匹配分数阈值,只有当找到的目标的匹配分数超过这个阈值时,才会认为找到了有效的目标。

如果低于阈值,则可能是因为噪声或其他因素导致的误匹配,这种情况下系统可以决定不接受此次检测结果。

∙优化使用:为了提高检测的稳定性和准确性,可以通过调整算法参数如搜索范围、拟合精度等来优化匹配分数。

同时,对初始模板的质量和特征选取也非常重要,一个能够良好表征目标物体且具有鲁棒性的模板有助于提高匹配分数的有效性。

总结来说,find_shape_model算子返回的匹配分数是评估检测结果可靠性和目标匹配质量的关键指标,根据具体应用场景的需求,合理设定和解读匹配分数可以帮助我们实现更精确的形状匹配检测。

Halcon--基于形状的模板匹配

Halcon--基于形状的模板匹配

Halcon--基于形状的模板匹配基于形状的模板匹配--关于形状模板匹配的例程中【1】获取模板read_image (ModelImage, 'razors1')get_image_pointer1 (ModelImage, Pointer, Type, Width, Height)draw_rectangle1 (200000, Row1, Column1, Row2, Column2)dev_set_draw ('margin')disp_rectangle1 (200000, Row1, Column1, Row2, Column2)draw_rectangle1 (200000, Row11, Column11, Row21, Column21)disp_rectangle1 (200000, Row11, Column11, Row21, Column21)gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)gen_rectangle1 (Rectangle1, Row11, Column11, Row21, Column21)union2 (Rectangle, Rectangle1, RegionUnion)reduce_domain (ModelImage, RegionUnion, ImageReduced)此处的inspect_shape_model 未发现有什么作⽤,意义不明。

百度之后是说此算⼦对于检查模板的⾦字塔层数,NumLevels设置为⼏,显⽰就有⼏层,⼀般看第⼀层;Contast越⾼对轮廓的要求也越⾼,换⾔之轮廓数量也越少create_shape_model创建模板,参数如下:Template : : //reduce_domain后的模板图像NumLevels ,//⾦字塔的层数,可设为“auto”或0—10的整数AngleStart ,//模板旋转的起始⾓度AngleExtent ,//模板旋转⾓度范围, >=0AngleStep ,//旋转⾓度的步长, >=0 and <=pi/16Optimization ,//设置模板优化和模板创建⽅法Metric , //匹配⽅法设置Contrast ,//设置对⽐度MinContrast ://设置最⼩对⽐度ModelID ) //输出模板句柄inspect_shape_model (ImageReduced, ModelImages, ModelRegions,4, 30)create_shape_model (ImageReduced, 4, 0, 0, 'auto', 'none', 'use_polarity', 30, 10, ModelID)get_shape_model_contours (ModelContours, ModelID, 1)//获取模板轮廓【2】模板匹配find_shape_model( : : //搜索图像, //模板句柄, // 搜索时的起始⾓度, //搜索时的⾓度范围,必须与创建模板时的有交集, //最⼩匹配值,输出的匹配的得分Score ⼤于该值, //定义要输出的匹配的最⼤个数, //当找到的⽬标存在重叠时,且重叠⼤于该值时选择⼀个好的输出, //计算精度的设置,五种模式,多选2,3, //搜索时⾦字塔的层数: //贪婪度,搜索启发式,⼀般都设为0.9,越⾼速度快,容易出现找不到的情况, , , ) //输出匹配位置的⾏和列坐标、⾓度、得分。

5-HALCON_各种定位方法

5-HALCON_各种定位方法

模板参数-Optimization
相同环境下,Optimization取值不同时的运行时 间对比
◆ ◆ ◆ ◆ none point_reduction_low point_reduction_medium point_reduction_high 14.53 12.53 11.39 10.67 ms ms ms ms
◆ set_system('pregenerate_shape_models','true'/'false')
如果没有设置,默认为
◆ set_system('pregenerate_shape_models','false')
模板参数-Optimization
相同环境下,Optimization第二个参数取值不同时的运行时间对比
对比图太低
合适的对比度
对比度太高
模板参数-Contrast
参数Contrast不仅仅是对比度,根据数组元素数量不 同,其意义不同
◆ 1个元素时:128,对比度,直接提取边缘 ◆ 2个元素时:[100, 128],表示使用磁滞分割来提取边缘 ◆ 3个元素时:[100, 128, 10],前两个参数同2,最后一个参数表 示所提取边缘的最小长度为10.
multiple_scales.dev
print_check.dev
96ms
113ms
13s
1.1s
40ms
13ms
44ms
13ms
因此,建议当内存较大,就选预创建的方式,如 果CPU速度快,就可以选另外方式。
模板参数-Metric
照明与成像
背景白色

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编程-基于形状特征的模板匹配

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模板匹配学习篇Halcon模板匹配学习篇Halcon中模板匹配的总结基于灰度值的模板匹配基于相关性的模板匹配基于形状的模板匹配基于组件的模板匹配基于变形的模板匹配基于描述符的模板匹配基于相关性的模板匹配该⽅法使⽅⽅种基于⽅向量的归⽅化相关匹配法,在检测图像种匹配模板匹配。

与基于灰度值的匹配相⽅,该⽅法速度⽅较快,并且能够适应线光照变化。

匹配如下步骤:-(1)从参考图像上选择检测的⽅标。

-(2)创建模板。

创建⽅个归⽅化的相互关模型,create_ncc_model算⽅。

该操作符返回⽅个句柄参数Template:输⽅包括ROI的图像NumLevels:⽅字塔层数AngleStart and AngleExtent:模板可能出现在检测图像是哪个的旋转⽅度范围AngleStep:⽅度旋转变化的步长-(3)匹配结束之后,使⽅clear_ncc_model算⽅释放模板read_image (Image1,'E:/YZW/image/1.bmp')get_image_size (Image1, Width, Height)dev_close_window ()dev_open_window (0,0, Width/4, Height/4,'black', WindowHandle)dev_display (Image1)*选择ROI区域gen_rectangle1 (ROI_0,1322.32,449.966,1438.32,3877.97)area_center (ROI_0, Area, Row1, Column1)reduce_domain (Image1, ROI_0, ImageReduced)*创建基于相关性的匹配模板,输⽅模板图像和模型参数create_ncc_model (ImageReduced,'auto',-0.39,0.79,'auto','use_polarity', ModelID)*设置显⽅图像dev_set_draw ('margin')dev_set_line_width (3)dev_display (Image1)dev_display (ROI_0)stop ()*读取图像read_image (Image3,'E:/YZW/image/3.bmp')find_ncc_model (Image3, ModelID,-0.39,0.79,0.8,1,0.5,'true',0, Row, Column,Angle, Score)*dev_display_shape_matching_results (ModelID,'red', Row, Column, Angle,1,1,0)vector_angle_to_rigid (Row1, Column1,0, Row, Column,0, HomMat2D)affine_trans_region (ROI_0, RegionAffineTrans, HomMat2D,'nearest_neighbor')dev_display (Image3)dev_display (RegionAffineTrans)。

halcon模板匹配之形状匹配法

halcon模板匹配之形状匹配法

halcon模板匹配之形状匹配法Halcon是一种先进的图像处理软件,被广泛应用于计算机视觉领域。

在计算机视觉中,模板匹配是一种常用的方法,用于在一幅图像中寻找一个与给定模板形状相似的目标物体。

Halcon支持多种模板匹配方法,其中之一是形状匹配法。

形状匹配法是一种基于特征点的模板匹配方法。

它利用目标物体的形状信息进行匹配,而不是仅仅考虑灰度信息。

这种方法适用于目标物体的形状较为明显且不易受到光照等条件的影响。

在使用Halcon进行形状匹配之前,我们需要提前准备好模板图像和待匹配图像。

首先,我们需要选择一个与目标物体形状相似的模板图像作为参考。

然后,我们将待匹配图像加载到Halcon中,并在图像中提取出一系列的特征点。

Halcon中的形状匹配算法是基于特征点的,它会根据这些特征点的位置和几何特征来进行匹配。

在匹配过程中,Halcon会计算出每一个特征点在模板图像中的对应位置,并根据这些特征点的几何关系来确定匹配度。

形状匹配算法的核心是特征提取和特征匹配。

Halcon提供了多种特征提取函数,如角点检测、边缘检测等。

我们可以根据实际情况选择适合的特征提取函数。

特征匹配则是根据特征点的位置和几何关系来进行的。

Halcon中提供了一系列的匹配函数,如模板匹配、点对点匹配等。

形状匹配法的优点是对图像的光照变化、噪声等干扰具有较好的鲁棒性,可以获得较高的匹配准确度。

然而,该方法在目标物体形状复杂或存在遮挡时可能会出现匹配失败的情况。

因此,在实际应用中,我们需要考虑到目标物体的形状特征以及环境条件,并选择合适的匹配方法。

除了形状匹配法,Halcon还支持其他一些模板匹配方法,如基于灰度的模板匹配、基于形状的模板匹配等。

这些方法各有优劣,适用于不同的应用场景。

在实际工程中,我们可以根据需求选择最适合的模板匹配方法。

总之,Halcon的形状匹配法是一种常用的模板匹配方法,可以用于在一幅图像中寻找与给定模板形状相似的目标物体。

halcon形状匹配原理

halcon形状匹配原理

halcon形状匹配原理Halcon形状匹配原理引言Halcon是一种广泛应用于机器视觉领域的软件工具,它提供了强大的功能,可用于图像处理和分析。

其中,形状匹配是Halcon中的一个重要功能,它可以对图像中的目标进行形状匹配和识别。

本文将介绍Halcon形状匹配的原理及其应用。

一、形状匹配的基本原理形状匹配是通过比较目标物体的形状特征来实现目标识别的过程。

在Halcon中,形状匹配的基本原理是将目标物体的形状特征抽取出来,然后与预先定义好的模板进行比较,从而找到最佳匹配的结果。

1.1 形状特征提取在形状匹配过程中,首先需要从目标物体的图像中提取出其形状特征。

Halcon提供了多种形状特征提取的方法,如边缘提取、角点提取和轮廓提取等。

其中,轮廓提取是最常用的方法之一。

通过轮廓提取,可以得到目标物体的边界信息,进而用于后续的形状匹配。

1.2 形状特征描述形状特征提取后,需要对其进行描述,以便进行形状匹配。

Halcon 中常用的形状特征描述方法有区域面积、外接矩形、最小外接矩形、最小外接圆等。

这些特征可以有效地描述目标物体的形状信息,为后续的形状匹配提供依据。

1.3 形状匹配算法形状匹配算法是形状匹配的核心部分。

Halcon中采用了灰度不变矩和Hu矩等算法来进行形状匹配。

其中,灰度不变矩是一种基于图像灰度信息的形状描述方法,可以有效地抵抗光照变化带来的影响;而Hu矩则是一种基于形状几何信息的描述方法,可以对目标物体的形状进行更准确的匹配。

二、形状匹配的应用形状匹配广泛应用于机器视觉领域的目标检测、识别和定位等任务中。

下面将介绍几个典型的应用场景。

2.1 工业自动化在工业自动化中,形状匹配可以用于产品质量检测和装配过程中的定位与识别。

通过对产品的形状特征进行匹配,可以实现对产品的自动检测和定位,提高生产效率和产品质量。

2.2 医学图像处理在医学图像处理中,形状匹配可以用于病变区域的定位和识别。

通过对医学图像中的病变区域进行形状匹配,可以辅助医生进行疾病的诊断和治疗。

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

h a l c o n定位学习基于
形状的匹配
IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】
1、基于形状的匹配
1>创建ROI?
使用Halcon算子可以方便的设置ROI?
标准形状?
◆draw_rectangle1/2
◆draw_circle
◆draw_ellipse
◆draw_line
任意形状?
◆draw_region
◆draw_polygon
生成标准ROI?
◆gen_rectangle1/2
◆gen_circle
◆gen_ellipse
◆gen_region_line
通过XLD创建AOI?
◆gen_region_contour_xld
◆gen_region_polygon_xld
2>生成ROI
根据创建模板时得到的数据,生成ROI区域,例如
gen_rectangle2(ROI,Row,Column,Phi,Length1,Length2)
3>修正ROI
修正函数?
◆erosion_*减小ROI?
◆dilation_*扩大ROI?
◆shape_trans形状转换?
◆boundary像素级边界?
◆move_region移动区域到新位置?
组合?
◆Intersection交集?
◆Difference差集?
◆Union2并集
4>直接创建模板
create_shape_model(
Template,
参数Optimization
一些模板包含了太多像素点,这导致
◆模板过大?
◆增加执行时间?
◆增加了内存需求?
参数Optimization用来减少这些点?
◆none不减少像素?
◆point_reduction_low大约一半点?
◆point_reduction_medium大约1/3?
◆point_reduction_high大约1/4?
减少点可能导致的问题?
◆可能导致无法创建高层金字塔?
◆有可能会降低结果的精度和准确度原则?
◆边缘较多时才减少?
相同环境下,Optimization取值不同时的运行时间对比?




参数-MinContrast
参数MinContrast是在查找模板的时候,来减少“有害”边缘的。

它的值可通过下面方法得到
◆estimate_noise函数?
◆inspect_shape_model函数
5>模板参数-程序获取
determine_shape_model_params(
Template,模板
‘auto’,金字塔层数
0,起始角度
rad(360),角度范围
,缩小范围?
,放大范围
‘auto’,减少像素的方法
‘use_polarity’,极性
‘auto’,对比度
‘auto’,最小对比度
‘all’,Whichvalues
ParameterName,Nameofvalues ParameterValue)Values
6>通过Dxf文件创建模板
通过像素轮廓可以直接创建模板?
◆read_contour_xld_dxf
◆create_shape_model_xld
◆create_scaled_shape_model_xld
◆create_aniso_shape_model_xld
7>边界处理
HALCON提供了两种边界处理方法? set_system(’border_shape_models’,’false‘)◆模板必须在roi内?
◆靠近边缘部分会被裁减?
set_system(’border_shape_models’,’true‘)◆模板可以部分在ROI外面?
◆注意:分值会降低。

相关文档
最新文档