Halcon 第五章『模板匹配Matching』◆第6节:基于局部形变的模板匹配|Deformable

        一、介绍

        形变分为两种,一种是基于目标局部的形变,另一种是由于透视关系而产生的形变。基于形变的模板匹配也是一种基于形状的匹配方法,不同的是,其返回的结果中不仅包括轻微形变的形状、形变的位置和参数,还有描述形变的参数,如旋转角度、缩放倍数等。

        基于透视的形变可以返回一个二维投影变换矩阵。如果是在相机标定的情况下,通过相机参数,还可以计算出目标的三维位姿。

        基于形变的模板匹配对于很多干扰因素不敏感,如光照变化、混乱无序、缩放变化等。其适用于多通道图像,对于纹理复杂的图像匹配则不太适用。

        二、基于局部形变的模板匹配(不支持缩放,尽可能选择合适的检测图像)

        基于局部形变的模板匹配与机遇形状的模板匹配的相似之处是,二者都是通过检测目标的形状轮廓进行匹配的;不同之处在于,前者的匹配过程可以接受轻微的形变,其匹配步骤如下:

        ①准备模板。在创建模板之前,先读取输入图像,选择要检测的目标选区。选择时要注意选区包含目标的典型结构,也可以适当包含目标区域以外的邻域像素,然后将得到的参考图像转化为单通道的灰度图像

        ②创建基于局部形变的匹配模型。创建模型的方法有两种,一种是使用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

猜你喜欢

转载自blog.csdn.net/qq_45336030/article/details/124462002
今日推荐