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中模板匹配方法的总结归纳基于组件的模板匹配:应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合。
算法步骤: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定位学习基于形状的匹配
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_xld2>生成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是在查找模板的时候,来减少“有害”边缘的。
halcon形状匹配用圆匹配一半圆的案例
形状匹配是计算机视觉领域中的一个重要技术,它可以用于在图像中找到特定形状的目标,并且可以在不同尺度和旋转角度下自适应地进行匹配。
Halcon作为一种常用的计算机视觉软件评台,也提供了形状匹配的功能。
在实际应用中,形状匹配的需求是多种多样的,本文将针对一种特殊的案例进行讨论,即使用圆去匹配一半圆的情况。
1. 背景在工业生产中,常常会遇到需要检测或定位产品中的零部件或特定形状的需求。
其中,一种常见的情况是需要检测或定位圆形零件的一半圆形。
具体地说,我们需要在图像中找到一个半圆形的目标,并且得出它的位置和角度信息。
2. 常规方法在Halcon中,进行形状匹配通常使用find_shape_model和find_scaled_shape_model等函数。
这些函数可以通过预先建立的模板图像来寻找目标图像中的匹配对象,并且可以进行多尺度、角度的自适应匹配。
然而,针对半圆形的匹配通常会有一定的挑战,因为传统的形状模板可能不够精确地描述半圆形的特征。
3. 圆匹配一半圆的方案针对这一问题,我们提出了一种新的方案,即使用圆形模板去匹配半圆形目标。
具体地,我们首先根据半圆形目标的特点,构建一个圆形模板。
在进行形状匹配时,我们可以通过调整匹配的分数阈值和最小匹配数量来筛选出符合要求的半圆形目标。
4. 实验结果我们进行了一系列的实验来验证这一方案的可行性。
实验中,我们选取了多幅包含半圆形目标的图像,并分别采用了传统的半圆形模板和我们提出的圆形模板进行形状匹配。
实验结果表明,我们提出的方案不仅可以有效地检测出半圆形目标,而且对目标的尺度和角度变化具有很好的适应性。
5. 结论我们提出了一种新的方案,即使用圆形模板去匹配半圆形目标。
通过一系列的实验验证,我们证明了这一方案的可行性和有效性。
这一方案不仅可以满足工业生产中对半圆形目标的检测和定位需求,而且还具有更好的泛化性和适应性。
在实际应用中,我们相信这一方案可以发挥重要作用,为工业生产带来更高效、更精准的形状匹配技术。
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】获取模板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,越⾼速度快,容易出现找不到的情况, , , ) //输出匹配位置的⾏和列坐标、⾓度、得分。
基於HALCON的模板匹配方法总结
基於HALCON的模板匹配方法總結基於HALCON的模板匹配方法總結很早就想總結一下前段時間學習HALCON的心得,但由於其他的事情總是抽不出時間。
去年有過一段時間的集中學習,做了許多的練習和實驗,並對基於HDevelop的形狀匹配算法的參數優化進行了研究,寫了一篇《基於HDevelop的形狀匹配算法參數的優化研究》文章,總結了在形狀匹配過程中哪些參數影響到模板的搜索和匹配,又如何來協調這些參數來加快匹配過程,提高匹配的精度,這篇paper放到了中國論文在線了,需要可以去下載。
德國MVTec公司開發的HALCON機器視覺開發軟件,提供了許多的功能,在這裡我主要學習和研究了其中的形狀匹配的算法和流程。
HDevelop開發環境中提供的匹配的方法主要有三種,即Component-Based、Gray-Value-Based、Shape-Based,分別是基於組件(或成分、元素)的匹配,基於灰度值的匹配和基於形狀的匹配。
這三種匹配的方法各具特點,分別適用於不同的圖像特征,但都有創建模板和尋找模板的相同過程。
這三種方法裡面,我主要就第三種-基於形狀的匹配,做了許多的實驗,因此也做了基於形狀匹配的物體識別,基於形狀匹配的視頻對象分割和基於形狀匹配的視頻對象跟蹤這些研究,從中取得較好的效果,簡化了用其他工具,比如VC++來開發的過程。
在VC下往往針對不同的圖像格式,就會弄的很頭疼,更不用說編寫圖像特征提取、模板建立和搜尋模板的代碼呢,我想其中間過程會很復雜,效果也不一定會顯著。
下面我就具體地談談基於HALCON的形狀匹配算法的研究和心得總結。
1. Shape-Based matching的基本流程HALCON提供的基於形狀匹配的算法主要是針對感興趣的小區域來建立模板,對整個圖像建立模板也可以,但這樣除非是對象在整個圖像中所佔比例很大,比如像視頻會議中人體上半身這樣的圖像,我在後面的視頻對象跟蹤實驗中就是針對整個圖像的,這往往也是要犧牲匹配速度的,這個後面再講。
halcon模板匹配之形状匹配法
halcon模板匹配之形状匹配法Halcon是一种先进的图像处理软件,被广泛应用于计算机视觉领域。
在计算机视觉中,模板匹配是一种常用的方法,用于在一幅图像中寻找一个与给定模板形状相似的目标物体。
Halcon支持多种模板匹配方法,其中之一是形状匹配法。
形状匹配法是一种基于特征点的模板匹配方法。
它利用目标物体的形状信息进行匹配,而不是仅仅考虑灰度信息。
这种方法适用于目标物体的形状较为明显且不易受到光照等条件的影响。
在使用Halcon进行形状匹配之前,我们需要提前准备好模板图像和待匹配图像。
首先,我们需要选择一个与目标物体形状相似的模板图像作为参考。
然后,我们将待匹配图像加载到Halcon中,并在图像中提取出一系列的特征点。
Halcon中的形状匹配算法是基于特征点的,它会根据这些特征点的位置和几何特征来进行匹配。
在匹配过程中,Halcon会计算出每一个特征点在模板图像中的对应位置,并根据这些特征点的几何关系来确定匹配度。
形状匹配算法的核心是特征提取和特征匹配。
Halcon提供了多种特征提取函数,如角点检测、边缘检测等。
我们可以根据实际情况选择适合的特征提取函数。
特征匹配则是根据特征点的位置和几何关系来进行的。
Halcon中提供了一系列的匹配函数,如模板匹配、点对点匹配等。
形状匹配法的优点是对图像的光照变化、噪声等干扰具有较好的鲁棒性,可以获得较高的匹配准确度。
然而,该方法在目标物体形状复杂或存在遮挡时可能会出现匹配失败的情况。
因此,在实际应用中,我们需要考虑到目标物体的形状特征以及环境条件,并选择合适的匹配方法。
除了形状匹配法,Halcon还支持其他一些模板匹配方法,如基于灰度的模板匹配、基于形状的模板匹配等。
这些方法各有优劣,适用于不同的应用场景。
在实际工程中,我们可以根据需求选择最适合的模板匹配方法。
总之,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形状匹配总结HALCON(High-level Algorithm CONnectivity)形状匹配是一种基于几何特征的图像处理技术,用于在图像中检测和识别目标形状。
它可以在不考虑大小、旋转和平移的情况下,快速准确地匹配待识别目标的形状。
HALCON形状匹配的原理是将目标形状与样本形状进行比较,通过计算形状之间的相似度,确定目标形状与样本形状的匹配程度。
它的核心思想是将形状表示为一组关键点,然后将这些关键点与样本形状的关键点进行比对。
关键点是形状中的局部特征,可以通过诸如角点、交点、轮廓曲率等方式来提取。
1.预处理预处理是指对输入图像进行一系列的图像处理操作,以便提高形状匹配的准确性。
其中包括图像灰度化、二值化、滤波、边缘检测等操作。
这些操作可以减少图像中的噪声、增强目标的边缘特征。
2.关键点提取关键点提取是指通过一些特定的算法从目标形状中提取出关键点。
这些关键点通常是形状中的重要特征,如角点、交点、曲率极大值等。
关键点可以用于表示形状的局部特征,方便后续的形状匹配。
3.特征描述特征描述是指将关键点和它们的局部信息转化为一组表示形状特征的向量。
这些向量可以用于比较形状之间的相似度。
常用的特征描述方法包括:形状上的点集、边缘链码、轮廓的矩描述等。
4.匹配匹配是指将待识别目标形状与样本形状进行比对,确定它们之间的相似度。
匹配过程可以通过计算形状特征的相似度值来实现。
常见的匹配算法包括:最小二乘、最近邻等。
匹配结果可以通过设定一个阈值来判定是否匹配成功。
1.高效快速:HALCON形状匹配算法具有高效快速的特点,可以在短时间内完成目标形状匹配任务。
2.鲁棒性强:HALCON形状匹配算法对图像中的噪声、失真等因素有良好的抗干扰性能,可以准确地匹配目标形状。
3.高度可定制化:HALCON形状匹配算法可以通过调整各个算法模块的参数,实现对匹配结果的控制和优化。
4.应用广泛: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模板匹配之形状匹配法(最新版)目录一、引言二、形状匹配法的基本概念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有三种模板匹配方法:即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 中,模板匹配是一种常用的图像匹配方法,可以用于检测图像中的特定目标。
形状匹配法是Halcon 模板匹配的一种重要方法,它通过比较图像中目标的形状来确定匹配成功与否。
形状匹配法在Halcon 模板匹配中的应用十分广泛,它可以用于检测各种形状的目标,如矩形、圆形、椭圆形等。
在形状匹配过程中,Halcon 提供了多种形状匹配方法,如基于轮廓的匹配、基于灰度的匹配、基于组件的匹配和基于互相关的匹配等。
在Halcon 模板匹配中,形状匹配方法的具体实现方式如下:
1.创建模板:首先需要创建一个模板,用于与图像中的目标进行比较。
模板可以是预先定义好的形状,也可以是通过训练得到的形状模型。
2.提取目标特征:对图像中的目标进行特征提取,这一步通常涉及到图像分割、轮廓提取等操作。
3.形状匹配:将提取到的目标特征与模板进行比较,判断它们是否匹配。
如果匹配度满足预设阈值,则认为匹配成功。
在实际应用中,为了提高形状匹配的成功率,可以设置一些参数,如:尺度缩放范围、最小匹配目标个数、最低匹配分数等。
这些参数可以根据具体应用场景进行调整。
总之,形状匹配法在Halcon 模板匹配中具有重要作用,可以有效地检测图像中的特定目标。
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学习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缺陷检测常用方法总结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是一种广泛应用于机器视觉领域的软件工具,它提供了强大的功能,可用于图像处理和分析。
其中,形状匹配是Halcon中的一个重要功能,它可以对图像中的目标进行形状匹配和识别。
本文将介绍Halcon形状匹配的原理及其应用。
一、形状匹配的基本原理形状匹配是通过比较目标物体的形状特征来实现目标识别的过程。
在Halcon中,形状匹配的基本原理是将目标物体的形状特征抽取出来,然后与预先定义好的模板进行比较,从而找到最佳匹配的结果。
1.1 形状特征提取在形状匹配过程中,首先需要从目标物体的图像中提取出其形状特征。
Halcon提供了多种形状特征提取的方法,如边缘提取、角点提取和轮廓提取等。
其中,轮廓提取是最常用的方法之一。
通过轮廓提取,可以得到目标物体的边界信息,进而用于后续的形状匹配。
1.2 形状特征描述形状特征提取后,需要对其进行描述,以便进行形状匹配。
Halcon 中常用的形状特征描述方法有区域面积、外接矩形、最小外接矩形、最小外接圆等。
这些特征可以有效地描述目标物体的形状信息,为后续的形状匹配提供依据。
1.3 形状匹配算法形状匹配算法是形状匹配的核心部分。
Halcon中采用了灰度不变矩和Hu矩等算法来进行形状匹配。
其中,灰度不变矩是一种基于图像灰度信息的形状描述方法,可以有效地抵抗光照变化带来的影响;而Hu矩则是一种基于形状几何信息的描述方法,可以对目标物体的形状进行更准确的匹配。
二、形状匹配的应用形状匹配广泛应用于机器视觉领域的目标检测、识别和定位等任务中。
下面将介绍几个典型的应用场景。
2.1 工业自动化在工业自动化中,形状匹配可以用于产品质量检测和装配过程中的定位与识别。
通过对产品的形状特征进行匹配,可以实现对产品的自动检测和定位,提高生产效率和产品质量。
2.2 医学图像处理在医学图像处理中,形状匹配可以用于病变区域的定位和识别。
通过对医学图像中的病变区域进行形状匹配,可以辅助医生进行疾病的诊断和治疗。
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形状匹配讲解楼主#更多只看楼主倒序阅读发布于:2013-07-21 22:29保存该帖是加密帖,需要10金币及以上的积分才能浏览以下内容:很早就想总结一下前段时间学习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有三种模板匹配方法:即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局部变形模板是指在一张图上查找模板的时候,可以改变模板的尺寸,来查找图像上具有局部变形的模板。
例如包装纸袋上图案查找。
参数和线性变形额差不多算子如下:create_local_deformable_model和find_local_deformable_model比例缩放末班匹配是介于一般形状匹配和线性变形匹配之间的一种方法。
它可以匹配放大或是缩小的模板,但是仅限于模板大小的缩放,即行列缩放因子一样。
这也是它和线性缩放最大的不同。
涉及到的算子如下:create_scale_shape_model和find_scale_shape_modelHALCON形状匹配LIntExport Herrorcreate_shape_model(const Hobject& Template ,//reduce_domain后的模板图像Hlong NumLevels, //金字塔的层数,可设为“auto”或0—10的整数Double AngleStart, //模板旋转的起始角度Double AngleExtent, //模板旋转角度范围, >=0 Double AngleStep, //旋转角度的步长,>=0 and<=pi/16const char* Optimization, //设置模板优化和模板创建方法const char* Metric, //匹配方法设置Hlong Contrast, //设置对比度Hlong MinContrast , //设置最小对比度Hlong* ModelID ) //输出模板句柄进一步分析: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太大, 将会出现该模型不再适合(虚拟)内存的情况。
在任何情况下,模型是完全适合主存储器的,因为这避免了操作系统的内存分页,使得寻找匹配模板的时间变短。
由于find_shape_model函数中的角度可以使用亚像素精度,一个直径小于200像素的模板可以选择AngleStep >= 1. 如果选择AngleStep=’auto’ (or 0 向后兼容), create_shape_model将会基于模板的大小自动定义一个合适的角度步长. 自动计算出来的AngleStep 可以使用get_shape_model_params函数查看。
如果没有选择complete pregeneration, 该模型会在每一层金字塔上建立在一个参考的位置。
这样在find_shape_model函数运行时,该模型必须转化为不同的角度和尺度在运行时在。
正因为如此,匹配该模型可能需要更多的时间。
对于特别大的模板图像,将参数Optimization设置为不同于’none’的其他数值是非常有用的。
如果Optimization =所有的模型点将要存储。
在其他情况下, 按照‘none’,Optimization的数值会将模型的点数减少. 如果模型点数变少了,必须在find_shape_model函数中将参数Greediness设为一个比较小的值, 比如:0.7、0.8。
对于比较小的模型, 减少模型点数并不能提高搜索速度,因为这种情况下通常显着更多的潜在情况的模型必须进行检查。
如果Optimization设create_shape_model自动确定模型的点数。
置为’auto’,Optimization的第二个值定义了模型是否进行预处理(pregenerated completely),是通过选择’pregeneration’或者’no_pregeneration’来设置的。
如果不使用第二个值(例如:仅仅设置了第一个值), 默认的是系统中的设置,是通过set_system(‘pregenerate _shape_models’,…)来设置的,模对于默认值是(‘pregenerate_shape_models’ = ‘false’), 型没有进行预处理. 模型的预处理设置通常会导致比较低的运行时间,因为模型不需要在运行时间时转换。
然而在这种情况下,内存的要求和创建模板所需要的时间是比较高的。
还应该指出,不能指望这两个模式返回完全相同的结果,因为在运行时变换一定会导致变换模型和预处理变换模型之间不同的内部数据。
比如,如果模型没有completely pregenerated,在find_shape_model函数中通常返回一个较低的scores,这可能需要将MinScore设置成一个较低的值。
此外,在两个模型中插值法获得的位置可能略有不同。
如果希望是最高精确度,应该使用最小二乘调整得到模型位置。
参数Contras决定着模型点的对比度。
对比度是用来测量目标与背景之间和目标不同部分之间局部的灰度值差异。
Contrast的选择应该确保模板中的主要特征用于模型中。
Contrast也可以是两个数值,这时模板使用近似edges_image函数中滞后阈值的算法进行分割。
这里第一个数值是比较低的阈值,第二个数值是比较高的阈值。
Contrast也可以包含第三个,这个数值是在基于组件尺寸选择重要模型组件时所设置的阈值,比如,比指定的最小尺寸的点数还少的组件将被抑制。
这个最小尺寸的阈值会在每相邻的金字塔层之间除以2。
如果一个小的模型组件被抑制,但是不使用滞后阈值,然而在Contrast中必须指定三个数值,在这种情况下前两个数值设置成相同的数值。
这个参数的设置可以在inspect_shape_model函数中查看效果。
如果Contrastcreate_shape_model将会自动确定三个上面设置为’auto’,描述的数值。
或者仅仅自动设置对比度(‘auto_contrast’),滞后阈值(‘auto_contrast_hyst’)或是最小尺寸其他没有自动设置的数值可以按照(‘auto_min_size’)中一个。
上面的格式再进行设置。
可以允许各种组合,例如:如果设置[‘auto_contrast’,’auto_min_size’],对比度和最小尺寸自动确定;如果设置[‘auto_min_size’,20,30],最小尺寸会自动设定,而滞后阈值被设为20和30。
有时候可能对比度阈值自动设置的结果是不满意的,例如,由于一些具体应用的原因当某一个模型组件是被包含或是被抑制时,或是目标包含几种不同的对比度时,手动设置这些参数效果会更好。
因此对比度阈值可以使用determine_shape_model_params函数自动确定,也可以在调用create_shape_model之前使用inspect_shape_mode函数检查效果。