news 2026/11/6 7:59:05

图像模板匹配技术详解(含 Halcon 实例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像模板匹配技术详解(含 Halcon 实例)

一、基于灰度值的模板匹配

1. 基本原理

基于灰度值的匹配通过衡量模板图像(T)与待匹配图像(S)子区域的灰度相似性实现定位,核心是计算归一化积相关系数(NCC),公式如下:

(R(i,j) = \frac{\sum{m=1}^{M}\sum{n=1}^{N} T(m,n) \cdot S{i,j}(m,n)}{\sqrt{\sum{m=1}^{M}\sum{n=1}^{N} T(m,n)^2 \cdot \sum{m=1}^{M}\sum{n=1}^{N} S{i,j}(m,n)^2}})

  • (R(i,j) \in [-1,1]),值越接近 1,匹配度越高。

  • 原理:模板在待匹配图像上滑动,计算每个位置的 NCC 值,最大值对应最佳匹配位置。

2. 序贯相似性检测算法(SSDA)

为提高效率,SSDA 通过累加误差阈值判断提前终止非匹配区域的计算:

  1. 定义绝对误差:(|S_{i,j}(m,n) - T(m,n)|);

  2. 设定阈值(T_k),随机选取像素点累加误差,若超过(T_k)则标记为非匹配区域,记录累加次数r;

  3. r越大,匹配度越高(匹配区域需更多计算才可能超过阈值)。

3. Halcon 灰度匹配算子及实例

核心算子
  • create_ncc_model(Template, NumLevels, AngleStart, AngleExtent, AngleStep, Metric, ModelID):创建 NCC 模板

  • find_ncc_model(Image, ModelID, AngleStart, AngleExtent, MinScore, NumMatches, ..., Row, Column, Angle, Score):搜索最佳匹配

实例:SMD 芯片匹配
dev_update_off () read_image (Image, 'smd/smd_on_chip_05') // 读取图像 get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, 'black', WindowHandle) dev_set_color ('green') dev_set_draw ('margin') ​ // 定义模板区域(ROI) gen_rectangle1 (Rectangle, 175, 156, 440, 460) reduce_domain (Image, Rectangle, ImageReduced) // 裁剪模板区域 ​ // 创建NCC模板(支持旋转角度0~0,自动金字塔层级) create_ncc_model (ImageReduced, 'auto', 0, 0, 'auto', 'use_polarity', ModelID) ​ dev_display (Image) dev_display (Rectangle) stop () ​ // 批量匹配多幅图像 for J := 1 to 11 by 1 read_image (Image, 'smd/smd_on_chip_' + J$'02') // 搜索匹配(最小得分0.5,最多1个匹配) find_ncc_model (Image, ModelID, 0, 0, 0.5, 1, 0.5, 'true', 0, Row, Column, Angle, Score) dev_display (Image) // 显示匹配结果 dev_display_ncc_matching_results (ModelID, 'green', Row, Column, Angle, 0) stop () endfor ​ clear_ncc_model (ModelID) // 释放模板

二、基于特征的模板匹配

1. 基本原理

通过提取图像的特征点 / 轮廓 / 矩等信息进行匹配,解决灰度匹配对光照、旋转敏感的问题,常见方法包括:

  • 不变矩匹配:利用图像矩的旋转 / 缩放不变性匹配;

  • 距离变换匹配:计算边缘点到模板边缘的最小欧式距离,距离越小匹配度越高;

  • 最小均方误差匹配:通过仿射变换模型最小化对应点对的误差。

2. Halcon 特征匹配算子及实例

核心算子
  • create_shape_model(Template, NumLevels, AngleStart, AngleExtent, AngleStep, ..., ModelID):创建形状模板

  • find_shape_model(Image, ModelID, AngleStart, AngleExtent, MinScore, ..., Row, Column, Angle, Score):搜索形状匹配

实例:形状模板匹配
dev_update_off () read_image (Image, 'part.png') // 读取包含目标的图像 dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, 'black', WindowHandle) ​ // 提取模板区域(假设目标为矩形) threshold (Image, Region, 100, 255) connection (Region, ConnectedRegions) select_shape (ConnectedRegions, TemplateRegion, 'area', 'and', 500, 10000) ​ // 检查模板可行性(生成金字塔层级) inspect_shape_model (TemplateRegion, ModelImages, ModelRegions, 4, 30) ​ // 创建形状模板(支持旋转-30°~30°,步长1°) create_shape_model (TemplateRegion, 4, -0.52, 1.05, 'auto', 'none', 'use_polarity', 30, 10, ModelID) ​ // 获取模板轮廓用于显示 get_shape_contours (ModelContours, ModelID, 1) ​ // 读取待匹配图像并搜索 read_image (TestImage, 'part_test.png') find_shape_model (TestImage, ModelID, -0.52, 1.05, 0.6, 1, 0.5, 'least_squares', 0, 0.9, Row, Col, Angle, Score) ​ // 显示结果 dev_display (TestImage) dev_display_shape_matching_results (ModelID, 'green', Row, Col, Angle, 1, 1, 0) stop () ​ clear_shape_model (ModelID) // 释放模板

三、图像金字塔

1. 定义与作用

图像金字塔是多分辨率图像集合,自下而上分辨率逐步降低,用于:

  • 加速匹配(先在低分辨率层粗匹配,再在高分辨率层精匹配);

  • 提高抗干扰能力(低分辨率层过滤细节噪声)。

2. 常见类型

  • 高斯金字塔:通过高斯模糊 + 下采样(去除偶数行 / 列)生成,用于向下采样;

  • 拉普拉斯金字塔:记录高斯金字塔层间差异,用于图像重建(向上采样)。

3. Halcon 金字塔相关算子

  • inspect_shape_model(Image, ModelImages, ModelRegions, NumLevels, Contrast):检查模板并生成金字塔;

  • create_shape_model中NumLevels参数指定金字塔层级(通常 3~5 层)。

四、Halcon Matching 助手

1. 功能

可视化创建模板、设置参数(如旋转范围、最小得分)、测试匹配结果,并自动生成代码,支持 4 种匹配方式:

  • 基于形状的匹配;

  • 基于相关性的匹配(NCC);

  • 基于描述符的匹配;

  • 基于形变的匹配。

2. 使用步骤

  1. 打开助手:助手 → 打开新的Matching;

  2. 创建模板:从图像中框选 ROI 或加载已有模板;

  3. 配置参数:设置角度范围、金字塔层级、最小得分等;

  4. 测试匹配:在 “检测” 选项卡执行匹配,查看结果;

  5. 生成代码:在 “代码生成” 选项卡导出可执行的 Halcon 程序。

五、本章小结

  • 灰度匹配:基于像素灰度相关性(NCC),适用于光照稳定、无大幅形变场景;

  • 特征匹配:基于形状 / 轮廓特征,抗光照、旋转能力强,适用于复杂场景;

  • 图像金字塔:通过多分辨率加速匹配,平衡效率与精度;

  • Matching 助手:简化模板创建与参数调试,快速生成匹配代码。

习题参考思路

  1. 8.1:图像匹配目的是定位目标在图像中的位置 / 姿态,常用方法包括灰度匹配(NCC、SSDA)、特征匹配(形状、不变矩)、基于描述符的匹配(SIFT、SURF)等。

  2. 8.2 字母识别:

    • 步骤:创建每个字母的形状模板 → 对测试图像预处理(二值化、去噪) → 用find_shape_model批量匹配并输出结果。

  3. 8.3 数字 3 和 5 识别:

    • 步骤:分别创建 “3” 和 “5” 的模板 → 遍历图像用find_shape_model搜索,设置NumMatches为 “所有”,筛选得分高于阈值的结果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 4:24:35

5-脱氧-L-阿拉伯糖—结构独特的稀有单糖,药物设计与合成化学的宝贵砌块 CAS:13039-56-0

5-脱氧-L-阿拉伯糖是一种天然存在但相对稀有的五碳脱氧单糖,其独特的L-构型与脱氧结构赋予其区别于常见D-型糖的化学与生物学特性。作为手性合成与药物化学中的高价值砌块,它正日益受到糖化学、抗感染药物研发及糖生物学研究领域的关注。化学信息化学名称…

作者头像 李华
网站建设 2026/11/5 10:57:02

2-乙酰胺基-1,3,4,6-四-O-乙酰基-2-脱氧-5-硫代-α-D-吡喃葡萄糖 —— 糖化学与药物研发的关键砌块 CAS:67561-97-1

2-乙酰胺基-1,3,4,6-四-O-乙酰基-2-脱氧-5-硫代-α-D-吡喃葡萄糖是糖化学与糖药物研究领域中一类重要的修饰单糖衍生物。作为5-硫代葡萄糖的结构前体与保护形式,它不仅是糖生物学基础研究的关键工具分子,更为开发新型糖基化抑制剂、糖模拟药物及诊断探针…

作者头像 李华
网站建设 2026/11/6 2:31:58

群体分析如何改变你的客户洞察

原文:towardsdatascience.com/how-cohort-analysis-can-transform-your-customer-insights-ff7e221b8fdc 尽管进行了数月的营销努力,但你的销售额仍在下降,客户参与度也在下降。出了什么问题?如果有一种方法可以精确地确定客户何时…

作者头像 李华
网站建设 2026/11/6 5:54:44

别再为BGM被下架了,可以生成带声音且无版权素材的AI,真的来了

我做自媒体这么多年,最怕的不是没灵感,而是“做完视频被版权一刀切”。BGM 要么平台判侵权,要么授权贵到离谱;环境音、拟音、人声配音更麻烦——自己录质量差,请配音师成本高、周期长。所以我一直在找一种东西&#xf…

作者头像 李华
网站建设 2026/11/6 2:32:59

vue和springboot框架开发的校园商店零售管理系统_pt87nuk3

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vuespringboot_pt87nuk3 框架开发的校园商店零售管理…

作者头像 李华
网站建设 2026/11/5 9:05:28

vue和springboot框架开发的校园智能AI问答技术的快递物流管理系统_5kf8to85

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vuespringbootAI_5kf8to85 问答技术的快递物流管理系…

作者头像 李华