欢迎订阅【HALCON 实战入门】专栏:
1. HALCON 简介与安装
5. 相机接入与图像采集
14. 形态学处理
15. Blob分析
16. 图像匹配



在上一篇【15. Blob 分析】中,我们已经通过连通域提取与特征筛选,从图像中的区域中提取出了符合条件的目标,实现了从“区域表示”到“目标提取”的转变,并能够对目标进行计数与几何测量。

本文将在此基础上,进一步引入图像匹配方法,重点解决目标的定位与识别问题。在已获得目标区域的前提下,通过与模板进行匹配,可以在复杂背景中准确找到目标的位置与姿态,使图像处理从“目标提取”走向“目标识别”,为后续的检测与应用提供更高层次的支持。


一、什么是图像匹配

在完成目标提取之后,往往还需要进一步确定目标在图像中的具体位置、姿态以及是否符合预期特征,这一过程称为图像匹配(Image Matching)。图像匹配的基本思想是:以已知目标作为模板,在待检测图像中搜索与其最相似的区域,从而实现目标的定位与识别。

与前面介绍的 Blob 分析不同,Blob 分析侧重于从区域中提取目标,而图像匹配则是在此基础上,通过与模板进行比较,判断“该目标是否为所需目标”以及“其具体位置与姿态”。因此,图像匹配实现了从“目标提取”到“目标识别”的进一步提升。


1.1 图像匹配的原理与方法

匹配的原理十分简单:使用一个原型物体(模板),为其建立模型,再在其他图像中搜索该模型。
对于绝大多数匹配任务,模型都从包含目标物体的参考图像中获取。为抑制图像中无关结构与其他物体的干扰,会将图像裁剪为感兴趣区域(ROI),该区域仅包含目标物体。裁剪后的图像即为模板图像,通过对应算法专用算子从中生成匹配模型。再通过匹配算法专用算子,使用匹配模型在搜索图像中查找目标,搜索与模板 “相似” 的图像结构。

图像匹配方法的优势在于易用性强,同时具备优异的鲁棒性与灵活性。匹配无需对目标物体进行任何形式的图像分割;部分匹配算法即使目标被其他物体遮挡重叠,依然可以完成定位。根据所选算法的不同,图像匹配方法能够应对光照变化、背景杂乱、目标尺寸、位置、旋转角度变化,甚至模板局部部件相对位移等情况。

HALCON 提供了多种匹配算法,主要包括以下几类,最主要的区别在于构建模型时所采用的图像特征结构。

  1. 基于相关性的匹配
    该方法以灰度值为基础,采用归一化互相关算法实现。
    其特点是实现简单、直观,具备抗离焦、轻微形状形变、线性光照变化的不变性,适用于灰度分布稳定、光照变化较小的场景。由于直接依赖像素灰度,对背景杂乱、目标遮挡、尺度变化、噪声较为敏感,因此在复杂工业环境中应用较少。

  2. 基于形状的匹配(主流技术)
    该方法提取轮廓特征用于模型构建与匹配运算,不依赖具体灰度值,而是基于结构特征进行识别。
    其特点是对光照变化不敏感,具有较强的鲁棒性,能够稳定实现目标的定位与姿态估计,是工业视觉中最常用的匹配方法。特别适用于结构清晰、形状稳定的目标,如零件、焊点等。
    支持多通道图像,可同时匹配多个模型。

  3. 可变形匹配
    该方法在形状匹配的基础上,能够处理发生形变的目标,包括局部形变或透视变化。
    其特点是能够处理目标存在形变、弯曲或视角变化的情况,适用于复杂结构或非刚性目标的检测。但其计算复杂度较高,通常用于要求较高的场景。

  4. 基于描述子的匹配
    该方法通过提取图像中的关键点及其局部特征描述子进行匹配,实现对目标的定位与识别。
    其特点是具备抗背景杂乱、遮挡、非线性光照变化、尺度变化、透视形状形变的不变性,对尺度变化、旋转及复杂背景具有较好的适应能力,常用于目标识别、图像拼接等任务。但在工业检测中,相比形状匹配使用频率较低。

