视觉SLAM十四讲-第十三讲笔记

本讲是最后一讲!讲了不同地图的表示方法=-=

一、概述

前面所讲的地图都是特征点的集合,也就是稀疏地图,实际上还有各种地图,面向各种任务:

  • 稀疏地图:定位
  • 稠密地图:导航、避障、重建
  • 语义地图:交互

二、单目稠密重建

1. 立体视觉

要进行稠密重建,就要知道每一个像素的深度,其方法是:

  • 单目:三角化
  • 多目:视差
  • 深度:直接

对于单目,需要使用参考帧,和它移动一小段后的当前帧,对其中的匹配点三角化。但这个过程中,匹配是很耗时的。对于所有像素来说,都做一遍匹配是不现实的。
因此问题转化为:如何进行快速的匹配?

2.极限搜索与快匹配

其方法是,对于参考帧ref,其像素p1p_1p

### 视觉SLAM十四第五章内容概要 #### 5.1 相机模型简介 相机作为视觉SLAM系统中的重要传感器,其成像原理模型对于理解整个系统的运作至关重要。本章节介绍了针孔相机模型及其变种,并讨论了如何通过内参矩阵来描述这些模型[^1]。 #### 5.2 图像特征提取与匹配 为了实现环境感知,在视觉SLAM中通常会利用图像中的显著特征来进行跟踪地图构建工作。这部分解了几种常用的局部特征检测方法以及它们之间的相互比较;还探讨了基于ORB等快速算法的特点及应用场合。 #### 5.3 像素坐标系下的重投影误差计算 当给定三维空间点P的世界坐标(x,y,z),可以通过已知的位姿T将其转换到相机坐标系下(X,Y,Z)再映射至像素平面上(u,v)。理想情况下,该位置应该正好位于由同一时刻另一视角所拍摄图片中标记出来的对应特征点处。然而实际操作过程中由于噪声等因素影响,两者之间往往存在偏差ε=(u'-u, v'-v),这就是所谓的“重投影误差”。此概念不仅适用于单目情况也广泛应用于双目标定等领域[^2]。 ```cpp // 计算重投影误差的一个简单例子 Eigen::Vector2d computeReprojectionError(const Eigen::Vector3d& point_world, const Sophus::SE3d& pose_camera_to_world, const CameraIntrinsics& intrinsics, const Eigen::Vector2d& observed_point_image){ // 将世界坐标转为相机坐标 auto point_cam = pose_camera_to_world * point_world; // 归一化平面坐标 double inv_z = 1.0 / point_cam.z(); double u_proj = intrinsics.fx() * (point_cam.x() * inv_z) + intrinsics.cx(); double v_proj = intrinsics.fy() * (point_cam.y() * inv_z) + intrinsics.cy(); // 返回重投影误差 return {observed_point_image.x()-u_proj, observed_point_image.y()-v_proj}; } ``` #### 5.4 单应性矩阵H的应用场景分析 除了基本理论外,书中还特别提到了单应性矩阵(Homography Matrix,H)这一工具可以用来处理两帧间仅有旋转平移变化的情况。具体而言就是说如果两个摄像设备在同一时间分别获取了一张照片,则只要满足上述条件就可以借助于它完成一些特定的任务比如拼接全景图等等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值