OpenCV学习笔记(四十六)——FAST特征点检测features2D
来源:互联网 发布:c语言中的完全数 编辑:程序博客网 时间:2024/05/18 12:42
特征点检测和匹配是计算机视觉中一个很有用的技术。在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用。这一次先介绍特征点检测的一种方法——FAST(features from accelerated segment test)。很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以得到特征点,简单,有效。
FAST特征检测算法来源于corner的定义,这个定义基于特征点周围的图像灰度值,检测候选特征点周围一圈的像素值,如果候选点周围领域内有足够多的像素点与该候选点的灰度值差别够大,则认为该候选点为一个特征点。
其中I(x)为圆周上任意一点的灰度,I(p)为圆心的灰度,Ed为灰度值差得阈值,如果N大于给定阈值,一般为周围圆圈点的四分之三,则认为p是一个特征点。
为了获得更快的结果,还采用了额外的加速办法。如果测试了候选点周围每隔90度角的4个点,应该至少有3个和候选点的灰度值差足够大,否则则不用再计算其他点,直接认为该候选点不是特征点。候选点周围的圆的选取半径是一个很重要的参数,这里我为了简单高效,采用半径为3,共有16个周边像素需要比较。为了提高比较的效率,通常只使用N个周边像素来比较,也就是大家经常说的FAST-N。我看很多文献推荐FAST-9,作者的主页上有FAST-9、FAST-10、FAST-11、FAST-12,大家使用比较多的是FAST-9和FAST-12。上个图说明的更形象一些
OpenCV里对FAST的使用也非常简单,先声明一组特征点,构建FAST特征检测,接下来调用detect函数检测图像中的特征点,最后把特征点绘制到图片上。上代码说的清楚些
- #include <opencv2/core/core.hpp>
- #include <opencv2/features2d/features2d.hpp>
- #include <opencv2/highgui/highgui.hpp>
- #include <vector>
- using namespace cv;
- void main()
- {
- Mat image;
- image = imread("church01.jpg");
- // vector of keyPoints
- std::vector<KeyPoint> keyPoints;
- // construction of the fast feature detector object
- FastFeatureDetector fast(40); // 检测的阈值为40
- // feature point detection
- fast.detect(image,keyPoints);
- drawKeypoints(image, keyPoints, image, Scalar::all(255), DrawMatchesFlags::DRAW_OVER_OUTIMG);
- imshow("FAST feature", image);
- cvWaitKey(0);
- }
效果图:
- OpenCV学习笔记(四十六)——FAST特征点检测features2D
- OpenCV学习笔记(四十六)——FAST特征点检测features2D
- OpenCV学习笔记(四十六)——FAST特征点检测features2D
- OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算
- FAST特征点检测features2D
- FAST特征点检测features2D
- FAST特征点检测features2D
- OpenCV中feature2D学习——FAST特征点检测
- FAST特征点检测——opencv
- 学习OpenCV——Fast(特征点篇) (&DrawMatchFlags)
- 学习OpenCV——Fast(特征点篇) (&DrawMatchFlags)
- 学习OpenCV——Fast(特征点篇) (&DrawMatchFlags)
- 学习OpenCV——Fast(特征点篇) (&DrawMatchFlags)
- 学习OpenCV——Fast(特征点篇) (&DrawMatchFlags)
- OPENCV FAST特征点检测
- OpenCV学习笔记(五十三)——新版本2.4.2简介&FREAK和ORB特征描述子效果对比features2d
- OpenCV中feature2D学习——FAST特征点检测与SIFT/SURF/BRIEF特征提取与匹配
- 特征点匹配——FAST特征点检测
- MapServer6.4.1教程学习--显示图层内类别(1-3)
- markdown常用语法总结
- openwrt代码框架
- 产品经理之原型范围
- MapServer6.4.1教程学习--标注地图(1-4)
- OpenCV学习笔记(四十六)——FAST特征点检测features2D
- EasyUI学习之RSSReader应用的学习笔记(一)
- 在openwrt平台,开发自己的模块
- MySql中的视图重写
- debug assertion failed 调试解决方法
- jquery input切换编辑和不可编辑模式,input自动获得焦点,遍历所有的子类标签
- Q1.5 String Compression
- MapServer6.4.1教程学习--添加栅格图层(1-5)
- 以太网卡