图像匹配方法各有特点,具体选型取决于图像数据与实际任务需求:在简单场景中可采用相关性匹配,在工业检测中通常优先采用形状匹配,在存在形变或复杂背景时可考虑可变形匹配或描述子匹配。


1.2 图像匹配基本流程

图像匹配并不是单一算子的调用,而是由多个步骤组成的完整处理流程。不同匹配方法在具体实现上有所差异,但其基本流程具有较强的共性。

一个典型的图像匹配流程如下:

图像
→ 创建模型(Model Creation)
→ 查找目标(Matching)
→ 结果输出
→ 释放模型

各步骤的主要作用如下:

  1. 采集图像。
  2. 创建模型:
    从标准图像中提取目标特征,生成匹配模型(模板)。模型是用于描述待搜索目标的内部数据结构,要包含目标的结构信息或灰度特征。
  3. 查找目标:
    在待检测图像中搜索所创建模型最相似的区域,并返回目标位置、角度及匹配得分等信息。
  4. 结果输出:
    对匹配结果进行显示或分析,如绘制目标位置、计算几何参数等;
  5. 释放模型:
    在程序结束时释放模型资源,以减少内存占用。

在实际应用中,为了提高匹配效率与稳定性,通常还会结合以下策略:

  • 限定搜索区域(ROI):
    通过缩减图像处理范围,减少计算量,同时降低背景干扰;
  • 模型读写(Model I/O):
    将已创建的模型保存到文件中,在后续程序中直接加载使用,从而避免重复建模,提高运行效率。

图像匹配通过“建模—搜索—输出”的流程,实现从模板到目标的定位与识别。


二、基于相关性的匹配


2.1 什么是基于相关性的匹配

基于相关性的匹配是一种通过比较图像灰度相似性实现目标定位的方法。其基本思想是:以目标区域作为模板,在图像中搜索与其灰度分布最相似的位置,从而确定目标位置。

该方法通常通过归一化互相关(NCC)来衡量模板与图像区域之间的相似程度。在 HALCON 中,一般通过 create_ncc_model 创建匹配模型,并使用 find_ncc_model 在图像中搜索目标。

相关性匹配通过灰度相似性比较实现目标定位,是图像匹配中最基础的方法。

  • 方法特点:实现简单,但对光照变化和遮挡较为敏感。
  • 适用场景:适用于光照稳定、目标固定且背景较简单的匹配任务。

2.2 相关性匹配算子

在 HALCON 中,基于相关性的匹配通常通过 NCC(归一化互相关)模型实现,是基于灰度相似性匹配的典型实现方法。其核心包括模型创建与目标查找两个步骤,分别对应 create_ncc_model 与 find_ncc_model 两个算子。


2.2.1 模型创建(create_ncc_model)

create_ncc_model 用于从模板图像中创建匹配模型。该算子将模板区域转换为匹配模型,并可设置旋转范围。模板由输入图像的定义域(ROI)确定,即只对选定区域进行建模。

算子原型:

create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)

参数说明:

  • Template(输入图像):用于创建模板的图像,其定义域即为模板区域;
  • NumLevels(金字塔层数):控制匹配过程的多分辨率层级,通常设为 ‘auto’;
  • AngleStart / AngleExtent / AngleStep(旋转参数):定义模板匹配时允许的旋转范围与步长;
  • Metric(匹配方式):默认值 ‘use_polarity’,表示考虑灰度极性;
  • ModelID(输出):生成的 NCC 模型句柄。

2.2.2 目标查找(find_ncc_model )

find_ncc_model 用于在图像中搜索与 NCC 模型最匹配的目标位置。该算子在图像中搜索与模型最相似的区域,并输出其位置、角度及匹配程度。得分越高,说明匹配结果越可靠。

算子原型:

find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)

参数说明:

  • Image(输入图像):待检测图像;

  • ModelID:由 create_ncc_model 创建的模型;

  • AngleStart / AngleExtent:搜索时的旋转范围;

  • MinScore(最小匹配得分):匹配阈值,通常设为 0.5~0.8;

  • NumMatches(匹配数量):返回的匹配个数,默认值 1;

  • MaxOverlap(最大重叠):控制多个匹配之间的重叠程度,默认值 0.5;

  • SubPixel(亚像素精度):默认值 ‘true’;

  • NumLevels(金字塔层数):默认值 0。

  • Row, Column(输出参数):匹配位置(中心坐标);

  • Angle(输出参数):匹配角度;

  • Score(输出参数):匹配得分。


