初始化 | SVO 论文与代码分析分讲

本文详细介绍了SVO(Semi-Direct Monocular Visual Odometry)的初始化过程,包括处理第一帧和第二帧的关键步骤。通过获取FAST角点,建立初始地图,并使用光流跟踪及单应性矩阵估计相对位姿。此外,还进行了BA优化和关键帧添加到地图及深度滤波器的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
论文: SVO: Fast Semi-Direct Monocular Visual Odometry
代码(注释版):https://github.com/cggos/svo_cg

SVO 结合了直接法和特征点法,称为 半直接单目视觉里程计

初始化
获取第一关键帧和第二关键帧的相对位姿,并建立初始地图,代码主要在 initialization.cpp 中。
1)处理第一帧FrameHandlerMono::processFirstFrame

第一帧位姿为单位阵 new_frame_->T_f_w_ = SE3(Matrix3d::Identity(), Vector3d::Zero()) addFirstFrame
detectFeatures: 获取 Shi-Tomas得分较高 且 均匀分布 的 FAST 角点,并创建 Features
初始化 px_vec(Coordinates in pixels on pyramid level 0) 和 f_vec(Unit-bearing vector of the feature)
将当前帧设置为关键帧,并检测 5 个对应的关键点
添加关键帧到地图 map_.addKeyframe(new_frame_);

2)处理第二帧 FrameHandlerMono::processSecondFrame

addSecondFrame
光流跟踪trackKlt
计算 单应性矩阵(假设局部平面场景),估计相对位姿T_cur_from_ref_
创建初始地图
BA 优化 ba::twoViewBA
添加关键帧到地图 map_.addKeyframe(new_frame_);
添加关键帧到深度滤波器 depth_filter_->addKeyframe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值