3. 基于形状的模板匹配原理

基于形状的模板匹配(Shape-Based Matching)是 HALCON 中定位精度最高、抗干扰能力最强的匹配方法之一。它不依赖灰度值本身,而是把图像中的“形状”抽象为一系列带方向的边缘点,再通过方向梯度与相似度度量完成搜索。理解这条从图像到模型的完整链路,是后续调参、提速和排障的基础。

一、边缘提取:从灰度到轮廓点

匹配的第一步是把模板图像中的目标轮廓提取出来。HALCON 使用基于 Canny 思想的亚像素边缘提取:先对图像做高斯平滑抑制噪声,再计算每个像素的梯度幅值与方向,最后沿梯度方向做非极大值抑制并连接成边缘链。与普通二值边缘不同,这里保留的是亚像素精度的边缘点坐标,即边缘位置可以落在两个像素之间,例如 (128.37, 96.52)。

关键参数是 Sigma(平滑尺度)和 MinContrast(最小对比度)。Sigma 越大,抗噪越强但细节越模糊;MinContrast 决定多弱的边缘被丢弃。教学示例中,对一幅 8 位灰度图上的金属垫片,常用 Sigma=1.0、MinContrast=10,可得到约 400~800 个边缘点,足以描述轮廓又不过度冗余。

二、方向梯度:形状的“指纹”

每个边缘点不仅记录位置,还记录该点的梯度方向——即边缘法线方向,指向灰度由暗到亮的一侧。方向梯度是形状匹配区别于灰度匹配的核心:它让模型对光照变化不敏感,因为明暗整体翻转时,方向会一致地反向,而相对关系不变。

在 HALCON 中,方向通常以角度表示并量化到若干离散方向(如 8 或 16 个方向)。模板创建时,每个边缘点被赋予一个方向索引。搜索时,图像中候选位置的边缘点方向必须与模板对应点方向一致或接近,才计入相似度。这一约束极大压缩了误匹配空间。

① 模板图像 灰度图 / ROI Canny ② 亚像素边缘 边缘点 (x,y) 亚像素 梯度 ③ 方向梯度 法线方向 θ 建模 ④ 形状模型 点集 方向 金字塔 相似度计算与亚像素精化 搜索图像 候选1 候选2 方向相似度 S = (1/N) Σ cos(Δθ) Δθ = 模板方向 − 图像方向 S ∈ [−1, 1],越接近 1 越匹配 匹配结果 候选1: S = 0.94 ✓ 候选2: S = 0.31 ✗ 亚像素位置 (x,y,φ)

三、形状模型生成:金字塔与点集

提取到的边缘点不会全部保留。HALCON 通过 create_shape_model 生成模型时,会做两件关键事:一是按方向筛选边缘点,只保留方向稳定、对比度足够的点;二是构建图像金字塔,把模板降采样为多层(如 4~6 层),从粗到精逐层搜索。

金字塔的作用是提速:在顶层(最小分辨率)先做粗定位,快速排除大量不可能位置;逐层向下细化,最终在原始分辨率上得到精确位置。层数越多速度越快,但过粗的顶层可能丢失小目标。教学示例中,一个 200×200 像素的模板,常用 NumLevels=4,顶层约 25×25,搜索速度可提升数倍。

模型还包含一个角度范围参数。若目标可能旋转,需设置 AngleStart 与 AngleExtent,例如 AngleStart=-30°、AngleExtent=60°,表示在 ±30° 内搜索。角度步长 AngleStep 决定旋转采样的密度,步长越小精度越高但耗时越长。

四、相似度计算:方向一致性打分

搜索时,HALCON 把模型点集平移到候选位置,逐点比较模板方向与图像方向。相似度定义为方向差余弦的平均值:

S = (1/N) * Σ cos(θ_model_i − θ_image_i)

其中 N 为参与计算的点数,θ 为方向角。当所有点方向完全一致时 S=1;方向完全相反时 S=−1;方向随机时 S 趋近 0。实际使用中,通常设定 MinScore(如 0.7)作为接受阈值,低于该值的候选被丢弃。

HALCON 还提供 Greedy 和 Border 等参数控制搜索策略。Greedy 模式在找到高分候选后提前终止,适合目标唯一且对比度好的场景;关闭 Greedy 则遍历所有候选,适合多目标或弱对比场景,但耗时更长。

五、亚像素精度机制

金字塔顶层只能给出像素级位置,真正的亚像素精度来自底层精化。在原始分辨率上,HALCON 对相似度函数在候选位置附近做局部拟合(通常基于边缘点位置的最小二乘或插值),求解使相似度最大的连续坐标。由于边缘点本身是亚像素的,位置、角度均可达到 0.1 像素甚至更高精度。

影响亚像素精度的因素包括:边缘点的亚像素质量、模板点数量、噪声水平以及 SubPixel 参数设置。教学示例中,对同一垫片在 SubPixel='least_squares' 下重复匹配 20 次,位置标准差可控制在 0.05 像素以内;若改为 'none',则退化为整像素精度。

实践提示:若匹配结果在 ±1 像素内跳动,优先检查 Sigma 是否过大、MinContrast 是否过低,以及金字塔层数是否过多导致顶层定位偏差无法在底层完全纠正。

六、参数与效果对照

参数作用典型取值影响
Sigma边缘平滑尺度0.8~1.5越大越抗噪,细节越少
MinContrast最小边缘对比度5~20越大边缘越少,越稳定
NumLevels金字塔层数3~6越多越快,小目标易丢失
AngleStep旋转采样步长0.5°~2°越小越精确,越慢
MinScore接受阈值0.6~0.8越高越严格,漏检风险增大