当前位置: 首页 > article >正文

[opencvsharp]C#基于Fast算法实现角点检测

角点检测算法有很多,比如Harris角点检测、Shi-Tomas算法、sift算法、SURF算法、ORB算法、BRIEF算法、Fast算法等,今天我们使用C#的opencvsharp库实现Fast角点检测

【算法介绍】

fast算法
Fast(全称Features from accelerated segment test)是一种用于角点检测的算法,
该算法的原理是取图像中检测点,以该点为圆心的周围邻域内像素点判断检测点是否为角点,
通俗的讲就是若一个像素周围有一定数量的像素与该点像素不同,则认为其为角点.

基本流程:
1.在图像中选取一个像素点p,来判断它是不是关键点.Ip等于点p的灰度值.
2.以r为半径,覆盖p点周围M个像素,通常情况下,设置r=3,则M=16
3.设置一个阈值t,如果在这16个像素点中存在n个连续像素点的灰度值都高于Ip+t,或者低于
Ip-t,那么像素点p就被认为是一个角点,n一般取值为12
4.由于检测特征点时是需要对所有的像素点进行监测,然而图像中绝大多数点都不是特征点,如
果对每个像素点都进行上述的检测过程,那显然浪费许多时间,因此采用一种进行非特征点判 别的方法:首先对候选点的周围每个90度的点:1,9,5,13进行测试(先测1和9,如果他们符合阈值
要求,再测5和13).如果p是角点,那么这是个点中至少有3个要符合阈值要求,否则直接剔除,
对保留下来的点再继续进行测试

虽然这个检测器的效率很高,但它有一下几个缺点:
.获得的候选点比较多
.特征点的选取不是最优的,因为它的效果取决于与要解决的问题的角点的分布情况
.进行非特征点判别时大量的点被丢弃
.检测到的很多特征点都是相邻的
前3个问题可以通过机器学习的方法解决,最后一个问题可以使用非最大值抑制的方法解决

【效果展示】

【测试环境】

vs2019

networkframework4.7.2

opencvsharp4.8.0

【源码下载】 

https://download.csdn.net/download/FL1623863129/88799767

【参考文献】

[1] blog.csdn.net/wyw0000/article/details/128981785


http://www.kler.cn/a/228975.html

相关文章:

  • Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)
  • 学习记录1
  • 前端小案例——网页井字棋
  • windows下安装并使用node.js
  • 黑马Java面试教程_P1_导学与准备篇
  • 2025.1.16——三、supersqli 绕过|堆叠注入|handler查询法|预编译绕过法|修改原查询法
  • openstack(T版)公有云--Dashboard服务
  • 常见的Web前端开发框架推荐
  • 【字符串】字典树
  • flutter 操作mysql
  • 深入理解TCP网络协议(3)
  • Ubuntu下的磁盘管理,分区管理,挂载和卸载分区
  • 普通编程,机器学习与深度学习
  • 力扣 121. 买卖股票的最佳时机
  • MySQL 小技巧:xtrabackup 软件包的下载及安装
  • 【C/C++ 12】C++98特性
  • React Hook之钩子调用规则(不在循环、条件判断或者嵌套函数中调用)
  • 「效果图渲染」效果图与3D影视动画渲染平台
  • vue3 之 组合式API—reactive和ref函数
  • Linux系统安全①iptables防火墙
  • 【华为】GRE Over IPsec 实验配置
  • Python爬虫urllib详解
  • 格式化日期注解@JsonFormat的使用和TimeZone时区问题
  • 市场复盘总结 20240205
  • redis stream结合springboot构造简单消息队列
  • Ubuntu 22.04 上安装和使用 Go