news 2026/4/19 12:00:48

图像模板匹配技术详解(含 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_modelNumLevels参数指定金字塔层级(通常 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/4/17 19:57:12

卫星插画推荐:星轨下的科技美学像素漫画图赏

《美文美图每日一推》 今天推荐的是关于卫星插画的图片素材,共有5张内容,如果有宝子们想要商用记得需要获摄图网版权授权©后呦!!!🏢, 当然你也可以在平台检索当前主题:#卫星星轨# #星链插画# #不完美星图# #星轨尽头# #像素卫…

作者头像 李华
网站建设 2026/4/18 5:39:12

vue和springboot框架开发的汽车租赁买卖管理系统_189h7k1a

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

作者头像 李华
网站建设 2026/4/17 6:12:59

免费AIPPT生成工具推荐:一键生成+实时预览,支持Markdown/PDF导入

还在愁找不到好用的AI PPT生成工具?别找啦!“秒出PPT”这神器,操作简单得像玩游戏,功能全得像个百宝箱,选它就对啦!它不仅能帮你快速生成PPT,还把很多细节做得很贴心,让做PPT变成一件…

作者头像 李华
网站建设 2026/4/17 20:43:05

企业级 IM:不仅仅是聊天,更是构建数字堡垒的基石

一、重新定义企业 IM 在数字化转型的浪潮中,企业即时通讯早已脱离了单纯“聊天工具”的范畴。 与微信、QQ 等个人社交软件不同,企业 IM 是专为 工作场景 和 组织协同 而生的数字神经系统。它的核心区别在于: 组织架构驱动:一切沟通…

作者头像 李华
网站建设 2026/4/17 19:29:52

10招轻松清理C盘,释放10GB空间

C盘清理技巧分享的技术文章大纲清理临时文件和垃圾文件使用系统自带的磁盘清理工具手动删除临时文件夹(如 %temp% 和 C:\Windows\Temp)清理浏览器缓存和下载历史卸载不必要的软件和程序通过控制面板或系统设置卸载未使用的应用程序使用第三方卸载工具彻底…

作者头像 李华
网站建设 2026/4/17 14:05:00

怎么实现涂装工艺管理的智能化转型?

在现代制造业向高质量、高效率、低碳化转型的进程中,涂装工艺管理正经历一场深刻变革。传统涂装依赖人工经验、事后检验与孤立操作,普遍存在质量波动大、返工率高、能耗浪费严重、数据孤岛频现等问题,难以满足日益严苛的环保标准与客户对产品…

作者头像 李华