Halcon 二维匹配

匹配:在训练图像中呈现一个所谓的模板。系统从这个模板中派生出一个模型,通过使用该模型来定位于搜索图像中的相似模板对象。此方法能够处理打光、杂乱、位置和旋转变换的图像。

匹配优点:鲁棒性和灵活性。匹配不需要对目标进行任何形式的分割。通过某些匹配方法,即使对象与其他对象重叠,也可以定位对象。

Halcon提供不同的匹配方法,选择哪种方法取决于图像和需要解决的问题。

不同的匹配方法如下:

基于相关性的匹配是根据灰度值和归一化的关系。

基于形状匹配代表机器视觉最新技术,而不适应灰度值,沿着轮廓提取特征,并用于模型的生产和匹配。

局部变换匹配类似于形状匹配,这可处理和返回不同的变形。特别是,除位置和分数外,匹配可以返回搜索图像重要特征,描述变换的向量场以及找到的模型实例的轮廓变换。

透视可变换匹配也类似基于形状匹配,此方法可处理变换较大的透视图,并且返回二维投影变换矩阵而不是2D姿态。

基于描述符的匹配与透视可变形匹配意义相同,在未校准情况下课二维投影变换矩阵,在校准情况下课获得三维位置信息。注意区别是点而不是轮廓被用来创建和识别模型。因此,适应于高纹理对象,但不适合具有圆形边缘的低纹理对象。下图总结二维匹配方法:

1 基本概念

匹配分为以下几步:

1.1 读取图像

获取图像进行模板匹配和训练。

1.2 创建模板

创建模板对象,需要指定覆盖训练图像中模板的感兴趣区域。图像稳定的部分才适合用于训练,训练算子的输入是简化图和控制参数,模型的句柄是训练输出。然后将用于立即搜索或存储到文件中。

1.3 寻找模型

创建(或加载)模型后,现在可以使用它来定位图像中的对象。每个方法都提供直线此任务的特定方法。如果找到一个或多个对象,则返回他妈的姿态(位置、旋转和缩放)或二维投影变换矩阵以及分数。这些值是期望结果可作为视觉过程的下一步的输入,例如定位感兴趣区域。

2 程序示例

2.1 简单示例

cpp 复制代码
read_image(ReferenceImage,'board/board_01')
create_generic_shape_model(ModelID)
gen_rectangle1(ROI,450,470,580,755)
reduce_domain(ReferenceImage,ROI,TrainingImage)
train_generic_shape_model(TrainingImage,ModelID)
set_generic_shape_model_param(ModelID,'num_matches',1)
set_generic_shape_model_param(ModelID,'min_score',0.6)

*
for i:=1 to 9 by 1
    read_image(SearchImage,'board/board_'+i$'02')
    find_generic_shape_model(SearchImage,ModelID,MatchResultID,NumMatchResult)
    
    *检索图像匹配结果
    get_generic_shape_model_result_object(Objects,MatchResultID,'all','contours')
    
    * 显示结果
    dev_display(SearchImage)
    dev_display(Objects)
    Text:='Found instances'
    dev_disp_text(Text,'window',12,12,'black', [], [])
    wait_seconds(1)
endfor

2.2 基于关联的匹配:在纹理中识别标签

cpp 复制代码
read_image(Image,'face_masks/face_mask_01')
create_generic_shape_model(ModelID)
gen_rectangle2(ROI,616.5,708.5,rad(-82.4054),50,35)
reduce_domain(Image,ROI,ImageReduced)
create_ncc_model(ImageReduced,'auto',rad(0),rad(360),'auto','use_polarity',ModelID)

NumImages:=9
Color:='green'
for Index:=1 to NumImages by 1
    read_image(Image,'face_masks/face_mask_'+Index$'02')
    find_ncc_model(Image,ModelID,rad(0),rad(360),0.7,1,0.5,'true',0,Row,Column,Angle,Score)
    dev_display_ncc_matching_results(ModelID,Color,Row,Column,Angle,0)
endfor
相关推荐
远航计算机1 天前
职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册
大数据·人工智能·自动化·aigc·火山引擎
旋生万物1 天前
电磁力 = 螺旋联络的 90° 旋转?麦克斯韦方程组的几何重构
人工智能·python·算法·机器学习·copilot·世界模型·物理ai
Vince的修炼之路1 天前
防 Prompt 注入安全技术深度分析
人工智能·安全
Vince的修炼之路1 天前
RAG 文档处理技术深度分析:PDF 解析、表格提取、OCR 识别全链路
人工智能·架构
Vuji1 天前
MCP: 一条 tool 调用链路的旅程
前端·人工智能
SEO_juper1 天前
用Google Search Console数据做内容审计:找出网站上哪些页面在“吃白饭“
大数据·人工智能·外贸独立站
余俊晖1 天前
多模态大模型细粒度视觉理解:Vision-OPD在线策略自蒸馏技术方案概述
人工智能·深度学习·算法·多模态·opd
付玉祥1 天前
以业务语义网为中心:企业本体端到端智能构建与 Agent 执行实践
人工智能
dozenyaoyida1 天前
AI与大模型新闻日报 | 2026-08-01
人工智能·ai·大模型·新闻
大伟先生1 天前
OpenClaw 数据采集实战入门
人工智能·深度学习