Halcon 模板匹配 Shape-Based Matching原理

其核心原理可以分为两个主要部分:模板创建(离线阶段)图像匹配(在线阶段)

Shape-Based Matching(形状模板匹配)不是比较灰度,而是比较轮廓(Edge)

Shape-Based Matching = 边缘提取 + 梯度方向编码 + 图像金字塔 + 几何搜索 + 亚像素优化

因此:

  • 光照变化影响小
  • 对旋转鲁棒
  • 可支持部分遮挡
  • 定位精度高

保留:边缘。所以:它根本不关心:里面:到底:黑色还是:白色。

因此:

光照变化:影响很小

简单流程:

原图 ↓ ROI ↓ 边缘提取 ↓ 建立Shape Model ↓ 保存模型 ------------------------ 检测图片 ↓ 边缘提取 ↓ 金字塔搜索 ↓ 粗定位 ↓ 细定位 ↓ 亚像素优化 ↓ 输出 (Row Column Angle Score)

2D 形状匹配 目标物体被遮挡,如何解决-CSDN博客

一、 模板创建 - 学习阶段

这个阶段的目标是创建一个紧凑而富有信息的模板,用于在后续的图像中搜索。

  1. 输入参考图像

    • 选择一张高质量的、包含目标物体的图像,物体轮廓清晰,对比度好。

  2. 定义模板区域

    • 用户通过绘制一个ROI(感兴趣区域,通常是矩形、多边形或圆形)来精确指定图像中哪个部分是我们要找的模板。这步非常关键,因为它排除了背景干扰。

  3. 特征提取 - 核心所在

    • Halcon并不直接存储模板的像素信息。相反,它提取物体的轮廓特征。这些特征主要基于物体的边缘(梯度信息)。

    • 过程

      • 边缘检测:首先,在模板区域内进行边缘检测(如使用sobel,edges_image等算子),得到物体的轮廓。

      • 创建模型:使用create_shape_modelcreate_scaled_shape_model(带缩放)等算子。

      • 金字塔化:算子内部会为模板图像创建图像金字塔。金字塔顶层是原图的下采样版本(分辨率低,但特征稳定),底层是原图或接近原图的分辨率。

      • 梯度方向量化:在每个金字塔层级上,计算轮廓上每个边缘点的梯度方向(即边缘的法线方向)。为了提升匹配速度和鲁棒性,Halcon会将连续的梯度方向量化为几个离散的方向(例如,量化为0°-360°之间的8、16或32个方向)。

    • 结果:最终生成的模板(.shm文件)本质上是一个多分辨率、由带方向的边缘点组成的集合,并附带了一些用于加速搜索的索引结构。

为什么用边缘/梯度?
因为相对于灰度值,边缘特征对光照变化、颜色变化、纹理变化以及局部遮挡具有更强的鲁棒性。

二、 图像匹配 - 搜索阶段

这个阶段的目标是在一张新的、待检测的图像中,快速找到所有与模板相似的实例。

  1. 输入待检测图像

  2. 图像金字塔搜索

    • 匹配过程从金字塔的顶层(最低分辨率)开始。

    • 原因:顶层图像像素少,噪声少,可以非常快地进行粗略的全局搜索,排除掉大量不可能的候选位置。

    • 在顶层找到一些“可能”的位置(候选点)后,算法会沿着金字塔向下,在更高分辨率的图层上对这些候选位置进行精炼和验证

    • 这种“由粗到细”的策略是Halcon形状匹配能够如此快速的根本原因。

  3. 相似性度量 - 另一个核心

    • 在金字塔的每一层,算法如何判断某个位置是不是匹配呢?它使用一种叫做归一化相关系数的变体,但作用在梯度方向上。

    • 具体来说,对于图像中的一个候选位置(x, y)和旋转角度θ,算法会:

      • 将模板的轮廓点(及其量化后的梯度方向)通过仿射变换(平移(x, y),旋转θ)投射到待检测图像上。

      • 在待检测图像上,计算这些投射点位置的实际梯度方向

      • 比较模板点的预期梯度方向和图像上对应点的实际梯度方向。如果两者方向一致,则认为该点是一个好的匹配点。

    • 将所有轮廓点的匹配程度汇总,得到一个匹配得分(Score),范围通常是0到1。1表示完美匹配,0表示完全不匹配。

  4. 结果输出

    • 算法会输出所有匹配得分高于用户设定阈值(如MinScore)的实例。

    • 对于每个找到的实例,输出其位置(Row, Column)、旋转角度Angle,如果使用了可缩放模板,还会输出缩放比例Scale

三、 主要特点与优势

  1. 高速度

    • 基于图像金字塔的“由粗到细”的搜索策略。

    • 梯度方向的量化。

    • 优化的算法,可以处理亚像素精度。

  2. 高鲁棒性

    • 对光照变化不敏感:因为使用梯度而非灰度值。

    • 对遮挡不敏感:匹配得分是轮廓点的总和,即使有部分点被遮挡,只要剩余点的匹配得分超过阈值,依然能找到。

    • 对噪声不敏感:金字塔顶层本身就具有平滑去噪的效果。

    • 对杂乱背景不敏感:只要模板特征足够独特,就能从复杂背景中分离出来。

  3. 灵活性

    • 可以处理多个实例

    • 可以处理旋转和缩放(通过创建相应模型)。

    • 甚至可以处理轻微的形变(通过设置MaxDeformation等参数)。

四、 关键参数解析

