SLAM笔记(六)直接法介绍

本文介绍了SLAM中的直接法,与间接法的主要区别在于直接法不依赖特征点提取与匹配,而是直接利用像素信息计算相机运动。直接法假设同一三维点在不同视角的灰度值不变,通过最小化像素误差进行优化。直接法分为稀疏和稠密两种,其优点在于能够利用更多的图像信息,但在某些特定条件下性能可能会下降。

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

本章整理自高翔的SLAM十四讲之《直接法的原理与实现》以及PAMI上的《Direct Sparse Odometry》

1

之前总结的方法都需要先从图片中提取特征点并进行匹配,然后进行优化求解,这类方法称为特征法间接法。由于提取、匹配的过程中耗时很大,因此有人提出是否能不计算关键点或描述子,直接根据图像的像素信息来计算相机运动,这类方法称为直接法。随着一批不需提取特征的方法,如LSD(选取整幅图像中有梯度的部分来采用直接法,这种方法称为半稠密方法(simi-dense)),SVO(选取关键点来采用直接法,这类方法称为稀疏方法(sparse)),直接法渐露其自身优势。

1.1间接法与直接法的区别:

这里写图片描述
除了提取和匹配耗时,在使用特征点时,也忽略了除特征点以外的所有信息,因此丢弃了很多可能有用的图像信息.
间接法通过最小化几何误差geometric error)(因为预先得到的点或光流向量都是几何度量,常用的有重投影误差(projection error)等)来进行优化从而得到相机运动;直接法通过最小化测量误差(photometirc error,即像素之间的误差).直接法的好处:直接法让单独一个点不具备识别意义,而是将大量的点组织起来,因此它的表达是一种细粒度的几何表示。

1.2 直接法的基本假设

同一空间三维点在各个视角下测到的灰度值不变(因此假设所在平面是漫反射,没有遮挡,没有光照变化);

1.3 直接法原理

这里写图片描述
I1(Cpi) I2(CRpi+t 分别为pi在图像对应点的灰度值。
随后用非线性优化求解最小测量误差J,得到目标函数:

minJ=t=1N||
### 关于视觉SLAM第14讲第八章直接法的内容 #### 直接法概述 直接法是一种用于视觉里程计的技术,它通过最小化亮度误差来估计相机的位姿变化。这种方不需要提取特征点或描述子,而是直接利用图像中的灰度信息进行优化[^1]。 #### 雅可比矩阵计算 对于直接法而言,其核心在于求解雅克比矩阵。此过程涉及到对图像函数相对于相机参数的变化率建模。具体来说,当考虑一个小范围内的平移变换时,可以近似认为像素位置随时间t改变而产生的偏移量与当前时刻的速度成线性关系。因此,在实际应用中通常采用泰勒展开的方式来进行局部线性化处理,并由此得到相应的雅可比表达式[^2]。 #### 不同类型的直接法 依据所使用的图像数据密度差异,直接法被分为三种主要形式: - **稀疏直接法**:仅针对少数选定的关键点或者角点执行操作; - **稠密直接法**:几乎覆盖整个视场范围内所有的有效像素点; - **半稠密直接法**:选取那些具有显著梯度响应特性的区域作为工作对象[^3]。 ```cpp // 示例代码片段展示了如何初始化一个简单的直接法框架 #include <opencv2/opencv.hpp> int main() { cv::Mat img = cv::imread("image.png", CV_LOAD_IMAGE_GRAYSCALE); // 假设我们已经有了上一帧这一帧之间的初始猜测R,t Eigen::Matrix3d R_initial; Eigen::Vector3d t_initial; // 这里省略了具体的实现细节... } ``` #### 实践案例分析 为了更好地理解这些概念并将其应用于实践中,《视觉SLAM十四讲》提供了详细的C++编程实例以及配套的数据集说明文档。读者可以根据书中给出的具体指导完成从环境搭建到最终算验证的一系列实验活动[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值