C# 基于OpenCv的视觉工作流-章38-BF特征匹配

C# 基于OpenCv的视觉工作流-章38-BF特征匹配

本章目标:
一、 暴力特征匹配原理;
二、 创建匹配器;
三、 特征匹配;
四、 匹配点筛选;
五、绘制匹配点;

特征匹配首先获取两幅图像的特征点与描述子,然后再对描述子进行匹配;特征匹配有多种,本章介绍暴力特征匹配。

一、暴力特征匹配原理

关于特征点与描述子的获取,章24-SURF特征点已介绍,不再详述。详细原理,见文末链接


二、 创建匹配器

OpenCv 暴力特征匹配可如下创建

BFMatcher matcher = new BFMatcher(NormTypes.L1, true);

其中:参数1,为计算距离方式;

参数2,为是否进行交叉匹配;

三、 特征匹配;

OpenCv 暴力特征匹配可如下使用

DMatch[] matches = matcher.Match(descriptors1, descriptors2);

其中:参数1,为查找图(模板小图)的描述子;

参数2,为待匹配图(大图)的描述子;

注:匹配返回的结果中,有匹配的距离,根据距离可筛选符合要求的特征点

四、 匹配点筛选

通过C#相应语法查找即可

DMatch[] goodMatches = matches.Where((m, i) => m.Distance < distance).ToArray();

其中:参数distance,为指定距离值;

说明:匹配得到的距离,值越小越相似,所以取小于指定距离值的点,作为最终的匹配点。

五、绘制匹配点

OpenCv 绘制匹配点可如下使用

Mat imgMatches = new Mat();

Cv2.DrawMatches(image1, keyPoints1, Image2, keyPoints2, goodMatches, imgMatches);

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

参数2,为输入图像1特征点;

参数3,为输入图像2;

参数4,为输入图像2特征点;

参数5,为匹配特征点;

参数6,为输出图像;

效果如下图

参考链接

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

"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的视觉工作流",欢迎前往阅读。

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

相关推荐
wuweijianlove4 小时前
算法性能的渐近与非渐近行为对比的技术4
算法
墨染天姬4 小时前
【AI】端侧AIBOX可以部署哪些智能体
人工智能
_dindong4 小时前
cf1091div2 C.Grid Covering(数论)
c++·算法
AI成长日志4 小时前
【Agentic RL】1.1 什么是Agentic RL:从传统RL到智能体学习
人工智能·学习·算法
2501_948114244 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
小小工匠4 小时前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
黎阳之光4 小时前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
skywalker_114 小时前
力扣hot100-3(最长连续序列),4(移动零)
数据结构·算法·leetcode
6Hzlia4 小时前
【Hot 100 刷题计划】 LeetCode 17. 电话号码的字母组合 | C++ 回溯算法经典模板
c++·算法·leetcode
小超同学你好4 小时前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型