图像特征、特征提取、特征点(局部特征)
特征点检测和匹配
特征点检测和匹配
【opencv】角点检测
1、 特征点的作用:使用特征点代表图像内容
运动目标跟踪
物体识别
图像配准
全景图像拼接
三维重建
·
Opencv图像识别从零到精通(33)----moravec角点、harris角点
OpenCV学习笔记(四十六)——FAST特征点检测features2D
特征点检测和匹配是计算机视觉中一个很有用的技术。在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用。这一次先介绍特征点检测的一种方法——FAST(features from accelerated segment test)。很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以得到特征点,简单,有效。
OpenCV_局部图像特征的提取与匹配_源代码
2维特征Feature2D—特征点的图像匹配
基于特征点的图像匹配是图像处理中经常会遇到的问题,手动选取特征点太麻烦了。比较经典常用的特征点自动提取的办法有Harris特征、SIFT特征、SURF特征。
先介绍利用SURF特征的特征描述办法,其操作封装在类SurfFeatureDetector中,利用类内的detect函数可以检测出SURF特征的关键点,保存在vector容器中。第二部利用SurfDescriptorExtractor类进行特征向量的相关计算。将之前的vector变量变成向量矩阵形式保存在Mat中。最后强行匹配两幅图像的特征向量,利用了类BruteForceMatcher中的函数match。代码如下:
在FLANN特征匹配的基础上,还可以进一步利用Homography映射找出已知物体。具体来说就是利用findHomography函数利用匹配的关键点找出相应的变换,再利用perspectiveTransform函数映射点群。具体代码如下:
tostq的专栏(特征)(+)
找到提取出来的特征精度最高,多帧运动变化图片都应用此算法都找到固定的特征,而且这个特征不限,可以是边缘、角点或区域块等,然后根据不同特征、其运动变化及图像成像质量提供不同的算法,以达到最优。先找到特征点算法最优秀的,然后接合各种背景(噪声、运动变化),测试其变化。
尺度及仿射不变的Harris角特征点检测及匹配算法
从多尺度空间到差分高斯金字塔
类神经网络的角点检测方法
KLT光流法及其特征点检测方法
Shi-Tomasi特征点(角点)检测及追踪方法
LOCOCO角点检测方法(一种快速精确的Harris及KLT)介绍
基于图像像素梯度的角点检测方法综述
SUSAN角点及边缘检测方法详解
FAST角点检测方法详解
FAST(Featuresfrom Accelerated Segment Test)由Edward Rosten和Tom Drummond在2006年首先提出,是近年来一总倍受关注的基于模板和机器学习的角点检测方法,它不仅计算速度快,还具有较高的精确度。本文将通过其2006年的原文,详细介绍FAST的基本原理。
特征点检测效果评估(matlab代码)
(3)机器学习的引入
近年来,在模板匹配中引入机器学习的方法倍受关注,通过训练模型进行分类,并获得角点检测函数是其主要目标,FAST的方法就是通过引入决策树方法先只需要确定两个位置,就能对图像的像素点进行分类,从而达到极大减少了候选点数,FAST-ER方法引入模拟退火方法进一步将调整决策树使其极大地提高了重复率。除了通过模拟退火方法可以优化角点检测函数外,我们也可以通过遗传算法、蚁群算法都可以达到优化的效果(可以参考我关于FAST及FAST-ER算法的博文)
FAST特征点检测(赵春江)
图像局部特征(三)--FAST角点检测子
FAST-ER角点检测算法详解(改良的FAST算法)
基于模板的角点检测方法综述
基于BoF(Bag-of-feature)图像分类(目标检测、定位识别、匹配、特征点提取、特征选择)
基于BoF的图像分类完整步骤(以ScSPM为例)
基于曲线曲度或类曲度的角点检测方法总结
角点检测算法及其描述子评估介绍
【OpenCV】SIFT原理与源码
OpenCV2.3之后实现了SIFT的代码,2.4改掉了一些bug。本系列文章主要分析OpenCV2.4.2SIFT函数源码。
SIFT位于OpenCV nonfree的模块,David G. Lowe申请了算法的版权,请尊重作者权力,务必在允许范围内使用。
不过,后才查帮助文档的时候发现2.4.3版本里把sift移到了nonfree模块了。
然后找到2.3.1版本的opencv后才解决了。
我知识借此机会想告诉像我这样用opencv2.4.3来写sift算法的opencv新手们。
还是早点换个其他版本的opencv写好了。
不要浪费时间了。
我们要的是功能,而不是又漂亮又有技巧的高版本opencv的sift程序。
电脑的配置越来越高了。
所以,大家不要害怕,不要因为写程序水平差而写的比别人多了几个句子烦恼。
千万不要,这样只累死自己,耗费精神,浪费时间。
还是敞开心扉大胆的去尝试新鲜的可行的吧。
有勇气,就去大胆的尝试,试一试,这是我最近几日发现的。
当然,大家都懂,但是,我想借此机会强调你们不要像我这样浪费时间了。。。
同加油。。。
如果我写的不对,请高手多多指教。。。我毕竟是菜鸟嘛。。。
谢谢,高手们的光临。。。
期待着。。。你的到来。。。
期待着。。。你的指正。。。
期待着。。。。。。。。。。。。
【OpenCV】特征检测器 FeatureDetector
OpenCV2.4.3提供了10种特征检测方法:
"FAST" – FastFeatureDetector
"STAR" – StarFeatureDetector
"SIFT" – SIFT (nonfree module)
"SURF" – SURF (nonfree module)
"ORB" – ORB
"MSER" – MSER
"GFTT" – GoodFeaturesToTrackDetector
"HARRIS" – GoodFeaturesToTrackDetector with Harris detector enabled
"Dense" – DenseFeatureDetector
"SimpleBlob" – SimpleBlobDetector
图片中的特征大体可分为三种:点特征、线特征、块特征。
FAST算法是Rosten提出的一种快速提取的点特征[1],Harris与GFTT也是点特征,更具体来说是角点特征(参考这里)。
SimpleBlob是简单块特征,可以通过设置SimpleBlobDetector的参数决定提取图像块的主要性质,提供5种:
颜色 By color、面积 By area、圆形度 By circularity、最大inertia (不知道怎么翻译)与最小inertia的比例 By ratio of the minimum inertia to maximum inertia、以及凸性 By convexity.
最常用的当属SIFT,尺度不变特征匹配算法(参考这里);以及后来发展起来的SURF,都可以看做较为复杂的块特征。这两个算法在OpenCV nonfree的模块里面,需要在附件引用项中添加opencv_nonfree243.lib,同时在代码中加入:
【OpenCV2.3特征检测与描述】FeatureDetection and Description
【OpenCV】特征检测器 FeatureDetector
Feature Matching withFLANN— OpenCV 2.4.13.2 documentation
OpenCV3.1 xfeatures2d::SIFT使用
FAST角点检测:Features From Accelerated SegmentTest
FAST KeyPoints Recognition Using Random Ferns
随机蕨可以理解为一种简化版本的随机树。对于每一个图片的特征点,把其周围的块(Patch)可能的取值看作一个类,用二值测试进行分类,具体说来,就是选择一定的模式位,对这些模式的像素进行二值测试,来对Patch进行分类。随机蕨把这种分层的随机树结构进行简化,变为非层次的结构,同时也能和随机树一样保持很好的分类效果。
【OpenCV文档】用于角点检测的Fast算法(python-fast)
我们已知很多种特征检测的方法,而且它们其中很多效果都非常不错。但是,当从一个实时运行的程序角度出发,它们还不够快。一个最好的例子就是SLAM(Simultaneous Localizationand Mapping)移动机器人,它的可计算资源是受限的。
作为上述问题的一个解决方法,FAST(Features from AcceleratedSegment Test)算法由Edward Rosten和Tom Drummond在他们2006年的论文“Machine learning for high-speed corner detection”(在2010年再次被修订)中被提出。下面是该算法的一个基本总结。你可以参见原论文去学习更多的细节(下面所有的图片是从原论文中提取的)。