《视觉slam十四讲》第七讲feature_extraction.cpp程序解释

Ptr<ORB> orb = ORB::create(int nfeatures=500, float scaleFactor=1.2f, int nlevels=8, int edgeThreshold=31, int firstLevel=0, int WTA_K=2, int scoreType=ORB::HARRIS_SCORE, int patchSize=31)

由于在书中直接省略了,现在补齐并解释各个参数的含义:

nfeatures - 最多提取的特征点的数量;

scaleFactor - 金字塔图像之间的尺度参数,类似于SIFT中的kk

nlevels – 高斯金字塔的层数;

edgeThreshold – 边缘阈值,这个值主要是根据后面的patchSize来定的,靠近边缘edgeThreshold以内的像素是不检测特征点的。

firstLevel - 看过SIFT都知道,我们可以指定第一层的索引值,这里默认为0。

WET_K - 用于产生BRIEF描述子的 点对的个数,一般为2个,也可以设置为3个或4个,那么这时候描述子之间的距离计算就不能用汉明距离了,而是应该用一个变种。OpenCV中,如果设置WET_K = 2,则选用点对就只有2个点,匹配的时候距离参数选择NORM_HAMMING,如果WET_K设置为3或4,则BIREF描述子会选择3个或4个点,那么后面匹配的时候应该选择的距离参数为NORM_HAMMING2。

scoreType - 用于对特征点进行排序的算法,你可以选择HARRIS_SCORE,也可以选择FAST_SCORE,但是它也只是比前者快一点点而已。

patchSize-用于计算BIREF描述子的特征点邻域大小

### 更改 ORB-SLAM3 的特征点检测方法 为了在 ORB-SLAM3 中使用 SuperPoint 进行特征点检测,需修改源码以集成新的特征提取器。具体操作涉及多个文件和配置项调整。 #### 修改依赖库 首先安装 SuperPoint 库及其依赖环境。确保该库能够独立运行并输出预期的特征点数据[^1]。 ```bash pip install superpoint # 或者通过其他方式安装SuperPoint库 ``` #### 调整 CMakeLists.txt 文件 编辑 `CMakeLists.txt` 添加必要的编译选项支持外部特征提取工具链接: ```cmake find_package(Torch REQUIRED) include_directories(${TORCH_INCLUDE_DIRS}) link_directories(${TORCH_LIBRARY_DIRS}) add_definitions(-DUSE_SUPERPOINT) ``` #### 编辑 FeatureExtraction 类 进入核心模块下的 feature_extraction.cpp.h 文件,在其中定义新函数用于调用 SuperPoint API 获取图像的关键点与描述符替代原有ORB算法实现: ```cpp // feature_extraction.h class FeatureExtractor { public: std::vector<cv::KeyPoint> DetectSuperPoints(const cv::Mat& img); }; // feature_extraction.cpp std::vector<cv::KeyPoint> FeatureExtractor::DetectSuperPoints(const cv::Mat& img){ // 使用SuperPoint模型预测关键点位置及响应强度 auto keypoints = superpoint->inference(img); return keypoints; } ``` #### 更新 SLAM 系统初始化设置 更改 main 函数或其他启动入口处参数设定部分,指定采用自定义特性抽取逻辑而非默认ORB机制: ```cpp if (use_superpoint) { mpInitializer = new Initializer(static_cast<int>(sensor), mvParameters, &mSensorMutex, &mpVocabulary, true /* enable SuperPoint */ ); } else { ... } ``` 以上改动使系统能够在每次读取帧时自动切换至基于深度学习框架训练好的SuperPoint网络来完成兴趣区域定位任务[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爬山的小虾米

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值