2.3 灰度匹配综合示例

下面通过一个简单示例,演示基于 NCC 的灰度匹配完整流程。该示例选取一幅图像中的局部区域作为模板,并在另一幅图像中搜索对应目标,实现跨图像的目标定位。

程序代码:

* 灰度匹配综合例程
* modified by youcans@qq.com
*
*----------------------------------------
* Step 0:读取图像并显示
*----------------------------------------
dev_close_window ()
read_image (Image, 'D:/Halcon/images/face_masks/face_mask_01.png')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowID)
dev_display (Image)
stop ()

*----------------------------------------
* Step 1:选择模板区域(ROI)
*----------------------------------------
* 手动设定一个旋转矩形区域作为模板
gen_rectangle2 (ROI, 616.5, 708.5, rad(-82.4), 50, 35)
reduce_domain (Image, ROI, Template)

dev_set_color ('green')
dev_display (ROI)
stop ()

*----------------------------------------
* Step 2:创建 NCC 模型
*----------------------------------------
create_ncc_model (Template, 'auto', rad(0), rad(360), 'auto', 'use_polarity', ModelID)

*----------------------------------------
* Step 3:查找匹配目标
*----------------------------------------
read_image (Image, 'D:/Halcon/images/face_masks/face_mask_05.png')
find_ncc_model (Image, ModelID, rad(0), rad(360), 0.7, 1, 0.5, 'true', 0, Row, Column, Angle, Score)

*----------------------------------------
* Step 4:显示匹配结果
*----------------------------------------
dev_display (Image)

* 根据匹配结果生成显示矩形
gen_rectangle2 (Rectangle, Row, Column, Angle, 55, 55)
dev_set_color ('red')
dev_display (Rectangle)

* 显示匹配得分
Text := 'Score: ' + Score$'.2f'
dev_disp_text (Text, 'image', Row + 20, Column + 20, 'red', 'box', 'true')
stop ()

*----------------------------------------
* Step 5:释放模型
*----------------------------------------
clear_ncc_model (ModelID)
dev_close_window ()

程序说明:

该示例按照图像匹配的标准流程进行,主要包括以下几个步骤:

  1. 图像读取与显示
    首先读取原始图像并显示,用于选择模板区域并观察图像内容;
  2. 模板选择(ROI)
    在图像中手动设定一个旋转矩形区域作为模板,并通过 reduce_domain 提取对应区域。采用旋转矩形可以更好地贴合目标形状,提高匹配精度;
  3. 创建 NCC 模型
    使用 create_ncc_model 将模板区域转换为匹配模型,并设置旋转范围为 0∼360°,使模型具备旋转不变性;
  4. 目标查找
    在另一幅图像中使用 find_ncc_model 搜索与模板最相似的区域,并输出匹配位置、角度及匹配得分。通过设置最小匹配得分(如 0.7),可以过滤掉低质量匹配结果;
  5. 结果显示
    根据匹配得到的位置与角度生成旋转矩形,并在图像中标出目标位置,同时显示匹配得分;
  6. 模型释放
    在程序结束前释放模型资源,完成整个匹配流程。

在这里插入图片描述


运行结果:

运行结果中,程序能够在目标图像中准确定位与模板相对应的区域,并以旋转矩形标出其位置。由于在建模与匹配过程中均允许目标旋转,因此即使目标在两幅图像中的方向不同,仍能够实现稳定匹配。匹配得分反映了模板与目标区域之间的相似程度,得分越高,说明匹配结果越可靠。

从结果可以看出,在目标外观稳定、灰度分布一致的情况下,NCC 匹配能够实现较为准确的定位;但当图像存在光照变化或遮挡时,匹配效果可能受到影响。

在这里插入图片描述


本章小结

本章介绍了基于相关性的匹配方法及其基本实现流程。该方法通过比较模板与图像区域的灰度相似性,实现目标的定位,并以 NCC 模型作为典型实现形式,通过“模型创建—目标搜索”的流程完成匹配任务。

