Halcon——模板匹配之灰度匹配

文章目录

    • create_template(Template : : FirstError, NumLevel, Optimize, GrayValues : TemplateID)
    • fast_match_mg(Image : Matches : TemplateID, MaxError, NumLevel : )
    • best_match(Image : : TemplateID, MaxError, SubPixel : Row, Column, Error)
    • clear_template (TemplateID)
    • create_template_rot(Template : : NumLevel, AngleStart, AngleExtend, AngleStep, Optimize, GrayValues : TemplateID)
    • best_match_rot_mg(Image : : TemplateID, AngleStart, AngleExtend, MaxError, SubPixel, NumLevels : Row, Column, Angle, Error)
    • exhaustive_match(Image, RegionOfInterest, ImageTemplate : ImageMatch : Mode : )
    • others

create_template(Template : : FirstError, NumLevel, Optimize, GrayValues : TemplateID)

初识仿射变换参数NumLevel指定可用于匹配的金字塔等级的数量(NumLevel = 1表示仅原始灰度值)。以后用于匹配的级别数将小于或等于该值。如果图案由于缩放而变得太小,则会自动减少金字塔等级的最大数量。

参数GrayValues定义使用原始灰度值(“原始”,“规范化”)还是边缘幅度(“梯度”,“ sobel”)。对于“原始”,差异的总和用作特征,如果照度没有变化,则非常稳定且快速。如果照明发生变化,则使用“归一化”。该方法比较慢,并且不太稳定。注意,“归一化”可以补偿附加的照明变化。如果还出现灰度值的乘法变化,则应使用基于相关性的匹配(create_ncc_model)。如果照度没有变化,则应使用“原始”模式。边缘幅度是不受照明影响的另一种方法。缺点是执行时间增加,并且对图案形状变化的敏感性更高。模式“渐变”稍快一些,但对噪声更敏感。

当使用边缘幅度时,通常必须选择更高的匹配最大误差。如果有必要,由GrayValues选择的模式将导致在匹配期间自动调用适当的过滤器。

参数Optimize指定是否必须针对运行时优化模式。这种优化导致创建模板的时间更长,但减少了匹配时间。另外,优化导致更稳定的匹配,即,减少了错过良好匹配的可能性。优化过程将选择最稳定和最重要的灰度值,以便在匹配过程中首先进行测试。使用此技术,可以很早地消除错误的匹配。

在使用独立于图像大小存储的模板之前,可以通过使用adapt_template将其显式调整为确定图像大小的大小。

fast_match_mg(Image : Matches : TemplateID, MaxError, NumLevel : )

像运算符fast_match一样,运算符fast_match_mg对TemplateID和Image的模板进行匹配。但是,与fast_match相反,对于匹配良好的搜索从按比例缩小的图像(金字塔形)开始。金字塔的级别数将由NumLevel决定。因此,值1表示将不使用金字塔。在这种情况下,运算符fast_match_mg等效于运算符fast_match。值2会触发一半帧大小的图像搜索。对所有在缩小图像中显示出足够小的误差(误差小于MaxError)的点的搜索将在原始图像(图像)的相应位置进行细化。

匹配的运行时间取决于参数MaxError:值越大,处理时间越长,因为必须测试模式的更多点。如果MaxError较低,将找不到该模式。因此,必须针对每个应用程序优化该值。

NumLevel指示金字塔的级别数,包括原始图像。可选地,可以给出第二值。此值指定用于匹配的最低级别的数字(0…n)。直至此级别找到的区域将被缩放到原始级别的大小。在精度不必太高的情况下,这可以用来增加运行时间。

best_match(Image : : TemplateID, MaxError, SubPixel : Row, Column, Error)

灰度平均差公式:
在这里插入图片描述

运算符best_match对TemplateID和Image的模板进行匹配。因此,模板将在Image的点上移动,因此模板将始终位于Image内。 best_match与fast_match的工作原理类似,不同之处在于,每次找到更好的匹配项时,MaxError的值都会在内部更新为较低的值,以减少运行时间。

关于参数SubPixel,子像素精度标志位 “真”情况下将采用亚像素精度 假情况采用像素精度

运算符的运行时间取决于Image域的大小。因此,重要的是尽可能地限制域,即仅在非常有限的“感兴趣区域”中应用运算符。参数MaxError确定所搜索位置最多具有的最大误差。该值越低,操作员运行得越快。

“行”和“列”返回最匹配的位置,其中“错误”指示灰度值的平均差。如果未找到低于MaxError的错误的位置,则返回位置(0,0),错误的匹配结果为255。在这种情况下,必须将MaxError设置得更大。

位置的最大误差(无噪音)为0.1像素。平均误差为0.03像素。

clear_template (TemplateID)

释放内存

create_template_rot(Template : : NumLevel, AngleStart, AngleExtend, AngleStep, Optimize, GrayValues : TemplateID)

创建带角度的模板其他参数同上

best_match_rot_mg(Image : : TemplateID, AngleStart, AngleExtend, MaxError, SubPixel, NumLevels : Row, Column, Angle, Error)

匹配带角度的模板其他参数同上

exhaustive_match(Image, RegionOfInterest, ImageTemplate : ImageMatch : Mode : )

Mode:
在这里插入图片描述

在这里插入图片描述

  • 该算子 可以看作是一种空间滤波操作 用特定的卷积核滤波 输出是整幅图片 如果添加了感兴趣区域 则会进行裁剪
  • 从公式中可以看出来 使用 ‘norm_correlation’方法 输出图片中灰度值偏高的位置 匹配效果最好 255则为完全匹配
  • ‘dfd’方法 输出图片中灰度值偏低的位置 匹配效果最好 0则为完全匹配。
  • 使用这种方法之后需要接一个二值化来提取匹配点。
  • Halcon种相关例子:exhaustive_match.hdev
  • Halcon——模板匹配之灰度匹配_第1张图片

others

set_reference_template (TemplateID, Row, Column)
设置模板参数中行列信息
scale_image (ImageFilled, ImageScaled, 1, add)
通过改变ADD参数来认为线性改变亮度
set_offset_template (TemplateID, add)
如果待匹配图片亮度变换已知则可以进行设置

intensity (Circle, src, Mean2, Deviation2)
intensity (Circle, Image, Mean2, Deviation2)
set_offset_template (TemplateID1, Mean2-Mean1)
在匹配之前通常都会手动计算模板图片和待匹配图片灰度特征(灰度均值),重新设置模板参数 在进行匹配。


Halcon——模板匹配之灰度匹配_第2张图片

你可能感兴趣的:(Halcon)