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)

        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

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
解决方案指导------匹配(Matching)(1章、2章、3章) 1 第一章 简介 5 1.1 怎样使用该手册? 5 1.2 匹配是什么? 5 1.3 如何进行一般的匹配? 6 1.4 可用的方法有哪些? 6 1.5哪种方法适用于哪种情况? 7 1.5.1 匹配方法:2D与3D的比较 7 1.5.2 3D空间中3D对象和2D对象的决策 8 1.5.3 正交成像2D对象的第一个决策 10 1.5.4 基于形状的匹配VS基于相关性的匹配 11 1.5.5匹配方法的快速指南 12 第二章 总论 14 2.1 准备模板 15 2.1.1 将参考图像简化为模板图像 15 2.1.2 感兴趣区域的影响 16 2.1.2.1参照点 16 2.1.3 合成模型作为模板图像的替代品 18 2.2 模板再使用 23 2.3加快搜索速度 24 2.3.1限制搜索空间 24 2.3.2关于二次抽样 25 2.4 使用匹配结果 28 2.4.1 单个匹配方法的结果 28 2.4.2 关于转换 30 2.4.3 使用估计的二维位置和方向 33 2.4.4使用估计的二维尺度 43 2.4.5使用估计的二维单应矩阵 45 2.4.6使用估计的三维姿态 47 2.4.7关于分数 49 第三章 单个方法 50 3.1 基于灰度的匹配 50 3.2 基于相关性的匹配 51 3.2.1 一个例程 51 3.2.2选择模型ROI 53 3.2.3建立合适的NCC模型 53 3.2.4优化搜索过程 55 3.3 基于形状的匹配 56 3.3.1 一个例子 57 3.3.2选择模型ROI 60 3.3.3创建合适的形状模型 62 3.3.4优化搜索过程 69 3.3.5使用基于形状匹配的具体结果 80 3.3.6适应相机方向的改变 82 3.4基于组件的匹配 83 3.4.1一个例子 84 3.4.2提取初始组件 87 3.4.3创建合适的组件模型 88 3.4.4模型实例的搜索 95 3.4.5使用基于组件的匹配的具体结果 98 3.5局部形变匹配 100 3.5.1一个例子 100 3.5.2选择模型ROI 104 3.5.3建立合适的局部变形模型 104 3.5.4优化搜索过程 107 3.5.5使用局部形变匹配的具体结果 109 3.6透视变形匹配 111 3.6.1一个例子 112 3.6.2选择模型ROI 114 3.6.3创建合适的透视图变形模型 114 3.6.4优化搜索过程 118 3.6.5使用透视图变形匹配的具体结果 120 3.7 基于描述符的匹配 122 3.7.1一个例子 122 3.7.2选择模型ROI 125 3.7.3创建合适的描述符模型 125 3.7.4优化搜索过程 128 3.7.5使用基于描述符匹配的具体结果 130

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值