




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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_model HALCON形状匹配LIntExport Herrorcreate_shape_model(const Hobject& Template , /reduce_domain后的模板图像Hlong NumLevels, /金字塔的层数,可设为“auto”或010的整数Double AngleStart, /模板旋转的起始角度Double AngleExtent, /模板旋转角度范围, >=0Double 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设置为auto, create_shape_model自动确定模型的点数。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函数中查看效果。如果Contrast设置为auto,create_shape_model将 会自动确定三个上面描述的数值。或者仅仅自动设置对比度(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函数检查效果。MinContrast用来确定在执行find_shape_model函数进行识别时模型的哪一个对比度必须存在,也就是说,这个参数将模型从噪声图像中分离出来。因此一个好的选择应该是在图像中噪声所引起的灰度变化范围。例如,如果灰度浮动在10个灰度级内,MinContrast应该设置成10。如果模板和搜索图像是多通道图像,Metric参数设置成ignore_color_polarity,在一个通道中的噪声必须乘以通道个数的平方根再去设置MinContrast。例如,如果灰度值在一个通道的浮动范围是10个灰度级,图像是三通道的,那么MinContrast应该设置为17。很显然,MinContrast 必须小于Contrast。如果要在对比度较低的图像中识别模板,MinContrast必须设置为一个相对较小的数值。如果要是模板即使严重遮挡(occluded)也能识别出来,MinContrast应该设置成一个比噪声引起的灰度浮动范围略大的数值,这样才能确保在find_shape_model函数中提取出模板准确的位置和旋转角度。如果MinContrast设置为auto,最小对比度会基于模板图像中的噪声自动定义。因此自动设定仅仅在搜索图像和模板图像噪声近似时才可以使用。此外,在某些情况下为了遮挡的鲁棒性,采用自动设定数值是比较好的。使用get_shape_model_params函数可以查询自动计算的最小对比度。参数Metric定义了在图像中匹配模板的条件。如果Metric = use_polarity,图像中的目标必须和模型具有一样的对比度。例如,如果模型是一个亮的目标在一个暗的背景上,那么仅仅那些比背景亮的目标可以找到。如果Metric = ignore_global_polarity,在两者对比度完全相反时也能找到目标。在上面的例子中,如果目标是比背景暗的也能将目标找到。find_shape_model函数的运行时间在这种情况下将会略微增加。如果Metric = ignore_local_polarity, 即使局部对比度改变也能找到模型。例如,当目标包含一部分中等灰度,并且其中部分比较亮部分比较暗时,这种模式是非常有用的。由于这种模式下find_shape_model函数的运行时间显著增加,最好的方法是使用create_shape_model创建几个反映目标可能的对比度变化的模型,同时使用find_shape_models去匹配他们。上面三个metrics仅仅适用于单通道图像。如果是多通道图像作为模板图像或搜索图像,仅仅第一个通道被使用。如果Metric=ignore_color_polarity, 即使颜色对比度局部变化也能找到模型。例如,当目标的部分区域颜色发生变化(e.g.从红到绿)的情况。如果不能提前知道目标在哪一个通道是可见的这种模式是非常有用的。在这种情况下find_shape_model函数的运行时间也会急剧增加。ignore_color_polarity可以使用于具有任意通道数目的图像中。如果使用于单通道图像,他的效果和ignore_loc al_polarity是完全相同的。当Metric = ignore_color_polarity 时,create_shape_model创建的模板通道数目和find_shape_model中的图像通道数目可以是不同的。例如,可以使用综合生成的单通道图像创建模型。另外,这些通道不需要是经过光谱细分(像RGB图像)的。这些通道还可以包括具有在不同方向照亮同一个目标所获得的图像。模型图像Template的domain区域的重心是模板的初始位置,可以在set_shape_model_origin函数中设置不同的初始位置。LIntExport Herror find_shape_model(const Hobject& Image, /搜索图像Hlong ModelID, /模板句柄Double AngleStart, / 搜索时的起始角度Double AngleExtent, /搜索时的角度范围,必须与创建模板时的有交集。Double MinScore, / 输出的匹配的质量系数Score 都得大于该值Hlong NumMatches, / 定义要输出的匹配的最大个数Double MaxOverlap, / 当找到的目标存在重叠时,且重叠大于该值时选/择一个好的输出const char* SubPixel, / 计算精度的设置,五种模式,多选2,3Hlong NumLevels, / 搜索时金字塔的层数Double Greediness , /贪婪度,搜索启发式,一般都设为0.9,越高速度快 /容易出现找不到的情况Halcon:HTuple* Row, /输出匹配位置的行坐标Halcon:HTuple* Column, /输出匹配位置的列坐标Halcon:HTuple* Angle, /输出匹配角度Halcon:HTuple* Score ) /输出匹配质量进一步分析:注意Row、Column的坐标并不是模板在搜索图像中的精确位置,因此不能直接使用他们。这些数值是为了创建变换矩阵被优化后的,你可以用这个矩阵的匹配结果完成各种任务,比如调整后续步骤的ROI。Score是一个0到1之间的数,是模板在搜索图像中可见比例的近似测量。如果模板的一半被遮挡,该值就不能超过0.5。Image的domain定义了模型参考点的搜索区域,模型参考点是在create_shape_model中用来创建模型的图像的domain区域的重心。不考虑使用函数set_shape_model_origin设置不同的初始位置。在图像domain区域的这些点内搜索模型,其中模型完全属于这幅图像。这意味着如果模型超出图像边界,即使获得的质量系数(score)大于MinScore也不能找到模型。这种性能可以通过set_system(border_shape_models,true)改变,这样那些超出图像边界,质量系数大于MinScore的模型也能找到。这时那些在图像外面的点看作是被遮挡了,可以降低质量系数。在这种模式下搜索的时间将要增加。参数AngleStart和AngleExtent确定了模型搜索的旋转角度,如果有必要,旋转的范围会被截取成为create_shape_model函数中给定的旋转范围。这意味着创建模型和搜索时的角度范围必须真正的重叠。在搜索时的角度范围不会改变为模2*pi的。为了简化介绍,在该段落剩下的部分所有角度都用度来表示,而在find_shape_model函数中使用弧度来设置的。因此,如果创建模板时,AngleStart=-20、AngleExtent=40,在搜索模板函数find_shape_model中设置AngleStart=350、AngleExtent=20,尽管角度模360后是重叠的,还是会找不到模板的。为了找到模板,在这个例子中必须将AngleStart=350改为AngleStart=-10。参数MinScore定义模板匹配时至少有个什么样的质量系数才算是在图像中找到模板。MinScore设置的越大,搜索的就越快。如果模板在图像中没有被遮挡, MinScore可以设置为0.8这么高甚至0.9。NumMatches定义了在图像上找到模板的最大的个数。如果匹配时的质量系数大于MinScore的目标个数多于NumMatches,仅仅返回质量系数最好的NumMatches个目标位置。如果找的匹配目标不足NumMatches,那么就只返回找到的这几个。参数MinScore优于NumMatches。如果模型具有对称性,会在搜索图像的同一位置和不同角度上找到多个与目标匹配的区域。参数MaxOverlap是0到1之间的,定义了找到的两个目标区域最多重叠的系数,以便于把他们作为两个不同的目标区域分别返回。如果找到的两个目标区域彼此重叠并且大于MaxOverlap,仅仅返回效果最好的一个。重叠的计算方法是基于找到的目标区域的任意方向的最小外接矩形(看smallest_rectangle2)。如果MaxOverlap=0, 找到的目标区域不能存在重叠, 如果MaxOverla p=1,所有找到的目标区域都要返回。SubPixel确定找到的目标是否使用亚像素精度提取。如果SubPixel设置为none(或者false 背景兼容),模型的位置仅仅是一个像素精度和在create_shape_model中定义的角度分辨率。如果SubPixel设 置为interpo lation(或true),位置和角
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-江西-江西水文勘测工四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西林木种苗工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-安徽-安徽食品检验工一级(高级技师)历年参考题库典型考点含答案解析
- 2020-2025年二级建造师之二建建筑工程实务自我提分评估(附答案)
- 2025年事业单位工勤技能-北京-北京水文勘测工四级(中级工)历年参考题库含答案解析
- 2025年中级卫生职称-主治医师-肿瘤放射治疗学(中级)代码:343历年参考题库典型考点含答案解析
- 2025年通信专业技术-通信专业技术(中级)-中级通信专业技术(全科)历年参考题库含答案解析(5套)
- 2025年药学职称考试-辽宁省-辽宁省药学(初级中药师)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-热工职业-热工自动装置检修职业技能鉴定(初级)历年参考题库含答案解析(5套)
- 热控维护基本知识培训课件
- AutoCAD计算机辅助设计标准教程(中职)PPT完整全套教学课件
- 安全生产费用使用范围及计量办法
- 肾脏疾病常见症状和诊疗
- 安全环保职业卫生消防题库及答案
- 数据中心负荷计算方法
- 金X绅士无双攻略
- 第八章 立体几何初步(章末复习) 高一数学 课件(人教A版2019必修第二册)
- GB/T 27518-2011西尼罗病毒病检测方法
- GB/T 26255-2022燃气用聚乙烯(PE)管道系统的钢塑转换管件
- GB/T 14202-1993铁矿石(烧结矿、球团矿)容积密度测定方法
- 新时代中小学教师职业行为十项准则考核试题及答案
评论
0/150
提交评论