相关性匹配实现简单、直观,适用于光照稳定、背景较简单的场景,但对光照变化和遮挡较为敏感,在复杂工业应用中通常作为基础方法或辅助方法使用。


三、基于形状的匹配


3.1 什么是基于形状的匹配

基于形状的匹配是一种通过比较目标的边缘或轮廓结构实现目标定位的方法。其基本思想是从模板中提取具有代表性的结构特征,在图像中搜索具有相同或相似结构的区域,从而确定目标的位置与姿态。

与基于相关性的匹配不同,形状匹配不依赖图像的灰度值,而是基于目标的几何结构进行匹配。因此,即使在光照发生变化或灰度分布不稳定的情况下,只要目标的轮廓结构保持一致,仍能够实现稳定匹配。

从处理流程上看,形状匹配通常包括模板选择、模型创建和目标搜索三个步骤。

  • 首先在图像中选取目标区域作为模板;
  • 然后通过模型创建算子提取其结构特征;
  • 最后在待检测图像中搜索与该模型最匹配的位置;
  • 并输出目标的坐标、角度及匹配得分等信息。

形状匹配方法具有较强的鲁棒性,在复杂环境中具有更好的稳定性与适应性,广泛应用于工业检测与定位任务,是图像匹配中最常用的一类方法。

  • 方法特点:对光照变化不敏感,具有较强的鲁棒性,支持目标旋转与一定程度的尺度变化。
  • 适用场景:适用于结构清晰、形状稳定的目标检测与定位任务,如工业零件、焊点及装配定位等场景。

3.2 形状匹配算子

在 HALCON 中,基新的形状匹配方法基于通用接口(Generic Shape Model),其核心思想不再是单一算子调用,而是由“模型创建—参数设置—模型训练—目标查找”组成的完整流程。主要涉及 create_generic_shape_model、set_generic_shape_model_param、train_generic_shape_model 和 find_generic_shape_model 等算子。

说明:在 HALCON 中,仍保留了早期版本的 create_shape_model 与 find_shape_model 算子,实现模型创建与目标查找两个步骤。


3.2.1 模型创建(create_generic_shape_model)

create_generic_shape_model 用于创建一个空的通用形状模型,并返回模型句柄。

算子原型:

create_generic_shape_model( : : : ModelID)

算子 create_generic_shape_model 用于创建一个形状模型,并在输出参数 ModelID 中返回该模型的句柄。创建完成的模型尚未进行训练。

参数说明:

  • ModelID(输出控制):生成的形状模型句柄。

使用说明:
该算子仅完成模型的初始化,不包含具体的目标信息。创建后需要通过后续步骤设置参数并进行训练,才能用于匹配。


3.2.2 模型配置(set_generic_shape_model_param)

set_generic_shape_model_param 用于设置模型的相关参数,包括金字塔层数、角度范围、匹配精度等。

算子原型:

set_generic_shape_model_param( : : ModelID, GenParamName, GenParamValue : )

参数说明:

  • ModelID(输入控制):形状模型句柄,状态会被修改。
  • GenParamName(输入控制):参数名称。
  • GenParamValue(输入控制):参数对应设置值。

算子 set_generic_shape_model_param 将形状模型 ModelID 的参数 GenParamName 设置为 GenParamValue 中给定的值。
通过 GenParamName 选择的各类参数,可以控制匹配流程的不同环节。
参数分类如下。通过 get_generic_shape_model_param 可以查询模型状态。

  • 模型修改
  • 模型实例查找
  • 实例修改
  • 匹配结果筛选
  • 灰度处理方式
  • 结果精定位
  • 图像金字塔
  • 杂乱背景抑制
  • 输出相关设置
  • 搜索过程计算资源
  • 扩展参数估计

3.2.3 模型训练(train_generic_shape_model)

算子 train_generic_shape_model 用于根据模板图像训练形状模型。
该步骤是形状匹配的关键,通过分析模板区域中的边缘与结构特征,生成用于匹配的模型数据。训练完成后,模型才能用于后续的匹配过程。

算子原型:

train_generic_shape_model(Template : : ModelID : )

