OpenCV教程(46) 快速特征检测
在计算harris特征角时候,我们要在两个方向计算梯度,计算代价有点大。在paper
The article by E. Rosten and T. Drummond, Machine learning for high-speed corner detection, in In European Conference on Computer Vision, pp. 430-443, 2006.
中,作者提出了一种快速的特征检测方法。paper下载:http://yunpan.cn/QDbtIDnBhqUxT
对于中心点p,半径为3的圆,计算圆周上的点和中心点的灰度值差,如果大于阈值,且这些点组成的弧长大于圆周长的3/4,则中心点p为特征点。如下图所示,在计算时候,可以先计算1,5,9,13处的灰度值差,至少有3个点的差大于阈值,中心点p才有可能是特征点,通过这种方法,能加快特征点的检测。
opencv中实现了概算法,下面的代码演示了如何调用快速特征检测:
// Read input image
image= cv::imread("../church01.jpg",0);
//快速特征检测
keypoints.clear();
//40是阈值
cv::FastFeatureDetector fast(40);
fast.detect(image,keypoints);
cv::drawKeypoints(image,keypoints,image,cv::Scalar(255,255,255),cv::DrawMatchesFlags::DRAW_OVER_OUTIMG);
// Display the corners
cv::namedWindow("FAST Features");
cv::imshow("FAST Features",image);
下面左图为快速特征检测的结果,可以看到和good特征检测出的特征点结果很接近。
程序代码:参考FirstOpenCV49
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程