[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

相关推荐
宇钶宇夕5 小时前
CoDeSys入门实战一起学习(十三):函数(FUN)深度解析:自定义、属性与实操案例
运维·算法·自动化·软件工程
l1t5 小时前
对clickhouse给出的二分法求解Advent of Code 2025第10题 电子工厂 第二部分的算法理解
数据库·算法·clickhouse
Tisfy5 小时前
LeetCode 3315.构造最小位运算数组 II:位运算
算法·leetcode·题解·位运算
YuTaoShao5 小时前
【LeetCode 每日一题】1292. 元素和小于等于阈值的正方形的最大边长
算法·leetcode·职场和发展
Remember_9935 小时前
【数据结构】深入理解Map和Set:从搜索树到哈希表的完整解析
java·开发语言·数据结构·算法·leetcode·哈希算法·散列表
浅念-5 小时前
C++第一课
开发语言·c++·经验分享·笔记·学习·算法
charlie1145141915 小时前
现代嵌入式C++教程:对象池(Object Pool)模式
开发语言·c++·学习·算法·嵌入式·现代c++·工程实践
燃于AC之乐5 小时前
我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图
算法·哈希算法·图论·滑动窗口·哈希表·线性dp
格林威5 小时前
多相机重叠视场目标关联:解决ID跳变与重复计数的 8 个核心策略,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·分类·工业相机
郝学胜-神的一滴5 小时前
深入理解网络分层模型:数据封包与解包全解析
linux·开发语言·网络·程序人生·算法