一、介绍
形变分为两种,一种是基于目标局部的形变,另一种是由于透视关系而产生的形变。基于形变的模板匹配也是一种基于形状的匹配方法,不同的是,其返回的结果中不仅包括轻微形变的形状、形变的位置和参数,还有描述形变的参数,如旋转角度、缩放倍数等。
基于透视的形变可以返回一个二维投影变换矩阵。如果是在相机标定的情况下,通过相机参数,还可以计算出目标的三维位姿。
基于形变的模板匹配对于很多干扰因素不敏感,如光照变化、混乱无序、缩放变化等。其适用于多通道图像,对于纹理复杂的图像匹配则不太适用。
二、基于局部形变的模板匹配(不支持缩放,尽可能选择合适的检测图像)
基于局部形变的模板匹配与机遇形状的模板匹配的相似之处是,二者都是通过检测目标的形状轮廓进行匹配的;不同之处在于,前者的匹配过程可以接受轻微的形变,其匹配步骤如下:
①准备模板。在创建模板之前,先读取输入图像,选择要检测的目标选区。选择时要注意选区包含目标的典型结构,也可以适当包含目标区域以外的邻域像素,然后将得到的参考图像转化为单通道的灰度图像。
②创建基于局部形变的匹配模型。创建模型的方法有两种,一种是使用create_local_deformable_model算子,从模板图像中创建模型;另一种是根据目标的XLD轮廓创建,使用create_local_deformable_model_xld算子。
如果想使用自动参数,除了把参数值设为auto以外,还可以使用determine_deformable_model_params算子获取推荐的参数,然后根据实际匹配效果决定是否需要修改这些参数。如果要调整与金字塔层级相关参数,也可以使用inspect_shape_model算子查看不同层级的金字塔图像效果,这一点与基于形状的模板匹配相似。
如果想获取原图的轮廓以便以后与形变对比,可以使用get_deformable_model_contours算子。
Matching匹配 / Deformable可形变匹配 创建一个局部的可形变匹配模型 create_local_deformable_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast, ParamName, ParamValue : ModelID)
扫描二维码关注公众号,回复:
14350016 查看本文章
Template:输入参数,输入图像,用来创建模型。 NumLevels:输入参数,金字塔(分析法)最大层数。默认'auto',列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配的起始角度。默认[]。 AngleExtent:输入参数,匹配的角度范围。默认[]。 AngleStep:输入参数,角度的步进值。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。 ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。 ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 Optimization:输入参数,提升时间效率的方式(即优化),定义模板定位时使用的特征点的数量,在模板数据量大时有必要降低数据量,以提高定位速度。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表 【 'ignore_color_polarity', 表示匹配过程忽略颜色对比度的变化,一般适用于多通道图像。如果不确定检测时会显示哪个通道的图像,可以选择此项(用在单通道图像上效果与ignore_local_polarity效果相同)。 'ignore_global_polarity', 可以为目标与模板极性完全相反,适用于全局对比度发生变化的情况,表示忽略全局对比度的变化,即匹配过程中的图像对比度可以与模板中的完全相反。例如,模板中是一个暗背景上有一个亮的目标,那么在检索时,即使目标对象很亮而背景很暗,也能匹配成功。 'ignore_local_polarity', 允许部分极性相反,表示忽略局部对比度的变化,如果图像因为光照改变等原因发生局部对比度变化,可以选择这一项。 'ignore_part_polarity',允许不同极性部分之间的变化,极性相同的部分内部不得改变。 'use_polarity'表示匹配得到的图像必须和模板图像的对比度“方向”相同。(即如果使用use_polarity,图像中的对象和模型必须具有相同的对比度。)例如:模板中是一个暗背景上有一个亮的目标,那么在检索时,只有符合匹配条件并且亮度比背景亮的目标才能匹配成功。 其中use_polarity与ignore_globle_polarity仅能用在亚像素精度上。 】。 Contrast:输入参数,模板图像中对象的对比度设置的滞后阈值。默认 'auto',建议值【'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。 MinContrast:输入参数,搜索图像中目标的最小对比度。默认'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。 ParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'min_size', 'part_size'】。 ParamValue:输入参数,需要设置的参数的值。默认[],列表【[], 'big', 'medium', 'small'】。 ModelID:输出参数,输出模型句柄。 |
Matching匹配 / Deformable可形变匹配 创建一个局部的可形变XLD匹配模型 create_local_deformable_model_xld(Contours : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, MinContrast, ParamName, ParamValue : ModelID) Contours:输入参数,输入用来生成模型的轮廓。 NumLevels:输入参数,金字塔(分析法)最大层数。默认'auto',列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配的起始角度。默认[]。 AngleExtent:输入参数,匹配的角度范围。默认[]。 AngleStep:输入参数,角度的步进值。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。 ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。 ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 MinContrast:输入参数,搜索图像中目标的最小对比度。默认'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。 ParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'part_size'】。 ParamValue:输入参数,需要设置的参数的值。默认[],列表【[], 'big', 'medium', 'small'】。 ModelID:输出参数,输出模型句柄。 |
Matching匹配 / Deformable可形变匹配 自动测定一个可形变模型的各项参数及对应值。 determine_deformable_model_params(Template : : NumLevels, AngleStart, AngleExtent, ScaleMin, ScaleMax, Optimization, Metric, Contrast, MinContrast, GenParamName, GenParamValue, Parameters : ParameterName, ParameterValue) Template:输入参数,输入图像,用来创建模型。 NumLevels:输入参数,金字塔(分析法)最大层数。默认'auto',列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配的起始角度。默认-0.39。列表【 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleExtent:输入参数,旋转角度的范围。默认0.79,建议值【6.28, 3.14, 1.57, 0.79, 0.39】,≥0。 ScaleMin:输入参数,最小缩放比例。默认 0.9,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleMax:输入参数,最大缩放比例。默认1.1,建议值【1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,ScaleMax >= ScaleMin。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 Contrast:输入参数,模板图像中对象的对比度设置的滞后阈值。默认 'auto',建议值【'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。 MinContrast:输入参数,搜索图像中目标的最小对比度。默认'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。 GenParamName :输入参数,输入参数名称。默认[],列表【'cam_param'】。 GenParamValue:输入参数,输入参数值。默认[],范围[]。 Parameters:输入参数,自动被决定的参数。默认'all',列表【'all', 'angle_step', 'contrast', 'contrast_hyst', 'min_contrast', 'min_size', 'num_levels', 'optimization', 'scale_c_step', 'scale_r_step', 'scale_step'】 ParameterName:输出参数,输出参数名称。 ParameterValue:输出参数,输出参数值。 |
Matching匹配 / Deformable可形变匹配 想获取原图的轮廓以便以后与形变对比 get_deformable_model_contours( : ModelContours : ModelID, Level : ) ModelContours:输出参数,输出可形变模型对应的轮廓。 ModelID:输入参数,输入可形变模型的句柄。 Level:输入参数,输入金字塔所在层数。默认1,建议值【1, 2, 3, 4, 5, 6, 7, 8, 9, 10】,范围≥0。 |
③搜索目标。模型创建好以后,首先确定输入的图像是单通道灰度图像,然后使用find_local_deformable_model算子进行匹配。它将返回目标的位置和分数,以及形变的轮廓等信息。该算子的参数与另外几种匹配算法类似,可以通过调整匹配参数来提升匹配的效率。
Matching匹配 / Deformable可形变匹配 找出图像中一个局部可形变模型的最佳匹配 find_local_deformable_model(Image : ImageRectified, VectorField, DeformedContours : ModelID, AngleStart, AngleExtent, ScaleRMin, ScaleRMax, ScaleCMin, ScaleCMax, MinScore, NumMatches, MaxOverlap, NumLevels, Greediness, ResultType, GenParamName, GenParamValue : Score, Row, Column) Image:输入参数,输入需要匹配的图像。 ImageRectified:输出参数,输出修正过后的模型图像。 VectorField:输出参数,输出句柄形变模型的变换矩阵。 DeformedContours:输出参数,与模型匹配到的实例。 ModelID:输入参数,输入模型的句柄。 AngleStart:输入参数,匹配的起始角度。默认 -0.39,建议值【-3.14, -1.57, -0.78, -0.39, -0.20, 0.0】。 AngleExtent:输入参数,匹配的角度范围。默认 0.79,建议值【 6.29, 3.14, 1.57, 0.78, 0.39, 0.0】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认1.0,建议值【1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleRMax >= ScaleRMin。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认1.0,建议值【 1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleCMax >= ScaleCMin。 MinScore:输入参数,最小的匹配得分。最小的匹配得分。默认0.5,建议值【 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围0 ≤ MinScore ≤ 1。 NumMatches:输入参数,匹配结果的个数。默认1,建议值【 0, 1, 2, 3, 4, 5, 10, 20】。 MaxOverlap:输入参数,重叠系数。默认1.0,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围 0 ≤ MaxOverlap ≤ 1。 NumLevels:输入参数,金字塔层数。默认0,列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10】。 Greediness:输入参数,贪婪度,查找效率系数。默认0.9,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围 0 ≤ Greediness ≤ 1。 ResultType:输入参数,结果图像模式。默认 [],列表【 [], 'deformed_contours', 'image_rectified', 'vector_field'】。 GenParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'angle_step', 'deformation_smoothness', 'expand_border', 'expand_border_bottom', 'expand_border_left', 'expand_border_right', 'expand_border_top', 'scale_c_step', 'scale_r_step', 'subpixel'】。 GenParamValue:输入参数,需要设置的参数的值。默认 [],列表【[], 'least_squares', 'least_squares_high', 'least_squares_very_high', 'none'】。 Score:输出参数,输出目标模型匹配得分。 Row:输出参数,匹配结果重心的行坐标。 Column:输出参数,匹配结果重心的列坐标。 |
④优化匹配过程。如果一次匹配的效果不理想,可以通过调整匹配参数来优化匹配的结果。
⑤清除模型。匹配结束后,使用clear_deformable_model算子将模板清除,并释放内存资源。在获得基于形变的模板匹配对象后,将获得对象的坐标、匹配分数,但是不会返回旋转角度、缩放系数等参数。
Matching匹配 / Deformable可形变匹配 清除指定的可变形模型,释放内存空间 clear_deformable_model( : : ModelID : ) |
三、基于透视形变的模板匹配
透视形变也是一种形变,属于形状模板匹配的延伸。形状模板匹配对于形变非常敏感,而透视形变匹配则能适应出现透视形变的情况。透视形变的匹配又分为无标定和有标定两种情况,基于透视形变的匹配步骤如下。
①选择ROI。与其它几种方法类似,在创建模板之前,先读取输入图像,选择ROI,可以是任意形状。该区域尽量包含检测目标的突出特征。选择好以后对ROI进行裁剪,并且将得到的参考图像转化为单通道的灰度图像。可以使用XLD轮廓创建模板。
②创建基于透视形变的匹配模型。由于透视形变的模型有多种创建方式,因此可以针对不同的方法选择对应的模型创建方式。
Matching匹配 / Deformable可形变匹配 使用模板图像创建无标定的透视形变匹配模型。 create_planar_uncalib_deformable_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast, ParamName, ParamValue : ModelID) Template:输入参数,输入图像,其域将用于创建模型。 NumLevels:输入参数,金字塔的最大层数。默认 'auto',列表【 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配时的起始角度。默认 []。 AngleExtent:输入参数,匹配时的角度范围。默认 []。 AngleStep:输入参数,匹配旋转角度的步长。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。 ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。 ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 Contrast:输入参数,设置对比度,阈值或迟滞阈值,用于模板图像中对象的对比度。默认 'auto',建议值【'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。 MinContrast:输入参数,搜索图像中物体的最小对比度。默认 'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。 ParamName:输入参数,输入参数的名称。默认 [],列表【 [], 'min_size', 'part_size'】。 ParamValue:输入参数,输入参数的值。默认 [],列表【 [], 'big', 'medium', 'small'】。 ModelID:输出参数,输出模型句柄。 |
Matching匹配 / Deformable可形变匹配 使用XLD轮廓创建无标定的透视形变匹配模型。 create_planar_uncalib_deformable_model_xld(Contours : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, MinContrast, ParamName, ParamValue : ModelID) Contours:输入参数,输入用于创建模型的轮廓。 NumLevels:输入参数,金字塔的最大层数。默认 'auto',列表【 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配时的起始角度。默认 []。 AngleExtent:输入参数,匹配时的角度范围。默认 []。 AngleStep:输入参数,匹配旋转角度的步长。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。 ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。 ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 MinContrast:输入参数,搜索图像中物体的最小对比度。默认 'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。 ParamName:输入参数,输入参数的名称。默认 [],列表【[], 'part_size'】。 ParamValue:输入参数,输入参数的值。默认 [],列表【[], 'big', 'medium', 'small'】。 ModelID:输出参数,输出模型句柄。 |
Matching匹配 / Deformable可形变匹配 使用模板图像创建有标定的透视形变匹配模型 create_planar_calib_deformable_model(Template : : CamParam, ReferencePose, NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, Contrast, MinContrast, ParamName, ParamValue : ModelID) Template:输入参数,输入图像,其域将用于创建模型。 CamParam:输入参数,相机的原点方位。 ReferencePose:输入参数,输入图像中物体参数方位(相机的照相方位)。 NumLevels:输入参数,金字塔的最大层数。默认 'auto',列表【 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配时的起始角度。默认 []。 AngleExtent:输入参数,匹配时的角度范围。默认 []。 AngleStep:输入参数,匹配旋转角度的步长。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。 ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。 ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 Contrast:输入参数,设置对比度,阈值或迟滞阈值,用于模板图像中对象的对比度。默认 'auto',建议值【'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。 MinContrast:输入参数,搜索图像中物体的最小对比度。默认 'auto',建议值【 'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】,范围MinContrast < Contrast。 ParamName:输入参数,输入参数的名称。默认 [],列表【[], 'part_size'】。 ParamValue:输入参数,输入参数的值。默认 [],列表【[], 'big', 'medium', 'small'】。 ModelID:输出参数,输出模型句柄。 |
Matching匹配 / Deformable可形变匹配 使用XLD轮廓创建有标定的透视视形变匹配模型。 create_planar_calib_deformable_model_xld(Contours : : CamParam, ReferencePose, NumLevels, AngleStart, AngleExtent, AngleStep, ScaleRMin, ScaleRMax, ScaleRStep, ScaleCMin, ScaleCMax, ScaleCStep, Optimization, Metric, MinContrast, ParamName, ParamValue : ModelID) Contours:输入参数,输入用于创建模型的轮廓。 CamParam:输入参数,相机的原点方位。 ReferencePose:输入参数,输入图像中物体参数方位(相机的照相方位)。 NumLevels:输入参数,金字塔的最大层数。默认 'auto',列表【 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配时的起始角度。默认 []。 AngleExtent:输入参数,匹配时的角度范围。默认 []。 AngleStep:输入参数,匹配旋转角度的步长。默认'auto',建议值【 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认 []。 ScaleRStep:输入参数,y值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认 []。 ScaleCStep:输入参数,x值方向比例缩放的步长。默认 'auto',建议值【 'auto', 0.01, 0.02, 0.05, 0.1, 0.15, 0.2】,范围≥0。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 MinContrast:输入参数,匹配物体的最小差别(对比度),模板图像中对象的对比度设置的滞后阈值。默认 'auto',建议值【'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。 ParamName:输入参数,输入参数的名称。默认 [],列表【[], 'part_size'】。 ParamValue:输入参数,输入参数的值。默认 [],列表【[], 'big', 'medium', 'small'】。 ModelID:输出参数,输出模型句柄。 |
在模型中根据实际需求调整对比度Contrast、金字塔层级数NumLevels、允许的旋转角度范围等参数。如果是标定过的情况,还需要考虑相机参数CanParam、ReferencePose。要想自动设置参数,可以把参数值设为auto,还可以使用determine_deformable_model_params算子获取默认的参数,或者使用inspect_shape_model算子查看不同层级的金字塔参数的效果。但是这些自动获取的参数可能不够精确,还需要根据实际匹配的效果进行修改。
Matching匹配 / Deformable可形变匹配 自动测定一个可变形模型的各项参数及对应值。 determine_deformable_model_params(Template : : NumLevels, AngleStart, AngleExtent, ScaleMin, ScaleMax, Optimization, Metric, Contrast, MinContrast, ParamName, ParamValue, Parameters : ParameterName, ParameterValue) Template:输入参数,输入图像,其域将用于创建模型。 NumLevels:输入参数,金字塔的最大层数。默认 'auto',列表【 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'】。 AngleStart:输入参数,匹配时的起始角度。默认 -0.39。建议值【-3.14, -1.57, -0.79, -0.39, -0.20, 0.0】。 AngleExtent:输入参数,匹配时的角度范围。默认 0.79,建议值【6.28, 3.14, 1.57, 0.79, 0.39】,范围>0。 ScaleMin:输入参数,最小缩放比例。默认0.9,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleMax:输入参数,最大缩放比例。默认1.1,建议值【1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleMax >= ScaleMin。 Optimization:输入参数,提升时间效率的方式,与组件匹配一致。默认 'none',列表【'auto', 'none', 'point_reduction_high', 'point_reduction_low', 'point_reduction_medium'】。 Metric:输入参数,设置匹配方法,是否使用极性。默认'use_polarity',列表【 'ignore_color_polarity', 'ignore_global_polarity', 'ignore_local_polarity', 'ignore_part_polarity', 'use_polarity'】。 Contrast:输入参数,模板图像中对象对比度的阈值或滞后阈值,以及可选的对象部件的最小大小。。默认 'auto',建议值【'auto', 'auto_contrast', 'auto_contrast_hyst', 'auto_min_size', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160】。 MinContrast:输入参数,匹配物体的最小差别(对比度),模板图像中对象的对比度设置的滞后阈值。默认 'auto',建议值【'auto', 1, 2, 3, 5, 7, 10, 20, 30, 40】。范围 MinContrast < Contrast。 ParamName:输入参数,输入参数的名称。默认 [],列表【 'cam_param'】。 ParamValue:输入参数,输入参数的值。默认 [],列表[]。 Parameters:输入参数,需要自动确定的参数。默认'all',列表【 'all', 'angle_step', 'contrast', 'contrast_hyst', 'min_contrast', 'min_size', 'num_levels', 'optimization', 'scale_c_step', 'scale_r_step', 'scale_step'】。 ParameterName:输出参数,自动确定的参数的名称。 ParameterValue:输出参数,自动确定的参数值。 |
③搜索目标。对于无标定和有标定两种情况,分别使find_planar_uncalib_deformable_model
和find_planar_calib_deformable_model来搜索目标,前者返回的是二维投影变换矩阵和匹配分数,后者返回的是目标的三维位姿和匹配分数。针对匹配结果,可以通过不断调整匹配的参数来提升匹配算子的效率。
Matching匹配 / Deformable可形变匹配 在图像中找到校准的可变形模型的最佳匹配。 find_planar_uncalib_deformable_model(Image : : ModelID, AngleStart, AngleExtent, ScaleRMin, ScaleRMax, ScaleCMin, ScaleCMax, MinScore, NumMatches, MaxOverlap, NumLevels, Greediness, ParamName, ParamValue : HomMat2D, Score) Image:输入参数,输入要匹配的图像。 ModelID:输入参数,输入可变形模型句柄。 AngleStart:输入参数,匹配的起始角度。默认 -0.39,建议值【-3.14, -1.57, -0.78, -0.39, -0.20, 0.0】。 AngleExtent:输入参数,匹配的角度范围。默认 0.78,建议值【 6.29, 3.14, 1.57, 0.78, 0.39, 0.0】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认1.0,建议值【1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleRMax >= ScaleRMin。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认1.0,建议值【 1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleCMax >= ScaleCMin。 MinScore:输入参数,最小的匹配得分。默认0.5,建议值【 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围0 ≤ MinScore ≤ 1。 NumMatches:输入参数,匹配结果的个数。默认1,建议值【 0, 1, 2, 3, 4, 5, 10, 20】。 MaxOverlap:输入参数,重叠系数。默认1.0,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围 0 ≤ MaxOverlap ≤ 1。 NumLevels:输入参数,金字塔层数。默认0,列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10】。 Greediness:输入参数,贪婪度,查找效率系数。 默认0.9,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】范围 0 ≤ Greediness ≤ 1。 ParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'angle_change_restriction', 'angle_step', 'aniso_scale_change_restriction', 'cov_pose_mode', 'scale_c_step', 'scale_r_step', 'subpixel'】。 ParamValue:输入参数,需要设置的参数的值。默认 [],列表【 [], 'covariances', 'least_squares', 'least_squares_high', 'least_squares_very_high', 'standard_deviations'】。 HomMat2D:输出参数,输入匹配过程中所需要的变换矩阵,如倾斜、反相、镜像、平移、旋转等。 Score:输出参数,输出目标模型匹配值。 |
Matching匹配 / Deformable可形变匹配 在图像中找到校准的可变形模型的最佳匹配,并返回其3D姿态。 find_planar_calib_deformable_model(Image : : ModelID, AngleStart, AngleExtent, ScaleRMin, ScaleRMax, ScaleCMin, ScaleCMax, MinScore, NumMatches, MaxOverlap, NumLevels, Greediness, ParamName, ParamValue : Pose, CovPose, Score) Image:输入参数,输入要匹配的图像。 ModelID:输入参数,输入可变形模型句柄。 AngleStart:输入参数,匹配的起始角度。默认 -0.39,建议值【-3.14, -1.57, -0.78, -0.39, -0.20, 0.0】。 AngleExtent:输入参数,匹配的角度范围。默认 0.78,建议值【 6.29, 3.14, 1.57, 0.78, 0.39, 0.0】,范围≥0。 ScaleRMin:输入参数,y值方向的最小缩放比例。默认1.0,建议值【0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleRMax:输入参数,y值方向的最大缩放比例。默认1.0,建议值【1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleRMax >= ScaleRMin。 ScaleCMin:输入参数,x值方向的最小缩放比例。默认1.0,建议值【 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围>0。 ScaleCMax:输入参数,x值方向的最大缩放比例。默认1.0,建议值【 1.0, 1.1, 1.2, 1.3, 1.4, 1.5】,范围ScaleCMax >= ScaleCMin。 MinScore:输入参数,最小的匹配得分。默认0.5,建议值【 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围0 ≤ MinScore ≤ 1。 NumMatches:输入参数,匹配结果的个数。默认1,建议值【 0, 1, 2, 3, 4, 5, 10, 20】。 MaxOverlap:输入参数,重叠系数。默认1.0,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】,范围 0 ≤ MaxOverlap ≤ 1。 NumLevels:输入参数,金字塔层数。默认0,列表【0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10】。 Greediness:输入参数,贪婪度,查找效率系数。 默认0.9,建议值【0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0】范围 0 ≤ Greediness ≤ 1。 ParamName:输入参数,需要设置的参数的名称。默认 [],列表【 [], 'angle_change_restriction', 'angle_step', 'aniso_scale_change_restriction', 'cov_pose_mode', 'scale_c_step', 'scale_r_step', 'subpixel'】。 ParamValue:输入参数,需要设置的参数的值。默认 [],列表【 [], 'covariances', 'least_squares', 'least_squares_high', 'least_squares_very_high', 'standard_deviations'】。 Pose:输出参数,输出图像中可变形模型的姿势。 CovPose:输出参数,输出Pose参数的6个标准偏差或36个协方差。 Score:输出参数,输出目标模型匹配值。 |
④清除模型。匹配结束后,使用clear_deformable_model算子将模板清除,并释放内存资源。
Matching匹配 / Deformable可形变匹配 清除指定的可变形模型,释放内存空间。 clear_deformable_model( : : ModelID : ) |
参考文献:
halcon模板匹配实践(1)算子参数说明与算子简介https://blog.csdn.net/libaineu2004/article/details/102829030