C# 基于OpenCv的视觉工作流-章41-模板匹配

C# 基于OpenCv的视觉工作流-章41-模板匹配

本章目标:
一、匹配原理;
二、模板创建;
三、模板匹配;

本文模板匹配仅取最佳匹配,即单目标匹配,下章介绍多目标匹配。模板匹配多用于目标定位,后续很多章节点,将采用模板匹配进行整体定位,在整体定位基础上再进行局部区域的定位、识别、判断。

一、匹配原理

模板匹配是用目标图(小图)逐像素在被搜图(大图)上进行移动扫描,找到最相似的地方,详细原理,见文末链接

6种算法公式

二、模板创建

模板创建有多种方式,可手动截图、按坐标截图等,为使用方便,本文介绍拖拽ROI方式。ROI为自定义控件,需要较强的C#基础知识,为减少篇幅,不进行展开描述。

1、生成ROI

根据需要选相应的ROI,ROI框住的范围即为截取的图像区域,即模板。

2、ROI涂抹

一般情况下,上一步截得的模板基本满足大部分匹配需求,但如果想让模板内部某部分不进行匹配,提升效率,则可涂抹掉不需要的区域,再保存为模板。

三、模板匹配

模板取得后,普通应用就可以直接进行匹配操作了,但考虑到模板截取时的缩放(尺度)、被匹配对象存在旋转角度以及匹配效率,需要进行相应的处理。

1、尺度处理

用Resize算子(前文已有介绍,不再详述),将模板图按设置尺度值,进行相应尺度缩放;

2、角度处理

用仿射变换(前文已有介绍,不再详述),将模板图按设置角度值,进行相应旋转;

3、金字塔采样

图像金字塔有上采样和下采样,本文采用下采样方式。对模板图像、被搜图像进行下采样,得到多张不同分辨率的图像。分辨率越低,匹配效率越高。

OpenCv 图像下采样可如下使用

Cv2.PyrDown(image, outImage, new OpenCvSharp.Size(width, height));

其中:参数1,为输入图像;

参数2,为输出图像;

参数3,为输出图像尺寸;

4、模板匹配

模板图及被搜图全部准备好后,即可以进行匹配检测

OpenCv 模板匹配可如下使用

Mat resMat = new Mat();

Cv2.MatchTemplate(srcFinalImage, modelFinalImage, resMat, matchMode);

其中:参数1,为被搜图;

参数2,为模板图;

参数3,为输出匹配结果;

参数4,为匹配方法;

5、获取最佳匹配

匹配后,得到的匹配结果resMat中,有各种信息,可对其进行筛选,选取最好的匹配结果

OpenCv 取最大最小值可如下使用

Cv2.MinMaxLoc(resMat, out double min, out double max, out OpenCvSharp.Point minLoc, out OpenCvSharp.Point maxLoc);

其中:参数1,为匹配结果;

参数2,为最小值;

参数3,为最大值;

参数4,为最小值坐标;

参数5,为最大值坐标;

说明:6种匹配算法中,是最大值最接近模板图,还是最小值最接近模板图?不是固定的规则。

SqDiff算法:值越小,越相似;

SqDiffNormed算法:值越大,越相似;

CCorr算法:值越大,越相似;

CCorrNormed算法:值越小,越相似;

CCoeff算法:值越大,越相似;

CCoeffNormed算法:值越大,越相似;

匹配效果,如下图

参考链接

https://www.bilibili.com/video/BV1RFtpeJE6h?spm_id_from=333.788.videopod.episodes\&vd_source=3f9438f03abb9d3e91fda0640164d626\&p=84

https://www.bilibili.com/video/BV1RFtpeJE6h?spm_id_from=333.788.videopod.episodes\&vd_source=3f9438f03abb9d3e91fda0640164d626\&p=52

"VisionTool 探迹"免费视觉工具

下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i

版本已更新为V1.0.0.2,更新内容如下:

1.增加点查找;

2.增加交点查找;

3.增加轮廓点距,实现两轮廓各点间距测量;

4.增加点-点间距,实现独立点与独立点的距离测量;

5.增加点-线间距,实现独立点与独立线的距离测量;

6.增加线-线间距,实现独立线与独立线的距离测量;

7.增加线-线角度,实现独立线与独立线的角度测量;

8.增加轮廓段距,实现两轮廓的分段间距测量;

9.缺陷检测模块中,修复ROI显示功能;

"VisionTool Halcon"付费视觉工具

下载地址:https://pan.baidu.com/s/1v832KTonDYS6oNnWG2iZtQ?

对应系列文章"C# 基于Halcon的视觉工作流",欢迎前往阅读。

上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!

相关推荐
行走的小派几秒前
Harmony输入法框架解析:IME架构、多模式输入引擎与语音识别链路
人工智能·架构·语音识别
UMI赋能企业5 分钟前
AI实战交流的提问模板:从业务描述到可分析的问题
人工智能·工作流·ai应用
2601_962071008 分钟前
Claude 值不值得用?价格、缓存与 API 接入成本怎么算
人工智能·缓存
自养Agent10 分钟前
Agent Harness 从用到会造:prompt 不是问句,是控制面板
人工智能·大模型·llm·prompt
SeeweTek11 分钟前
设计仿真先行 · 工艺精益求精 · 磁场精准输出
人工智能·亥姆霍兹线圈·磁场发生装置·seewetek·磁控机器人·传感器检测
国科安芯16 分钟前
ASP4644系列抗辐射电源模块的国产化进程、供应链安全与产业生态综述
人工智能·物联网·安全·电池·电源芯片·低轨卫星·抗辐射
2601_9606312321 分钟前
从中药产线技改备案细节,看传统药企的“专精特新”路径
人工智能
SEO_juper22 分钟前
Node.js 全站死链检测工具:从 sitemap 出发一次找全 404
开发语言·人工智能·python·node.js·seo·外贸独立站
张彦峰ZYF26 分钟前
让 Agent 获得“手、脚与反射弧”: MHS 如何重构物理世界的长程自主化基础设施
人工智能·ai agent·mhs·可复用能力·治理、记忆、持久编排·工具路由和物理执行·长程agent五平面架构
吞下星星的少年·-·27 分钟前
牛客周赛 119B题(贪心)
算法·贪心