算子 train_generic_shape_model 对形状模型句柄 ModelID 进行训练,使其能够查找模板 Template 中给定的训练图案。
模板 Template 支持以下两种输入类型:

  • 图像(Image):输入图像的定义域定义模型的感兴趣区域(ROI)。
  • XLD 轮廓(XLD contour):输入的 XLD 轮廓代表待搜索图案的灰度边缘。

参数说明:

  • Template(输入对象):训练图像 或 XLD 轮廓,(多通道)对象数组。
  • ModelID(输入控制):形状模型句柄。

3.2.4 模型搜索(find_generic_shape_model)

算子 find_generic_shape_model 用于在图像中搜索与模型匹配的目标。

算子原型:

find_generic_shape_model(SearchImage : : ModelID : MatchResultID, NumMatchResult)

算子 find_generic_shape_model 在输入图像 SearchImage 中,查找由 ModelID 传入的一个或多个形状模型的最优匹配实例。
检测到的匹配结果通过 MatchResultID 返回,可进一步使用 get_generic_shape_model_result 和 get_generic_shape_model_result_object 获取匹配结果的参数与轮廓对象。
可以通过 set_generic_shape_model_param、set_generic_shape_model_object 对模型进行参数配置,从而控制搜索行为。

参数说明:

  • SearchImage(输入对象):待在其中搜索模型的图像,单通道或多通道。
  • ModelID(输入控制):形状模型句柄,支持传入多个模型。
  • MatchResultID(输出控制) :包含所有匹配结果的结果句柄。
  • NumMatchResult(输出控制) :检测到的匹配结果数量。

基于通用接口的形状匹配采用“创建—设置—训练—查找”的流程,将模型构建与匹配过程分离,使模型具有更强的灵活性与可扩展性,是 HALCON 中推荐的形状匹配实现方式


3.3 形状匹配综合示例

下面通过一个简化示例,演示基于通用形状匹配接口的完整流程。

该示例选取参考图像中的一个显著标识作为模板,在另一张图像中搜索该标识,并利用匹配结果获取目标位置与轮廓。与官方示例相比,这里不再继续执行图像校正与文字识别,而是仅保留“模板选择—模型训练—目标查找—结果显示”这一主流程。.

处理流程:
该示例的基本流程如下:

参考图像
→ 选择模板区域
→ 创建并训练形状模型
→ 搜索图像中查找目标
→ 提取匹配轮廓并显示结果

首先在参考图像中选取一个结构清晰、稳定的区域作为模板;然后创建通用形状模型并完成训练;最后在另一张图像中搜索该目标,并提取匹配结果对应的轮廓进行显示。

参考例程:

