利用非极大值抑制初步确定特征点 此步骤和sift类似,将经过hessian矩阵处理过的每个像素点与其3维领域的26个点进行大小比较,如果它是这26个点中的最大值或者最小值,则保留下来,当做初步的特征点...检测过程中使用与该尺度层图像解析度相对应大小的滤波器进行检测,以3×3的滤波器为例,该尺度层图像中9个像素点之一图2检测特征点与自身尺度层中其余8个点和在其之上及之下的两个尺度层9个点进行比较,共26个点...而在surf中,不统计其梯度直方图,而是统计特征点领域内的harr小波特征。...特征 surf特征是类似于SIFT特征的一种尺度不变的特征点,它的优点在于比SIFT效率要高,在实际运算中可以达到实时性的要求,关于SURF的原理这里就不过多的介绍,网络上这类的文章很多。...最终的显示效果如下: 四、SURF特征的描述 在图像配准中,特征点的描述往往不是位置这么简单,而是使用了一个N维向量来描述一个特征点,这些描述子之间可以通过定义距离公式来比较相近程度。
SURF特征基本介绍 SURF(Speeded Up Robust Features)特征关键特性: 特征检测 尺度空间 选择不变性 特征向量 SURF算法工作原理 选择图像中的POI(Points...of interest) Hessian Matrix 在不同的尺度空间发现关键点,非最大信号压制 发现特征点方法、旋转不变性要求 生成特征向量 SURF构造函数介绍 C++: SURF::SURF...bool extended=false, bool upright=false --表示计算选择不变性,不计算的速度更快 ) 代码演示 我们再新建一个项目名为opencv...--surf,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ?...开始进行SURF检测 因为我们要用到cv::xfeatures2d::SURF这个类,所以首先要在头文里要引用xfeatures2d.hpp的头文件 ? ?
cv2.SIFT() cv2.SURF() cv2.HOGDescriptor() 使用cv2.SIFT的一个样例:(cv2.SURF使用与之类似) #coding=utf-8 import cv2
OpenCV 入门教程: SIFT 和 SURF 特征描述 导语 SIFT (尺度不变特征变换)和 SURF (加速稳健特征)是图像处理中常用的特征描述算法,用于提取图像中的关键点和生成对应的特征描述子...本文将以 SIFT 和 SURF 特征描述为中心,为你介绍使用 OpenCV 进行特征提取的基本原理、步骤和实例。...特征描述步骤 以下是使用 OpenCV 进行 SURF 特征描述的基本步骤: 1 读取图像文件并将其转换为灰度图像。...) cv2.waitKey(0) cv2.destroyAllWindows() 总结 通过本文的介绍,你已经了解了使用 OpenCV 进行 SIFT 和 SURF 特征描述的基本原理和步骤。...祝你在使用 OpenCV 进行 SIFT 和 SURF 特征描述的过程中取得成功!
OpenCV中是通过feature2d与xfeature2d完成整个流程操作的,从而实现基于图像特征的对象检测与匹配。...1.SURF特征检测 SURF(Speeded Up Robust Feature)特征就是图像最常见的特征之一, 该方法在2006年由几位作者联合提出, 主要是用来克服SIFT(一种特征检测方法)...计算量比较大, 运行速度比较慢的缺点; SURF具有以下的优点: 基于积分图计算,快速关键点提取; 不同关键点描述; 快速描述子匹配; 同时具有旋转、尺度、光照不变性; SURF通过建立不同尺度的级联算子来实现高斯图像的尺度不变性特征...2.SURF特征描述子 特征描述子是用来描述每个关键点特征的唯一数据,它必须能够显著区分各个特征关键点的不同之处,SURF特征描述子是基于Haar小波响应理论的,可以通过积分图进行快速计算,描述子首先要选取关键点周围的像素块...实验证明,在窗口较小的情况下,容易导致出现异常高峰的问题,在窗口比较大的情况下,容易出现向量过长,描述子描述不够准确的问题,所以一般情况下更趋向跳过方向指派步骤直接使用U-SURF,它在±15°范围内可以保证旋转不变性特征
> matches_surf, inliers_surf; surf_detector.detect(img1,kpts1_surf); surf_detector.detect...(img1,kpts1_surf,desc1_surf); surf_descriptor.compute(img2,kpts2_surf,desc2_surf); matcher_l2...->knnMatch(desc1_surf,desc2_surf,dmatches_surf,2); matches2points_nndr(kpts1_surf,kpts2_surf,dmatches_surf...if(show == true) { draw_inliers(img1_rgb_surf,img2_rgb_surf,img_com_surf,inliers_surf...使用 INFO surf_info; surf(path1,path2,surf_info,false); showInfo(surf_info);
opencv的features2d包中提供了surf,sift和orb等特征点算法,根据测试结果发现在opencv3.0的java版本中存在一些bug,导致surf算法无法使用,会抛出如下异常: OpenCV...:https://stackoverflow.com/questions/30657774/surf-and-sift-algorithms-doesnt-work-in-opencv-3-0-java...补充: OpenCV 中和 2D 特征检测相关的算法的头文件位于opencv\modules\features2d\include\opencv2\features2d.hpp,除SIFT、SURF...以外的特征。...opencv\modules\nonfree\include\opencv2\nonfree\features2d.hpp,只包含SIFT、SURF这两个受专利保护的特征,因此不是免费的(nonfree
很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以得到特征点,简单,有效。...候选点周围的圆的选取半径是一个很重要的参数,这里我为了简单高效,采用半径为3,共有16个周边像素需要比较。为了提高比较的效率,通常只使用N个周边像素来比较,也就是大家经常说的FAST-N。...SIFT特征与SURF特征。...SURF特征算是为了提高运算效率对SIFT特征的一种近似,虽然在有些实验环境中已经达到了实时,但是我们实践工程应用中,特征点的提取与匹配只是整个应用算法中的一部分,所以我们对于特征点的提取必须有更高的要求...OpenCV中进行FAST特征检测 在OpenCV中进行FAST特征提取的函数为FAST。
主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串,并将这个二进制串作为该特征点的特征描述子。...但是由此带来的问题是,由于主方向会发生变化,随机点对的相关性会比较大,从而降低描述子的判别性。解决方案也很直接,采取贪婪的,穷举的方法,暴力找到相关性较低的随机点对。...但是这样只求速度的特征描述子,一般都是应用在实时的视频处理中的,这样的话就可以通过跟踪还有一些启发式的策略来解决尺度不变性的问题。 关于计算速度: ORB是sift的100倍,是surf的10倍。...B9%8Bcvcamera/ 最新版的OpenCV中新增加的ORB特征的使用 看到OpenCV2.3.1里面ORB特征提取算法也在里面了,套用给的SURF特征例子程序改为ORB特征一直提示错误,类型不匹配神马的...(ORB特征论文:ORB: an efficient alternative to SIFT or SURF.点击阅读原文下载论文 http://www.willowgarage.com/sites/default
ECCV 2010 注意在BRIEF eccv2010的文章中,BRIEF描述子中的每一位是由随机选取的两个像素点做二进制比较得来的。...但是这样只求速度的特征描述子,一般都是应用在实时的视频处理中的,这样的话就可以通过跟踪还有一些启发式的策略来解决尺度不变性的问题。 关于计算速度: ORB是sift的100倍,是surf的10倍。...参考Slides Related posts Android-opencv之CVCamera (1) 最新版的OpenCV中新增加的ORB特征的使用 看到OpenCV2.3.1里面ORB特征提取算法也在里面了...,套用给的SURF特征例子程序改为ORB特征一直提示错误,类型不匹配神马的,由于没有找到示例程序,只能自己找答案。...(ORB特征论文:ORB: an efficient alternative to SIFT or SURF.点击下载论文) 经过查找发现: 描述符数据类型有是float的,比如说SIFT,SURF描述符
opencv4.0.0 自带的 samples GPU surf_keypoint_matcher.cpp surf_keypoint_matcher.cpp #include #include "opencv2/opencv_modules.hpp" #ifdef HAVE_OPENCV_XFEATURES2D #include "opencv2/core.hpp"...#include "opencv2/features2d.hpp" #include "opencv2/highgui.hpp" #include "opencv2/cudafeatures2d.hpp...) set(OpenCV_DIR "/home/zhangjun/SoftWare/opencv-4.0.0/build") find_package( OpenCV REQUIRED ) add_executable...( SURF_test surf_keypoint_matcher.cpp ) target_link_libraries( SURF_test ${OpenCV_LIBS} ) cmake .
查找轮廓的不同特征,例如面积,周长,重心,边界框 1 矩 图像的矩可以帮助我们计算图像的质心,面积等 函数 cv2.moments() 会将计算得到的矩以一个字典的形式返回 cnt = contours
函数 cv2.minEnclosingCircle() 可以帮我们找到一个对象的外切圆。 它是所有能够包括对象的圆中面积最小的一个
凸包与轮廓近似相似,但不同,虽然有些情况下它们给出的结果是一样的。 函数 cv2.convexHull() 可以用来检测一个曲线是否具有凸性缺陷,并能纠 正缺陷...
前言 前面我们介绍了《C++ OpenCV特征提取之SURF特征检测》,这一篇我们在介绍一下SIFT的特征提取。...SIFT特征和SURF特征比较 比较项目 SIFT SURF 尺度空间极值检测 使用高斯滤波器,根据不同尺度的高斯差(DOG)图像寻找局部极值 使用方形滤波器,利用海森矩阵的行列式值检测极值,并利用积分图加速运算...--sift,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法 ?...记得我们要加上opencv2\xfeatures2d.hpp 使用SIFT检测,其实红框里面是我们定义的参数,可以修改一下参数进行变化 ? 运行效果 ?...上面左边红框处就是我们获取了多少个KeyPoints并打印出来,可以看到这个比SURF检测明显要少了不少,说明检测的更为细致了,不过也比SURF花费的时间要长一点。
引言及特征点监测器 前面提到的SURF与SIFT特征检测器与描述子, 其实都是OpenCV扩展模块xfeature2d中的内容, 而在OpenCV本身包含的feature2d模块中也包含了几个非常有用的特征检测器与描述子...=11 AKAZE=12 其中,3、4本来是SIFT与SURF的,但在OpenCV3.x中,它们已经被移到扩展模块中了。...1.ORB检测器与描述子 ORB(Oriented FAST and Rotated BRIEF)是OpenCV实验室于2011年开发出来的一种新的特征提取算法, 相比较于SIFT与SURF, ORB...2011年由几位作者联合提出的一种新的特征提取算法, OpenCV4Android中创建ORB检测器与描述子的代码如下: FeatureDetector detector = FeatureDetector.create...AKAZE算法的原理本身比较复杂,笔者所读的书中亦无详细解说, 感兴趣的小伙伴阅读相关论文去深入了解。
python代码: import cv2 as cv import numpy as np src1 = cv.imread("./test.png") s...
直方图比较 对输入的两个图像计算得到直方图H1和H2,归一化到相同的尺度空间,然后可以通过计算H1与H2之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。...OpenCV 提供了四种比较方法: Correlation 相关性比较 Chi-Square 卡方比较 Intersection 十字交叉比较 Bhattacharyya...巴氏距离比较 相关API cv::compareHist ?...代码 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include
) 我们探索了许多特征提取算子,如SIFT,SURF,BRISK和ORB。...如果我们使用SIFT作为特征提取器,它将为每个关键点返回128维特征向量。如果选择SURF,我们将获得64维特征向量。以下图像显示了使用SIFT,SURF,BRISK和ORB提取的一些功能。 ?...现在,我们想比较两组特征并以线段相连的形式显示更多相似性的特征点对。 使用OpenCV,功能匹配需要Matcher对象。...给定2组特征(来自图片A和图片B),来自集合A的每个特征与集合B中的所有特征进行比较。默认情况下,BF匹配器计算两点之间的欧几里德距离。因此,对于集合A中的每个特征,它返回集合B中最接近的特征。...对于SIFT和SURF,OpenCV建议使用欧几里德距离。对于其他特征提取器,如ORB和BRISK,建议使用汉明距离。
其Sift算法的三大工序为: 提取关键点; 对关键点附加详细的信息(局部特征)也就是所谓的描述器; 通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,也就建立了景物间的对应关系...,检测极值点,获得尺度不变性; 特征点过滤并进行精确定位; 为特征点分配方向值; 生成特征描述子; Surf算法 SURF是speed up robust feature的缩写,可以视为加速版的...SURF的特点: 使用积分图像完成图像卷积(相关)操作; 使用Hessian矩阵检测特征值; 使用基于分布的描述符(局部信息)。...下面是网上转来的使用OPENCV进行SURF特征点检测示例源码: #include "highgui/highgui.hpp" #include "opencv2/nonfree/nonfree.hpp...算法原理 Opencv Surf算子特征提取与最优匹配 特征点检测学习_2(surf算法)
领取专属 10元无门槛券
手把手带您无忧上云