比较opencv默认的方式和ORB-SLAM2中对opencv进行重写的方式,两个方法对图像特征提取结果的对比。
为方便比较,写在同一个文件中。主函数如下:

#include <iostream>
#include <opencv2/opencv.hpp>
#include "ORBextractor.h"
#include <vector>using namespace std;
using namespace cv;
using namespace ORB_SLAM2;int main()
{Mat img1 = imread("000000.png",0);ORBextractor* mpORBextractorLeft;//orbint nFeatures = 2000;float fScaleFactor = 1.2;int nLevels = 8;int fIniThFAST = 20;int fMinThFast = 7;std::vector<KeyPoint> keypoints1;mpORBextractorLeft = new ORBextractor(nFeatures,fScaleFactor,nLevels,fIniThFAST,fMinThFast);cv::Mat mDescriptors;cv::Mat outimg;(*mpORBextractorLeft)(img1,cv::Mat(),keypoints1,mDescriptors);drawKeypoints(img1,keypoints1,outimg,Scalar::all(-1));cout<<"ORBSLAM2: "<<keypoints1.size()<<endl;imshow("ORB_SLAM2", outimg);//opencvstd::vector<KeyPoint> keypoints2;cv::Mat mDescriptors2;Ptr<ORB> orb = ORB::create(2000, 1.2f, 8,31, 0, 2,ORB::HARRIS_SCORE, 31, 20);orb->detectAndCompute(img1, Mat(),keypoints2, mDescriptors2);   Mat outimg2;drawKeypoints(img1,keypoints2,outimg2,Scalar::all(-1));cout<<"OpenCV: "<<keypoints2.size()<<endl;imshow("OpenCV", outimg2);waitKey(0);return 0;
}

效果如下

结论

使用树形结构的ORB-SLAM2的特征提取方式,在提取数量上更多,分布也更均匀。而OpenCV默认的特征提取,特征点的分布较为集中,数量也较少,当把OpenCV方式参数中特征数量设置为2000时,分布无明显变化,还是很集中。因此ORB-SLAM2的作者在这方面下了功夫,对系统定位的鲁棒性有很大的作用。

使用ORB_SLAM2的方式进行特征检测和提取相关推荐

  1. 两种方式登录QQ空间提取SKEYamp;P_skey源码

    介绍: 这个是模拟QQ空间登录获取登录信息的程序,有密码登录和扫码登录2种方式,可同时获取skey.P_skey.superkey. 2016.11.23更新:更新登录协议,增加QQ密码形式为MD5的 ...

  2. matlab 局部特征检测与提取(问题与特征)

    物体识别:SIFT 特征: 人脸识别:LBP 特征: 行人检测:HOG 特征: 0. 常见手工设计的低级别特征 manually designed low-level features 语音:高斯混合 ...

  3. Opencv图像特征点提取(

    目录 特征点分类 1 ORB ①特征点检测 ②计算特征描述 2 SIFT 1 SIFT特征检测的步骤 ①.在DOG尺度空间中获取极值点,即关键点. ②.特征点方向估计 ③生成特征描述 ④.代码实现 3 ...

  4. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  5. 使用SAP Leonardo上的机器学习服务提取图片的特征向量

    要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自 ...

  6. c++从字符串中提取数字求和_【函数应用】单元格文本内提取数字并求和

    本篇的主题是将单元格内一串文本,找出所有数字并求和,如下图. 难度较高,新手建议仅了解下,先学会数组运用,再研究此知识点. 废话少说,步入正题. 重点说明:本篇只针对文本内整数的数字进行提取并求和,如 ...

  7. 利用Python提取PDF文件中的文本信息

    如何利用Python提取PDF文件中的文本信息 日常工作中我们经常会用到pdf格式的文件,大多数情况下是浏览或者编辑pdf信息,但有时候需要提取pdf中的文本,如果是单个文件的话还可以通过复制粘贴来直 ...

  8. 显示器序列号查询方式

    序列号位置:位于显示器背部下方凹槽内 显示S/N或序号字段,可参考本文最下方图片 方式一:人工输入 方式二:微信提取文字,步骤如下 序列号拍照>发送到自己微信>长按图片>提取文字(i ...

  9. 使用R语言并行提取栅格数据

    在处理栅格数据时,经常需要将栅格数据中的数据按照shapefile边界或者中心点进行提取,当数据量较大时耗时很久,且容易造成内存溢出.因此考虑通过并行的方式对栅格数据进行提取,从而保证处理速度. NO ...

最新文章

  1. Ubuntu更新时遇到/boot空间不足
  2. XtraGrid GridView设置默认选中的行颜色
  3. 如何修改html页眉页脚,如何使用标准页眉和页脚修改/更新一组html文件
  4. Eigen 矩阵运算库在实际项目中的使用
  5. html二级导航栏随一级居中,html – 1.在css中链接不起作用2.如何垂直居中导航栏并在每个导航栏上添加填充...
  6. 解决每次从cmd进入sqlplus,都得重新设置pagesize、linesize的问题
  7. Hibernate 逆向工程生成POJO类和映射文件
  8. java二次开发浏览器内核_深入理解基于Selenium的二次开发
  9. Windows 未能启动。原因可能是最近更改了硬件或软件。解决此问题的步骤
  10. 无法初始化Winsock2.2处理
  11. 将CSDN文章下载为markdown文档
  12. 无线ac配置dhcp服务器,华硕RT-AC86U路由器怎么设置DHCP功能
  13. Quartz 表达式
  14. PS教程证件照底片更换颜色
  15. 计算机设备管理cmd命令,打开设备管理器的命令,教你一分钟学会最简单
  16. C和C++不安全?Android 支持 Rust 开发操作系统
  17. JavaScript 之 学习网站推荐 强推【javascript.info】
  18. python读Excel数据成numpy数组
  19. the disk drive for uuid=XXXX ( /media/sda1) is not reday yet or not present
  20. 公链,仍然是区块链产业的根基!

热门文章

  1. labelme批量转换json
  2. ubuntu启动配置ftp服务端
  3. BJ-100型矩形波导传输TE10模,测得波导中相邻两个电场波节点之间的距离为19.88mm
  4. Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL
  5. Codeforces Round #529 (Div. 3) D. Circular Dance
  6. Navicate在同步oracle数据,不同数据库之间同步
  7. Python学习---深浅拷贝的学习
  8. NIO(一)——缓冲区Buffer
  9. date-打印或者设置系统日期和时间
  10. 大数据商业智能的十大戒律