* 形状匹配综合例程
* modified by youcans@qq.com
*
*----------------------------------------
* Step 0:初始化与读取参考图像
*----------------------------------------
dev_close_window ()
read_image (ReferenceImage, 'D:/Halcon/images/board/board_01')
get_image_size (ReferenceImage, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_display (ReferenceImage)
stop ()

*----------------------------------------
* Step 1:定义模板区域(ROI)
*----------------------------------------
* 选择显著标识区域作为模板
gen_rectangle1 (ROIModel, 450, 470, 580, 755)
reduce_domain (ReferenceImage, ROIModel, ModelImage)

dev_set_color ('green')
dev_display (ROIModel)
stop ()

*----------------------------------------
* Step 2:创建并训练形状模型
*----------------------------------------
create_generic_shape_model (ModelHandle)
train_generic_shape_model (ModelImage, ModelHandle)

* 设置搜索参数
set_generic_shape_model_param (ModelHandle, 'num_matches', 1)
set_generic_shape_model_param (ModelHandle, 'min_score', 0.5)

*----------------------------------------
* Step 3:在另一张图像中查找目标
*----------------------------------------
read_image (SearchImage, 'D:/Halcon/images/board/board_05')
find_generic_shape_model (SearchImage, ModelHandle, MatchResultID, Matches)
dev_display (SearchImage)
stop ()

*----------------------------------------
* Step 4:提取匹配轮廓并显示结果
*----------------------------------------
if (Matches > 0)
    get_generic_shape_model_result_object (InstanceObject, MatchResultID, 'all', 'contours')
    dev_set_color ('red')
    dev_display (InstanceObject)

    * 获取匹配得分
    get_generic_shape_model_result (MatchResultID, 'all', 'score', Score)
    Text := 'Score: ' + Score[0]$'.2f'
    dev_disp_text (Text, 'window', 20, 20, 'red', 'box', 'true')
endif
stop ()

*----------------------------------------
* Step 5:释放模型
*----------------------------------------
clear_shape_model (ModelHandle)
dev_close_window ()

程序说明:

该示例按照图像匹配的标准流程进行,主要包括以下几个步骤:

  1. 读取参考图像
    读取参考图像并显示,为后续模板选择做准备;
  2. 选择模板区域
    在参考图像中定义一个矩形区域作为模板,并通过 reduce_domain 得到训练图像;
  3. 创建并训练模型
    使用 create_generic_shape_model 创建通用形状模型,并通过 train_generic_shape_model 完成训练;随后设置匹配数量和最小得分等搜索参数;
  4. 查找目标
    在另一张图像中调用 find_generic_shape_model 搜索目标,并得到匹配结果句柄;
  5. 显示匹配结果
    从匹配结果中提取轮廓对象,并叠加显示在搜索图像上,同时显示匹配得分;
  6. 释放模型
    在程序结束前释放模型资源;

在这里插入图片描述


运行结果:

运行结果中,程序能够在搜索图像中定位到与参考模板相同的标识区域,并以红色轮廓标出其位置,同时显示对应的匹配得分。即使目标在两幅图像中的位置发生变化,只要其结构特征保持一致,仍能够实现稳定匹配。

在这里插入图片描述


本章小结

本章介绍了基于形状的匹配方法及其基本实现流程。该方法通过提取目标的边缘与轮廓结构进行建模,并通过“模型创建—训练—目标搜索”的流程实现目标定位,是 HALCON 中最常用的匹配方法。

与基于相关性的匹配相比,形状匹配不依赖灰度信息,对光照变化具有更强的鲁棒性,能够稳定输出目标的位置与姿态,在工业检测与定位任务中具有广泛应用。


四、图像匹配助手

匹配模型的参数(如角度范围、金字塔层数、最小得分等)很多,手动编程与调试较为复杂。

图像匹配助手(Matching Assistant)是 HDevelop 中提供的一种可视化工具,用于辅助用户完成模板选择、模型创建、参数设置及匹配测试等操作。图像匹配助手将整个匹配过程标准化为若干步骤,使用户能够通过交互操作快速构建匹配应用。


4.1 匹配助手的流程

使用图像匹配助手,一般按照如下流程进行:

选择匹配算法
→ 创建模板
→ 测试模板
→ 参数优化
→ 生成代码

与手动编写程序相比,图像匹配助手具有以下优势:

  • 操作直观,可视化程度高;
  • 支持实时调整参数并观察效果;
  • 能够自动生成对应的 HALCON 代码;
  • 有助于快速完成模型调试与优化。

4.2 匹配助手的界面

匹配助手界面主要由以下部分构成:

  • 菜单栏:文件、ROI、参数、应用、检测、生成代码
  • 工具栏:常用功能的快捷入口;
  • 选项卡:
    • 创建(模板设置)
    • 参数(模型参数)
    • 应用(匹配参数)
    • 检测(结果统计)
    • 代码生成(导出程序)
  • 状态栏:显示匹配结果信息,如目标数量、匹配得分、运行时间及目标位置与姿态等。

4.3 匹配助手的操作步骤

在新建匹配应用前,建议点击工具栏上的 “重置模板” 按钮,重置所有模板与搜索参数。重置后参数将恢复默认设置,同时清除模板图像、模板感兴趣区域(ROI)与测试图像。

  1. 选择匹配算法。
    在匹配助手工具栏中,通过下拉菜单选择匹配方法。选项如下:

    • 基于形状的匹配(推荐);
    • 基于相关性的匹配;
    • 可变形匹配;
    • 描述子匹配。
  2. 创建模板。
    模板创建是匹配过程的基础,主要包括以下三个步骤:

    • (1)加载模板图像:
      通过菜单 “文件→加载模板” 或界面按钮导入图像,也可通过图像采集助手实时获取。
    • (2)绘制模板 ROI:
      通过菜单栏「ROI」或 “创建” 选项卡内的 ROI 按钮,在图像中框选目标区域,作为模型训练区域。
    • (3)设置模板参数
      在“参数”选项卡中,设置匹配算法的模板参数(如金字塔层数、角度范围、对比度等)。也可直接加载已有模板文件。

在这里插入图片描述


  1. 测试模板。
    按以下步骤完成模板测试:
    • (1)加载测试图像:
      通过菜单栏或 “应用” 选项卡中的 “加载” 按钮,加载一张或多张图像进行测试,也可使用采集设备实时输入。
    • (2)设置搜索参数:
      在 “应用” 选项卡中可以设置匹配参数,如最小匹配得分、匹配数量等。
    • (3)执行匹配测试:
      通过菜单栏或 “检测” 选项卡中的 “执行” 按钮,运行匹配检测,检测结果将显示在 “检测” 选项卡的识别率和统计表中。
    • (4)结果验证:
      识别率和检测结果将显示在 “检测” 选项卡的统计表中。可以对比实际目标数量与检测结果,检查是否存在漏检或误检。

  1. 参数优化。
    在 “参数” 选项卡中,可以根据匹配算法与具体应用场景对参数进行优化,以提升匹配效果与运行效率。
    在 “应用” 选项卡中,可以点击 ”执行优化“ 按钮,对检测速度进行优化。
    每次调整参数后,都需重新验证所有测试图像,确保匹配结果稳定。
    常用优化参数如下:
    • 基于形状匹配:可以调节搜索参数最小匹配分数与搜索贪婪度最小匹配得分(MinScore);
    • 基于相关性匹配:可以调节搜索参数最小匹配分数;
    • 基于描述子匹配:可以调节模板参数蕨分类器数量与蕨深度;
    • 模型参数优化:如金字塔层数、特征提取策略等。

在这里插入图片描述


  1. 生成代码。
    在完成模型调试后,可以在 “代码生成” 选项卡中设置代码选项、修改参数名称,并点击 “插入代码” 按钮,将当前匹配流程转换为 HALCON 程序代码。
    生成的代码可直接嵌入到工程程序中使用,大幅提高开发效率。

在这里插入图片描述


本章小结

本章介绍了图像匹配助手的基本使用方法,包括匹配流程、界面组成以及具体操作步骤。通过图像匹配助手,可以以可视化方式完成模板选择、模型创建、参数调试与匹配测试,将原本复杂的匹配建模过程转化为标准化流程。

在实际应用中,匹配助手不仅能够帮助快速验证匹配方案的可行性,还能够通过参数优化提升匹配的稳定性与效率,并自动生成对应的 HALCON 代码,便于工程集成。通过本章内容,可以实现从“理解匹配方法”到“实际搭建匹配应用”的过渡。


五、总结

本文围绕图像匹配,系统介绍了从匹配原理到工程实现的完整内容,包括图像匹配的基本概念与流程、基于相关性的匹配方法、基于形状的匹配方法,以及图像匹配助手的使用。通过灰度匹配与形状匹配两个典型示例,展示了“模型创建—目标搜索—结果显示”的基本处理流程,并结合匹配助手,实现了从手动建模到可视化调试与代码生成的完整应用过程。

图像匹配的核心在于通过模板与图像之间的相似性比较,实现目标的位置与姿态估计。实际应用中,应根据任务特点选择合适的方法:相关性匹配适用于简单场景,而形状匹配由于对光照变化不敏感、鲁棒性更强,成为工业视觉中的主流方法。同时,借助匹配助手,可以高效完成模型调试与参数优化,加快开发流程。

通过本章内容,可以看到从“目标提取”到“目标识别”的进一步提升过程。图像匹配在其中起到了关键作用,使系统能够在复杂场景中实现稳定、可靠的目标定位与检测。在后续内容中,可进一步结合多目标匹配与复杂场景处理方法,提升系统的鲁棒性与应用能力。


【本节完】


版权声明:
转发必须注明原文链接:
【HALCON 实战入门】16. 图像匹配 (https://youcans.blog.csdn.net/article/details/160415310)
Copyright by youcans@qq.com
Crated:2026-04


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