《视觉SLAM十四讲 第二版》课后习题

本文为《视觉SLAM十四讲》(第二版)的课后习题解答,为本人学习时参考着网上的资源所写的答案,可能有所纰漏,希望大家指出。

第1讲 预备知识

  1. 有线性方程 Ax = b,当我们知道 A, b,想要求解 x 时,如何求解?这对 A 和 b 需 要哪些条件?提示:从 A 的维度和秩角度来分析。
    1.若b≠0,则
    当r=m=n时,整个方程存在唯一解;
    当r=n<m,即A列满秩,整个方程要么无解要么存在唯一解;
    当r=m<n,即A行满秩,整个方程有无穷解;
    当r<m,r<n,整个方程要么无解要么存在唯一解。
    2.若b=0,则
    当r=n时,整个方程只有解x=0;
    当r<n,整个方程有无穷解;
  2. 高斯分布是什么?它的一维形式是什么样子?它的高维形式是什么样子?
    答:高斯分布又称正态分布,一维形式为概率密度函数…

第2讲 初始SLAM

第3讲 三维空间刚体运动

  1. 验证旋转矩阵是正交矩阵。
    在这里插入图片描述
  2. 验证四元数旋转某个点后,结果是一个虚四元数(实部为零),所以仍然对应到一个三维空间点(式 3.34)
    在这里插入图片描述
  3. 画表总结旋转矩阵、轴角、欧拉角、四元数的转换关系。
    在这里插入图片描述

第4讲 李群与李代数

1.验证SO(3),SE(3)和Sim(3)关于乘法成群
在这里插入图片描述
在这里插入图片描述
2.验证(R^3,R,X)构成李代数
在这里插入图片描述
3.验证so(3)和se(3)(李代数)满足李代数要求的性质
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.验证性质(4.20)和(4.21)
在这里插入图片描述
5.证明
在这里插入图片描述
6.证明
在这里插入图片描述
7 仿照左扰动的推导,推导SO(3)和SE(3)在右扰动下的导数。
在这里插入图片描述

第5讲 相机与图像

第6讲 非线性优化

  1. 证明线性方程Ax = b 当系数矩阵A 超定时,最小二乘解为在这里插入图片描述
    在这里插入图片描述
  2. 调研最速下降法、牛顿法、高斯牛顿法和列文伯格-马夸尔特方法各有什么优缺点?除了我们举例的Ceres库和g2o库,还有哪些常用的优化库?
    在这里插入图片描述
  3. 为什么高斯牛顿法的增量方程系数矩阵可能不正定?不正定有什么几何含义?为什么在这种情况下解就不稳定了?

在这里插入图片描述
5. DogLeg是什么?它与高斯牛顿法和列文伯格-马夸尔特方法有什么异同?

在这里插入图片描述

第7 讲 非线性优化

  1. 除了本书介绍的ORB特征点,你还能找到哪些特征点?请说说SIFT或SURF的原理,并对比它们与ORB之间的优劣。

  2. 设计程序调用OpenCV中的其他种类特征点,统计在提取1000个特征点时在你的机器上所用的时间。

  3. 我们发现,OpenCV提供的ORB特征点在图像中分布不够均匀。你是否能够找到或提出让特征点分布更均匀的方法?

  4. 研究FLANN为何能够快速处理匹配问题,除了FLANN,还有哪些可以加速匹配的手段?

  5. 把演示程序使用的EPnP改成其他PnP方法,并研究它们的工作原理。

  6. 在PnP优化中,将第一个相机的观测也考虑进来,程序应如何书写?最后结果会有何变化?

  7. 在ICP程序中,将空间点也作为优化变量考虑进来,程序应如何书写?最后结果会有何变化?

  8. 在特征点匹配过程中,不可避免地会遇到误匹配的情况。如果我们把错误匹配输入到PnP或ICP中,会发生怎样的情况?你能想到哪些避免误匹配的方法?

  9. 使用Sophus的SE3类,自己设计g2o的节点和边,实现PnP和ICP的优化。

  10. 在Ceres中实现PnP和ICP的优化。

### 关于《视觉SLAM十四》第四章课后题五的解答与解析 #### 问题描述 在《视觉SLAM十四》第四章中,课后题五通常涉及对三维重建过程中某些特定算法的理解和应用。这类题目旨在考察读者对于多视图几何、特征匹配以及基础矩阵计算等方面的知识掌握情况。 #### 解析过程 为了完成此类题目,需要理解如何通过两幅或多幅不同视角下的图像来恢复场景结构及其摄像机姿态。这涉及到几个核心概念和技术: - **特征提取与匹配**:从给定图片中检测并描述局部不变特征点(如角点),然后基于这些特征实现跨图像间的对应关系建立[^1]。 - **本质矩阵(Essential Matrix)** 和 **基础矩阵(Fundamental Matrix)** 的估计:一旦获得了可靠的特征匹配对,则可以通过八点法或其他方法求解表示两个相机相对位置的姿态参数——即本质矩阵;而当不知道内参时则转而估算更一般的基础矩阵[^2]。 - **三角化(Triangulation)** :利用已知的内外参数信息,结合对应的二维投影坐标,反向推算出世界坐标的三维点位[^3]。 针对本道练习的具体要求,假设其关注的是从两张校准过的立体像对构建稀疏地图模型的过程,那么解决方案可能如下所示: ```cpp // 假设已经完成了必要的预处理工作,比如读取图像、执行FAST/SIFT/ORBSURF等特征检测器获取关键点集合kp1,kp2, // 并进行了FLANN/KDTree之类的快速近似最近邻搜索得到初步配对matches; std::vector<cv::Point2f> pts1,pts2; for(DMatch& match : matches){ // 将匹配好的索引转换为实际像素坐标 pts1.push_back(kps1[match.queryIdx].pt); pts2.push_back(kps2[match.trainIdx].pt); } cv::Mat F = findFundamentalMat(pts1,pts2,cv::FM_RANSAC); // 计算基础矩阵 if (F.empty()) { std::cerr << "Failed to compute Fundamental matrix." << std::endl; } else { cv::Mat E = K.t() * F * K; // 转换为基础矩阵到本质矩阵形式,其中K代表相机内部参数阵 } ``` 上述代码片段展示了如何依据OpenCV库函数`findFundamentalMat()` 来获得基础矩阵,并进一步调整为本质矩阵的形式以便后续操作。需要注意的是,在真实环境中还需考虑噪声影响等因素做额外优化处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值