在使用find_shape_model时,理解以下参数对优化匹配效果至关重要:

  • NumLevels:金字塔层数。层数越多,搜索越快,但可能会漏掉小物体或细节。

  • AngleStart/AngleExtent:限制搜索的旋转角度范围,可以大幅加速搜索。

  • MinScore:最小匹配得分。设置越高,要求越严格,可能漏检;设置过低,可能导致误检。

  • Greediness:贪婪度(0-1)。控制搜索的“侵略性”。值越高(接近1),速度越快,但可能漏掉一些较差的匹配;值越低(接近0),速度越慢,但搜索更彻底。

  • MaxOverlap:最大重叠度。用于处理多个实例时,允许实例之间重叠的比例。

总结

Halcon形状匹配的本质是:一种基于物体轮廓梯度方向的多分辨率、由粗到细的相似性搜索算法

它的强大之处在于将人类视觉中“看形状”的直觉,转化为了一套高效、鲁棒的数学计算和搜索流程,使其成为工业视觉定位应用中无可替代的工具。

五、是形状匹配(Shape Matching)原理

1、HALCON 中模板匹配(Template Matching)的原理

类型HALCON 算子特点
基于灰度的匹配create_template,find_template快速,但不抗光照、遮挡
基于形状(边缘)的匹配create_shape_model,find_shape_model高精度,抗光照、速度快
基于局部仿射的匹配create_aniso_shape_model允许方向非均匀缩放
基于透视模型的匹配create_planar_calib_deformable_model用于视角变化
基于梯度方向匹配create_shape_model_xld抗噪、抗光变化
ROI │ ▼ 提取边缘 │ ▼ 计算梯度方向 │ ▼ 筛选稳定边缘 │ ▼ 建立Shape Model

边缘提取

为什么要建立图像金字塔?

例如:图片:4000×3000

直接搜索:速度:太慢。

HALCON:

Level3 400×300 ↓ Level2 800×600 ↓ Level1 1600×1200 ↓ Level0 4000×3000

先:粗搜索。再:细搜索。速度:提高:几十倍。

2、形状模板匹配(Shape-Based Matching)数学原理

待检测图像 │ ▼ 建立图像金字塔 │ ▼ 每层提取边缘 │ ▼ 旋转搜索 │ ▼ 平移搜索 │ ▼ Score计算 │ ▼ 粗定位 │ ▼ 亚像素优化 │ ▼ 输出 (Row,Column,Angle,Score)

HALCON 的 Shape Model 是基于边缘点(XLD)+ 梯度方向的匹配。

HALCON 提供多种类型的模板匹配:

形状匹配是在图像中找到与模板形状最相似的目标的技术。
在 Halcon 中,它主要用来处理目标位置、角度、缩放变化等情况。

Halcon 的形状匹配分两类:

  1. 基于轮廓的形状匹配(Contours-based / Shape-based Matching)

  2. 基于灰度的形状匹配(Gray-value / Intensity-based Matching)

1. 提取模板轮廓(XLD)

edges = Edges(image, ...) // Canny or Sobel XLD = SelectEdges(edges)

2. 建立形状模型(Shape Model)

3、匹配阶段 find_shape_model 的原理

1. 梯度方向一致性检查

2. 位姿投票(Generalized Hough Transform)

数学

3. 模板评分(Score)

4. 亚像素精定位

6、vector_angle_to_rigid()

将:

模板坐标:

转换:

实际坐标。

5、HALCON vs OpenCV 模板匹配对比

项目HALCON shape-basedOpenCV TM / SIFT
光照✔ 抗光照✘ 灰度 TM 很差
旋转缩放✔ 支持✘ TM 不支持
遮挡✔ 可容忍✘ TM 基本崩
精度亚像素到像素
速度非常快中等
工业应用标配较少

3️⃣ 旋转、缩放、平移处理

Halcon 的轮廓匹配支持:

  • 平移:模板在图像中移动。

  • 旋转:模板可旋转一定角度范围。

  • 缩放:模板可按比例缩放。

  • 亚像素精度:匹配结果可以达到亚像素精度。

Halcon 使用金字塔搜索和轮廓方向编码来加速匹配和提高鲁棒性。


4️⃣ 优缺点

优点缺点
对目标形状变化(旋转、缩放)鲁棒对严重遮挡敏感
精度高(亚像素级)对光照和噪声敏感
速度快,Halcon 内置优化模板需要精心选择,边缘提取质量影响大

5️⃣ 应用场景

  • ✅ 工业零件定位

    ✅ 机器人抓取

    ✅ PCB 定位

    ✅ 汽车零件装配

    ✅ 存在旋转

    ✅ 存在少量遮挡

    ✅ 光照变化

    不推荐:

    ❌ 目标发生较大形变(橡胶、布料等)

    ❌ 尺度变化很大(普通 Shape Model 不处理尺度,可使用 Scaled Shape Model)

    ❌ 纹理丰富但边缘不明显(可考虑特征点方法)

内容Shape-Based Matching 核心
匹配对象边缘点 + 梯度方向,不是灰度
数学基础梯度计算、几何变换、边缘一致性评分、局部优化
建模create_shape_model提取稳定边缘并建立多分辨率模型
搜索图像金字塔 + 平移 + 旋转搜索
Score边缘位置和方向的一致程度(HALCON 未公开完整公式)
精定位亚像素优化(输出 Row、Column、Angle)
关键算子create_shape_modelfind_shape_modelcreate_shape_model_xldfind_shape_models
适用场景工业定位、机器人抓取、PCB、装配、存在旋转和一定遮挡