Halcon 模板匹配 Shape-Based Matching原理

Halcon 模板匹配 Shape-Based Matching原理
其核心原理可以分为两个主要部分模板创建离线阶段和图像匹配在线阶段。Shape-Based Matching形状模板匹配不是比较灰度而是比较轮廓EdgeShape-Based Matching 边缘提取 梯度方向编码 图像金字塔 几何搜索 亚像素优化因此光照变化影响小对旋转鲁棒可支持部分遮挡定位精度高保留边缘。所以它根本不关心里面到底黑色还是白色。因此光照变化影响很小简单流程原图 ↓ ROI ↓ 边缘提取 ↓ 建立Shape Model ↓ 保存模型 ------------------------ 检测图片 ↓ 边缘提取 ↓ 金字塔搜索 ↓ 粗定位 ↓ 细定位 ↓ 亚像素优化 ↓ 输出 (Row Column Angle Score)2D 形状匹配 目标物体被遮挡如何解决-CSDN博客一、 模板创建 - 学习阶段这个阶段的目标是创建一个紧凑而富有信息的模板用于在后续的图像中搜索。输入参考图像选择一张高质量的、包含目标物体的图像物体轮廓清晰对比度好。定义模板区域用户通过绘制一个ROI感兴趣区域通常是矩形、多边形或圆形来精确指定图像中哪个部分是我们要找的模板。这步非常关键因为它排除了背景干扰。特征提取 - 核心所在Halcon并不直接存储模板的像素信息。相反它提取物体的轮廓特征。这些特征主要基于物体的边缘梯度信息。过程边缘检测首先在模板区域内进行边缘检测如使用sobel,edges_image等算子得到物体的轮廓。创建模型使用create_shape_model或create_scaled_shape_model带缩放等算子。金字塔化算子内部会为模板图像创建图像金字塔。金字塔顶层是原图的下采样版本分辨率低但特征稳定底层是原图或接近原图的分辨率。梯度方向量化在每个金字塔层级上计算轮廓上每个边缘点的梯度方向即边缘的法线方向。为了提升匹配速度和鲁棒性Halcon会将连续的梯度方向量化为几个离散的方向例如量化为0°-360°之间的8、16或32个方向。结果最终生成的模板.shm文件本质上是一个多分辨率、由带方向的边缘点组成的集合并附带了一些用于加速搜索的索引结构。为什么用边缘/梯度因为相对于灰度值边缘特征对光照变化、颜色变化、纹理变化以及局部遮挡具有更强的鲁棒性。二、 图像匹配 - 搜索阶段这个阶段的目标是在一张新的、待检测的图像中快速找到所有与模板相似的实例。输入待检测图像。图像金字塔搜索匹配过程从金字塔的顶层最低分辨率开始。原因顶层图像像素少噪声少可以非常快地进行粗略的全局搜索排除掉大量不可能的候选位置。在顶层找到一些“可能”的位置候选点后算法会沿着金字塔向下在更高分辨率的图层上对这些候选位置进行精炼和验证。这种“由粗到细”的策略是Halcon形状匹配能够如此快速的根本原因。相似性度量 - 另一个核心在金字塔的每一层算法如何判断某个位置是不是匹配呢它使用一种叫做归一化相关系数的变体但作用在梯度方向上。具体来说对于图像中的一个候选位置(x, y)和旋转角度θ算法会将模板的轮廓点及其量化后的梯度方向通过仿射变换平移(x, y)旋转θ投射到待检测图像上。在待检测图像上计算这些投射点位置的实际梯度方向。比较模板点的预期梯度方向和图像上对应点的实际梯度方向。如果两者方向一致则认为该点是一个好的匹配点。将所有轮廓点的匹配程度汇总得到一个匹配得分Score范围通常是0到1。1表示完美匹配0表示完全不匹配。结果输出算法会输出所有匹配得分高于用户设定阈值如MinScore的实例。对于每个找到的实例输出其位置(Row, Column)、旋转角度Angle如果使用了可缩放模板还会输出缩放比例Scale。三、 主要特点与优势高速度基于图像金字塔的“由粗到细”的搜索策略。梯度方向的量化。优化的算法可以处理亚像素精度。高鲁棒性对光照变化不敏感因为使用梯度而非灰度值。对遮挡不敏感匹配得分是轮廓点的总和即使有部分点被遮挡只要剩余点的匹配得分超过阈值依然能找到。对噪声不敏感金字塔顶层本身就具有平滑去噪的效果。对杂乱背景不敏感只要模板特征足够独特就能从复杂背景中分离出来。灵活性可以处理多个实例。可以处理旋转和缩放通过创建相应模型。甚至可以处理轻微的形变通过设置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直接搜索速度太慢。HALCONLevel3 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 的形状匹配分两类基于轮廓的形状匹配Contours-based / Shape-based Matching基于灰度的形状匹配Gray-value / Intensity-based Matching1. 提取模板轮廓XLDedges Edges(image, ...) // Canny or Sobel XLD SelectEdges(edges)2. 建立形状模型Shape Model3、匹配阶段 find_shape_model 的原理1. 梯度方向一致性检查2. 位姿投票Generalized Hough Transform数学3. 模板评分Score4. 亚像素精定位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_model、find_shape_model、create_shape_model_xld、find_shape_models适用场景工业定位、机器人抓取、PCB、装配、存在旋转和一定遮挡