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

本文主要讲解了视觉SLAM中基于特征点法的前端,涉及ORB特征点提取、特征匹配、对极几何、三角测量、PnP和ICP等关键步骤。通过对极几何求解相机位姿,三角测量获取深度信息,从而实现单目SLAM的初始化。PnP和ICP则用于求解相机位姿和点云间的变换。

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

主要内容

本章开始进入视觉里程计(VO)部分,VO按是否需要提取特征,分为特征点法的前端和不提特征的前端。这一章讲的是基于特征点法的前端,分为以下内容。

  1. 特征点法:找到两张2D图像上的匹配点。
  2. 对极几何:根据2D-2D特征点对求解R,t。
  3. 三角测量:根据2D-2D特征点求深度。
  4. PnP:根据3D点云和匹配的2D图像求R,t。
  5. ICP:求两个点云之间的R,t。

关系是:

  1. 特征点法找到2D图像的匹配点对,用于对极几何和pnp
  2. 对极几何求出2D-2D的位姿。
  3. 根据对极几何求出的位姿,三角测量求出2D-2D的深度。
  4. 根据三角测量求出的深度,可以初始化单目SLAM,得到三维点信息;或用RGBD相机获得三维信息。知道3D信息,对于下一张2D图像,可根据特征点法找到的匹配点对,使用PNP,求出位姿信息和深度信息。
  5. 根据pnp求出的深度信息;或直接用RGBD得到的两个点云,可以用ICP,求出两个点云之间的位姿变换。

在这里插入图片描述
图片引自leeyau的博客

一、特征点法

这部分内容,讲述了提取2D图像的特征点,并对不同图像之间的特征点进行匹配,得到匹配的特征点对。这些匹配点是后面用来估计相机位姿的基础。

特征点:在SLAM中被成为路标。分为关键点和描述子。
对于SLAM来说,SIFT太慢,FAST没有方向信息,使用改进FAST的ORB特征。

ORB特征

关键点:Oriented FAST

是改进的,具有方向性的FAST描述子。
FAST用于检测局部像素灰度明显变化的位置,思想是看邻域内有没有连续N个和它差T灰度的点。加上NMS和其他遍历的加速trick。
ORB的改进:

  • 根据FAST关键点的Harris响应值,选取前N大的,以固定特征点数目。
  • 构建图像金字塔,解决尺度问题。
  • 使用灰度质心法,解决旋转问题。(加一个几何中心到质心的向量)
描述子:BRIEF

是一种二进制描述子,描述了关键点附近两个像素的大小关系。

特征匹配

局部特征会导致误匹配,难以解决。
BRIEF描述子使用汉明距离进行相似性度量,快速近似最近邻(FLANN)适合数目多的特征点匹配。

二、对极几何

在这里插入图片描述

  • 已知:匹配点对 p 1 p_1 p1 p 2 p_2 p2的像素坐标。
  • 给定:两张二维图像,二维图像上特征点的匹配关系。
  • 未知:P的三维空间坐标, I 1 I_1 I1 I 2 I_2 I2的变换矩阵( T 1 , 2 T_{1,2} T1,2,即 R , t R,t R,t)。

一般是用于__单目SLAM的初始化__,用对极几何可求出位姿,在用三角测量估计三维空间点的位置后,就能用其他更准确的方法继续求解了。

1. 对极约束

设P在图1的相机坐标系下,坐标为:
P = [ X , Y , Z ] T P=[X,Y,Z]^T P=[X,Y,Z]T
p 1 p_1 p1 p 2 p_2 p2的像素坐标(单位像素):
s 1 p 1 = K P , s 2 p 2 = K ( R P + t ) s_1p_1=KP, s_2p_2=K(RP+t) s1p1=KP,s2p2=K(RP+t)

其归一化平面坐标(单位米):
x 1 = K − 1 p 1 , x 2 = K − 1 p 2 x_1=K^{-1}p_1,x_2=K^{-1}p_2 x1=K1p1,x2=K1p2

得到:
x 2 = R x 1 + t x_2=Rx_1+t x2=Rx1+t
这里的 x x x是齐次坐标,等式表达了一个齐次关系。

两边同时左乘 t ‘ {t‘} t,这个东西相当于与它做外积,得到的结果和它、 x 2 x_2 x2都垂直。因此再左乘一个 x 2 T x_2^T x2T,就得到了0。
最终得到:
x 2 T t ’ R x 1 = 0 x_2^Tt’Rx_1=0 x2TtRx1=0

中间部分写成 E E E矩阵,称为本质矩阵:
x 2 T E x 1 = 0 x_2^TEx_1=0 x2TEx1=

### 视觉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)这一工具可以用来处理两帧间仅有旋转和平移变化的情况。具体而言就是说如果两个摄像设备在同一时间分别获取了一张照片,则只要满足上述条件就可以借助于它完成一些特定的任务比如拼接全景图等等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值