halcon算子(模板匹配)

《创建灰度值模板》

创建基于灰度值模版(基于归一化相关性模版)

*参数1: 输入的图片 做模版的图片

*参数2: 金字塔层级,设置为auto自动选择金字塔层级, 值越大,匹配速度越快, 不同分辨率下的模版

*参数3: 起始角度 rad(-180) 转成弧度数

*参数4:结束角度

*参数5:角度递增量

*参数6:'use_polarity' 使用极性 ignore_global_polarity 忽略极性

*参数7 ModelID 模版的id 获取匹配的结果可以通过id进行获取

create_ncc_model (ImageReduced, 'auto', rad(-180), rad(180), 'auto', 'use_polarity', ModelID)

《查找模板匹配结果》

find_ncc_model (Image1, ModelID, rad(-180), rad(180), 0.8, 1, 0.5, 'true', 0, Row1, Column1, Angle, Score)

*1 输入的图片

*2 模版id

*3、4 开始角度和结束角度

*5 最小得分

*6 匹配的个数 1 就是1个,0匹配多个

*7 重叠率 0.5 超出0.5 谁的得分高 就匹配到谁,

*8 是否启用亚像素级别 true使用

*9 金字塔层级 0 保留的细节多,计算量比较大

*10、11 模版匹配点的坐标

*12 模版匹配结果的角度

*13 模版匹配的得分

《释放模板句柄》

clear_ncc_model (ModelID) // 释放模版句柄

《模板的导入》

read_ncc_model ('1.shm', ModelID) // 导入模版

*参数1 模板的路径

*参数2 输出的图片

《模板的导出》

write_ncc_model (ModelID,'1.shm' )//导出模版

*参数1 输入的图片

*参数2 导出的路径

《基于形状的模板》

create_scaled_shape_model (ImageReduced, 'auto', rad(-45), rad(90), 'auto', 0.8, 1.1, 'auto', 'auto', 'ignore_global_polarity', 'auto', 'auto', ModelID)

*参数6、7 缩放比例最小值和最大值

*参数8 缩放的递增量

*参数9 Optimization优化方式 自动模型优化方式

*参数11 Contrast: 对比度 自动计算对比度

*参数12 MinContrast 最小的对比度

《获取模板中心点坐标》

get_shape_model_contours (ModelContours, ModelID, 1) // 获取模版轮廓信息

《刚性的仿射变换》

vector_angle_to_rigid (0, 0, 0, Row, Column, 0, HomMat2D)

*从第一个点的位置、角度变换到第二点的位置、角度

*HomMat2D 输出参数 获取变换矩阵

坐标原点 (0,0)不旋转(角度 0) 移动到 (Row, Column)仍然不旋转(角度 0) 生成一个纯平移矩阵 ,存到 HomMat2D

《把变换矩阵使用指定轮廓》

affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)

ModelContours:模板的原始轮廓(默认在原点)

HomMat2D移动指令(移到哪、转多少)

ContoursAffineTrans移动后的轮廓(画在图上就是匹配框)

《模板匹配》

find_scaled_shape_model (Image1, ModelID, rad(-45), rad(90), 0.8, 1.1, 0.5, 0, 0.5, 'least_squares', 0, 0.8, Row1, Column1, Angle, Scale, Score)

*参数SubFixel:是否启用亚像素级别 None:不启用,least_squares 启用亚像素级匹配 最小二乘法查找亚像素

*参数Greediness 贪婪度(值越大查找速度越快)

Image1

在找在这张图片里搜索目标。

ModelID

用啥找create_scaled_shape_model 创建好的模板 ID。

rad(-45)

最小角度 目标最少能旋转 -45°(逆时针 45 度)

rad(90)

最大角度 目标最多能旋转 90°(顺时针 90 度)

0.8

最小缩放 目标最小可以缩到原来的 0.8 倍

1.1

最大缩放 目标最大可以放到原来的 1.1 倍

0.5

最小得分(最关键!)

得分范围:0 ~ 1

低于 0.5 的结果直接丢掉

数值越高,匹配越准,但更容易找不到

你第三个框不准,就是这个值设太低了

0

最多找几个目标

0 = 找到所有符合的目标

1 = 只找一个

0.5

金字塔重叠度不用管,默认 0.5 就行。

'least_squares'

精度模式 least_squares = 高精度亚像素定位

0

插值默认 0 即可。

0.8

贪婪度

越大:找得越快,但可能漏检

越小:找得越准,但更慢0.8 是平衡值。

输出结果

Row1, Column1

目标中心坐标(画框用)

Angle

目标旋转角度

Scale

目标缩放倍数

Score

匹配得分 越接近 1 越准,低于 0.5 都是误匹配

《展示基于形状模版匹配结果》

dev_display_shape_matching_results (ModelID, 'red', Row1, Column1, Angle, Scale, Scale, 0)

ModelID你做好的模板 ID,用来画轮廓。

'red' 匹配框画成红色,也可以写 'green'、'blue'。

Row1, Column1 匹配到的目标中心位置

Angle 目标旋转角度

Scale, Scale 目标缩放大小(等比例缩放写两个一样就行)。

0 固定参数,直接写 0 就完事。

《仿射变换查找结果》

*基础的变换 平移变换、旋转变换、缩放变换、倾斜变换

for Index := 0 to |Row1|-1 by 1

*1创建初始化的仿射矩阵

hom_mat2d_identity (HomMat2DIdentity)

*2 生成平移变换矩阵 参数1初始化的矩阵 参数2和参数3移动的位置

hom_mat2d_translate (HomMat2DIdentity,Row1Index, Column1Index, HomMat2DTranslate)

*3 生成一个旋转矩阵 参数1是平移矩阵

hom_mat2d_rotate (HomMat2DTranslate, AngleIndex,Row1Index, Column1Index, HomMat2DRotate)

*4 生成一个缩放矩阵 参数1是旋转矩阵

hom_mat2d_scale (HomMat2DRotate, ScaleIndex, ScaleIndex,Row1Index, Column1Index, HomMat2DScale)

*5 使用矩阵

affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2DScale)

*6展示变换之后轮廓信息

dev_display (ContoursAffineTrans)

平移变换 hom_mat2d_translate

作用:移动位置把轮廓从原点 → 移到目标中心。

旋转变换 hom_mat2d_rotate

作用:调整角度让框跟着目标的旋转角度一起转。

缩放变换 hom_mat2d_scale

作用:调整大小让框的大小匹配目标大小。

倾斜变换(你没用到)

hom_mat2d_slant作用:拉斜、歪着变换(一般匹配不用)

相关推荐
小雨下雨的雨8 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
我没胡说八道11 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟11 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love11 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇11 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明11 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc11 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技11 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本11 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
极客老王说Agent11 小时前
2026电信IDC机房巡检深度报告:人工巡检频次和深度够吗?实在Agent重塑智慧运维新范式
人工智能·ai·chatgpt