基于形状的单模板匹配
基于形状的单模板匹配是一种常用的形状匹配方法,其关键在于如何选择合适的模板和特征描述方法,以及如何进行有效的特征比较和匹配。在实际应用中,需要根据具体的应用场景和需求选择合适的参数和方法,并进行相应的调整和优化。
一些操作说明指导Halcon形状模板匹配
-
resize_ration
在HALCON中,
resize_ratio
参数用于调整图像的大小,通常与图像缩放有关。这个参数定义了缩放图像时的宽高比,确保图像在调整大小时保持原有的宽高比,防止图像变形。resize_ratio
参数用于在调整图像大小时保持其宽高比,以防止图像失真或变形。 -
num_levels 金字塔层级数量
在基于形状的单模板匹配中,金字塔层级数量的设定会影响匹配的效率和精度。金字塔层级数量越多,搜索速度越快,但匹配失败率可能会增加;相反,金字塔层级数量越少,搜索速度会变慢,但匹配的精度可能会提高。
金字塔层级数量是根据图像的尺度空间表示来划分的。在HALCON中,可以通过设置
NumLevels
参数来控制金字塔的层级数量。NumLevels
参数的值越大,表示金字塔的层级越多,搜索的尺度空间范围更广泛,能够更快地找到匹配的位置。但是,如果NumLevels
参数设置得过大,可能会导致匹配失败率增加,因为模板与目标图像之间的尺度差异可能会很大。大小对模板匹配的影响主要体现在对匹配精度的控制上。如果模板的大小与目标图像中的目标大小不匹配,可能会导致匹配失败或匹配精度降低。因此,在基于形状的单模板匹配中,需要确保模板的大小与目标图像中的目标大小相匹配,或者在匹配过程中对模板进行适当的缩放或调整。
举个🌰:
假设我们有一个大小为100x100像素的模板图像,需要在一幅大小为1000x1000像素的待匹配图像中进行基于形状的单模板匹配。如果我们将
NumLevels
参数设置为1,那么只有一个金字塔层级,模板会在整个图像上进行匹配。这种情况下,搜索的范围较大,可能会比较慢。如果我们将NumLevels
参数设置为3或4,那么会有更多的金字塔层级,搜索会在不同的尺度空间中进行。这样可以更快地找到匹配的位置,但同时也增加了匹配失败的风险。因此,需要根据实际应用的需求和场景来选择合适的金字塔层级数量。 -
angle_start/end
angle_start
和angle_end
参数在HALCON中表示旋转角度的范围,用于确定模板在图像中旋转的起始角度和终止角度。这两个参数决定了模板旋转搜索的角度范围,影响匹配的准确度和计算量。如果
angle_start
和angle_end参数设置得较小,模板的旋转角度范围就会变小,匹配的计算量会减少,但可能会漏掉一些与模板匹配的目标。相反,如果angle_start
和angle_end
参数设置得较大,模板的旋转角度范围就会变大,增加了与模板匹配的目标的可能性,但计算量会增加。大小对模板匹配的影响主要体现在对匹配精度的控制上。如果模板的大小与目标图像中的目标大小不匹配,可能会导致匹配失败或匹配精度降低。因此,在基于形状的单模板匹配中,需要确保模板的大小与目标图像中的目标大小相匹配,或者在匹配过程中对模板进行适当的缩放或调整。
举个🌰:
假设我们有一个圆形模板图像,需要在一幅待匹配图像中进行基于形状的单模板匹配。如果我们将
angle_start
参数设置为0度,angle_end
参数设置为360度,表示模板可以在整个旋转角度范围内进行匹配。这种情况下,能够覆盖所有可能的旋转角度,提高匹配的准确度。但如果我们将angle_start
参数设置为45度,angle_end
参数设置为135度,那么模板只能在特定的旋转角度范围内进行匹配。这种情况下,可能会漏掉一些与模板匹配的目标,降低匹配的准确度。因此,需要根据实际应用的需求和场景来选择合适的angle_start
和angle_end
参数值。 -
angle_step
angle_step
参数定义了旋转角度范围内的步长,用于控制模板在图像中旋转的精度。该参数表示每次旋转的角度间隔,影响匹配的精度和计算量。如果
angle_step
参数设置得较小,表示模板在旋转时每次的角度间隔较小,能够更精确地匹配目标。但是,这会增加计算量,因为需要更多的旋转角度进行匹配。相反,如果angle_step
参数设置得较大,模板的旋转角度间隔会变大,计算量会减少,但匹配的精度可能会降低。大小对模板匹配的影响主要体现在对匹配精度的控制上。如果模板的大小与目标图像中的目标大小不匹配,可能会导致匹配失败或匹配精度降低。因此,在基于形状的单模板匹配中,需要确保模板的大小与目标图像中的目标大小相匹配,或者在匹配过程中对模板进行适当的缩放或调整。
举个🌰:
假设我们有一个大小为100x100像素的圆形模板图像,需要在一幅大小为1000x1000像素的待匹配图像中进行基于形状的单模板匹配。如果我们将
angle_step
参数设置为1度,表示模板在旋转时每次的角度间隔为1度。这种情况下,能够更精确地匹配目标,但计算量会增加。如果我们将angle_step
参数设置为10度,表示模板在旋转时每次的角度间隔为10度。这种情况下,计算量会减少,但匹配的精度可能会降低。因此,需要根据实际应用的需求和场景来选择合适的angle_step
参数值。 -
match_mode
match_mode
参数用于设置匹配模式,它决定了模板匹配的方式和精度。HALCON提供了三种匹配模式:'fixed'
、'scaled'
和'aniso'
。'fixed'
:在这种模式下,模板的大小是固定的,不会根据目标图像的大小进行调整。这种模式适用于模板大小已知且与目标图像大小相匹配的情况。'scaled'
:在这种模式下,模板的大小可以根据目标图像的大小进行调整,以便更好地匹配目标。这种模式适用于模板大小未知或不固定的情况,可以自动调整模板大小以适应目标图像。'aniso'
:在这种模式下,模板的尺寸和形状都可以根据目标图像进行非均匀调整,以更好地匹配目标。这种模式适用于目标图像存在扭曲或形变的情况,可以提高匹配的准确度。
-
scale_rmin/max和scale_cmin/cmax
scale_rmin
、scale_rmax
、scale_cmin
和scale_cmax
参数在HALCON中用于设置模板在水平和垂直方向上的缩放范围。这些参数用于控制模板在匹配过程中可以缩放的比例范围,影响匹配的准确度和计算量。scale_rmin
和scale_rmax
参数用于设置水平方向上缩放的最小和最大比例。scale_cmin
和scale_cmax
参数用于设置垂直方向上缩放的最小和最大比例。
如果这些参数设置得较小,模板的缩放范围就会变小,匹配的计算量会减少,但可能会漏掉一些与模板匹配的目标。相反,如果这些参数设置得较大,模板的缩放范围就会变大,增加了与模板匹配的目标的可能性,但计算量会增加。
举个🌰:
假设我们有一个大小为100x100像素的模板图像,需要在一幅待匹配图像中进行基于形状的单模板匹配。如果我们设置
scale_rmin
为0.8,scale_rmax
为1.2,表示模板在水平方向上的缩放比例范围为80%到120%。如果设置scale_cmin
为0.8,scale_cmax
为1.2,表示模板在垂直方向上的缩放比例范围也为80%到120%。这种情况下,模板可以在一定的比例范围内进行缩放,以更好地匹配目标。如果比例范围设置得较小,如0.9到1.1,则模板的缩放范围变小,计算量减少,但可能会漏掉一些与模板匹配的目标。因此,需要根据实际应用的需求和场景来选择合适的比例范围参数值。需要注意的是,选择合适的比例范围参数需要考虑实际应用的需求和场景。如果目标图像中目标的大小变化较小,可以适当减小比例范围参数,以减少计算量。如果目标图像中目标的大小变化较大,需要适当增大比例范围参数,以增加匹配的准确度。
-
scale_rel
scale_rel
表示相对缩放因子,用于控制模板在匹配过程中的缩放比例。该参数的值是一个小数,表示相对于目标图像的缩放比例。如果
scale_rel
参数设置得较小,模板的缩放比例就会变小,匹配的计算量会减少,但可能会漏掉一些与模板匹配的目标。相反,如果scale_rel
参数设置得较大,模板的缩放比例就会变大,增加了与模板匹配的目标的可能性,但计算量会增加。举个🌰:
假设我们有一个大小为100x100像素的模板图像,需要在一幅待匹配图像中进行基于形状的单模板匹配。如果我们设置
scale_rel
为0.8,表示模板的缩放比例为80%。这种情况下,模板将按照80%的比例进行缩放,以更好地匹配目标。如果scale_rel
设置为1.2,则模板的缩放比例为120%。这种情况下,模板将按照120%的比例进行放大,增加了与模板匹配的目标的可能性。因此,需要根据实际应用的需求和场景来选择合适的scale_rel
参数值。需要注意的是,选择合适的
scale_rel
参数需要考虑实际应用的需求和场景。如果目标图像中目标的大小变化较小,可以适当减小scale_rel
参数,以减少计算量。如果目标图像中目标的大小变化较大,需要适当增大scale_rel
参数,以增加匹配的准确度。 -
metric
metric有四种匹配极性,分别是:
use_polarity
:表示匹配得到的图像必须和模板图像的对比度“方向”相同。如果使用use_polarity
,图像中的对象和模型必须具有相同的对比度。例如:模板中是一个暗背景上有一个亮的目标,那么在检索时,只有符合匹配条件并且亮度比背景亮的目标才能匹配成功。ignore_color_polarity
:这个参数用在单通道图像上效果与ignore_local_polarity
效果相同,主要用于单通道图像的匹配。ignore_global_polarity
:对比度完全逆转也就是物体比背景颜色深,也可以找到它。ignore_local_polarity
:允许部分极性相反,表示忽略局部对比度的变化。如果图像因为光照改变等原因发生局部对比度变化,可以选择这一项。
如果目标图像中目标与背景的对比度与模板中的对比度方向相同,并且颜色也相同,那么可以使用
use_polarity
参数进行匹配。如果目标图像中目标与背景的对比度与模板中的对比度方向完全相反,那么可以使用ignore_global_polarity
参数进行匹配。如果目标图像中存在局部对比度变化,可以选择使用ignore_local_polarity
参数进行匹配。如果是在单通道图像上进行匹配,并且不关心颜色极性,则可以使用ignore_color_polarity
参数进行匹配。 -
lower/upper_constract
lower_contrast
和upper_contrast
参数用于设置图像中像素值的对比度范围,用于确定哪些像素值被认为是低对比度或高对比度的像素。这两个参数常用于图像增强、边缘检测和模板匹配等操作。lower_contrast
参数用于设置低对比度像素值的下界,而upper_contrast
参数用于设置高对比度像素值的上界。这两个参数的值通常以百分比表示,范围从0到100。当使用模板匹配时,可以根据目标图像的对比度分布情况调整
lower_contrast
和upper_contrast
参数的值,以提高匹配的准确度和鲁棒性。例如,如果目标图像的对比度较低,可以将lower_contrast
参数设置为较高的值,以扩大低对比度像素的范围,从而更好地匹配模板中的低对比度区域。相反,如果目标图像的对比度较高,可以将upper_contrast
参数设置为较低的值,以减小高对比度像素的范围,从而更好地匹配模板中的高对比度区域。举个🌰:
假设我们有一幅大小为100x100像素的模板图像和一幅大小为200x200像素的目标图像,需要进行基于形状的单模板匹配。如果目标图像的对比度较低,可以将
lower_contrast
参数设置为较高的值,例如70%,以扩大低对比度像素的范围。同时,将upper_contrast
参数设置为一个相对较低的值,例如30%,以减小高对比度像素的范围。这样可以更好地匹配模板中的低对比度区域。如果匹配成功,函数将返回匹配点的位置和相似度值。 -
min_size
min_size
:这个参数通常用于控制图像中区域的最小面积。在某些算法中,如阈值分割或连通组件标记,min_size
用于过滤掉面积小于设定值的区域。例如,假设我们要找所有大于一定面积的物体,我们可以设置min_size
参数来达到这个目的。 -
min_contrast
min_contrast
:这个参数用于控制图像处理中的对比度阈值。在一些算法中,像素或区域的对比度低于设定值的值可能会被忽略或排除。例如,在边缘检测中,如果背景和目标的对比度很小,我们可以设置一个较高的min_contrast
来增强边缘检测的效果。 -
min_score
min_score
:这个参数通常用于模板匹配,表示拟合的分数或相似度下限。匹配结果中,如果模板与图像的匹配度低于设定的min_score
,则该匹配会被排除或标记为无效。通过调整min_score
,可以控制匹配结果的精度和鲁棒性。 -
max_overlap
max_overlap
参数表示允许的最大重叠区域。这个参数用于控制模板匹配过程中允许的最大重叠范围。max_overlap
参数可以帮助确定找到的目标区域与模板之间的最大重叠程度。在某些情况下,为了确保匹配的准确性和避免误匹配,需要限制最大重叠区域的范围。通过设置合适的max_overlap
值,可以在保持匹配精度的同时减少多余的重叠区域。举个🌰:
假设我们有一幅大小为100x100像素的模板图像,需要在一个大图像中进行模板匹配。如果将
max_overlap
参数设置为0.5,这意味着找到的目标区域与模板的最大重叠程度不得超过50%。通过限制重叠区域,可以提高检测的准确度和减少误检的可能性。如果匹配成功,函数将返回匹配点的位置和相似度值。 -
deformable
deformable
表示是否允许模板变形以更好地匹配目标。当目标图像与模板图像之间的形状或结构存在差异时,可以选择使用可变形的模板(即deformable设置为true)来进行匹配,以提高匹配的准确度和鲁棒性。通过允许模板变形,可以更好地适应目标图像中的形状变化,从而获得更准确的匹配结果。
举个🌰:
假设我们有一幅大小为100x100像素的模板图像,需要在一个大图像中进行模板匹配。如果目标图像中的目标形状与模板形状不完全一致,可以将deformable参数设置为true,以允许模板进行适当的变形来更好地匹配目标。通过调整模板的变形程度,可以找到最佳的匹配效果,提高匹配的准确性和鲁棒性。如果匹配成功,函数将返回匹配点的位置和相似度值。
需要注意的是,使用
deformable
参数会增加计算量和时间复杂度,因为需要计算模板的变形程度。 -
greediness
greediness
表示搜索的贪婪性(0-1),其中0表示完全准确但速度慢,而1表示速度增快但可能会错过一些对象。greediness
参数可以根据实际需求在速度和精度之间进行权衡。当需要快速搜索并获取结果时,可以选择较高的greediness
值以提高速度。然而,这可能会导致错过一些目标对象或得到不准确的结果。相反,如果需要完全准确的匹配结果,可以选择较低的greediness
值,但这可能会增加搜索时间。举个🌰:
假设我们需要在一个大图像中快速找到与模板匹配的目标区域。为了提高搜索速度,我们可以将greediness参数设置为接近1的值。这样,算法将优先选择与模板最匹配的区域,但可能会错过一些较小的或不太明显的目标。如果匹配成功,函数将返回匹配点的位置和相似度值。
-
subpixel
模板匹配的
SubPixel
参数用于控制匹配的精度。SubPixel
参数决定了是否需要精确到亚像素级,以及如何进行亚像素级的插值。当SubPixel设置为’interpolation’时,位置和角度都是亚像素精度的。在这种模式下,模型的位置是在质量系数函数中插入的,这种模式几乎不花费计算时间,并且能达到足够高的精度,被广泛使用。
另外,最小二乘调整的模式有
least_squares
,least_squares_high
和least_squares_very_high
。他们可用来定义被搜索的最小距离的精度,选择的精度越高,亚像素提取的时间越长。 然而,通常SubPixel设置为’interpolation
’。 如果希望设置最小二乘就选择least_squares
,因为这样才能确保运行时间和精度的权衡。对于最小二乘调整的模式有:
least_squares
、least_squares_high
和least_squares_very_high
。他们可用来定义被搜索的最小距离的精度,选择的精度越高,亚像素提取的时间越长。然而,通常SubPixel设置为interpolation
。如果希望设置最小二乘就选择least_squares
,因为这样才能确保运行时间和精度的权衡。