自动驾驶机器人slam定位试知识系列02之高频面试题(01)
SLAM高频面试问题
这个博客系列会分为C++ STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和CSDN(牛客上某些文章上会附上内推码)也会同步更新,全网同号(lonely-stone或者lonely_stone)。关于高频面试题和C++ STL面经,每次我会更新10个问题左右,每次更新过多,害怕大家可能看了就只记住其中几个点。(在个人秋招面试过程中,面试到后面,发现除了个人项目和实习经历外,个人所记录的内容基本能涵盖面试官能问到的)(另外个人才疏学浅,如果所分享知识中出现错误,请大家指出,避免误导其他人)
1. 如何对匹配好的点做进一步的处理,以保证匹配效果:确定匹配的最大距离阈值,如汉明距离要小于最小距离的两倍;(orbslam)
- 使用KNN-matching算法,令K=2。则每个match点得到两个最接近的descripter,然后计算最接近距离和次接近距离之间的比值,当比值大于既定值时,才为最终match;
- RANSAC(使用RANSAC找到最佳单应性矩阵。由于这个函数使用的特征点同时包含正确和错误匹配点,因此计算的单应性矩阵依赖于二次投影的准确性)
2. 图像放大两倍,内外参怎么变化?
外参和内参中的畸变参数保持不变,但内参为各自变成2倍。
3. 单应矩阵、基础矩阵、本质矩阵的定义,纯旋转的情况是怎样的
- 本质矩阵E和基础矩阵都是在对极几何约束(描述两个视图之间的内在投影关系)中引入的,其中E和F的区别在于有无内参,这也就决定了E表达的是两个相机坐标的三维点的关系,F表达的是像素点关系。
- 而单应矩阵H表述真实世界的一个平面与它对应图像的透视变换,除了相机获取到的图像中的点分布在同一个平面之外。当相机仅有旋转没有平移、物理世界为平面或者物理世界距离离相机足够远的情况下,均不满足E和F,应使用单应矩阵。
- 纯旋转:在相机只有旋转没有平移的时候,此时t为0,导致无法求解R,这时可以使用单应矩阵H求旋转,但是仅有旋转的话,无法三角化求深度
4. 描述PNP
全称(Perspective-n-points,提供了一种解决方案,它是由3D-2D的位姿求解方式,即需要已知匹配的3D点和图像2D点。目前主要使用场景有两个:一是求解相机相对于某2维图像/3维物体的位姿,二是SLAM算法中估计位姿时通常需要PnP给出初始位姿。
- 在1中:我们输入的是物体在世界坐标系下的3D点以及这些点在图像上投影的2D点,求得相机坐标系相对于世界坐标系的转换Tcw;
- 在2中:输入上一帧的3D点,和这些点在当前帧下投影得到的2D点,所以它求的是当前帧相对于上一帧的位姿变换。
5. pnp最少需要几个点?ax=b的求解
pnp最少需要3个点,只有1个点对的自由度是4,2个点对的话,自由度是2。ax=b求特解,再求通解,加起来
6. (个人补充)PNP(pespective-n-point)算法学习
- 当PNP中N=1时,即只知道一对3D-2D点对的情况下:无数解
- 当PNP中N=2时,即只知道两对3D-2D点对的情况下:无数解
- 当PNP中N=3时,即知道三对3D-2D点对的情况下:四个解,其中一个就是要的那个解
- 当PNP中N=4时,即知道四对3D-2D点对的情况下:先用3个点计算出4组解获得四个旋转矩阵、平移矩阵,然后将第四个点的世界坐标代入公式,获得其在图像中的四个投影(一个解对应一个投影),取出其中投影误差最小的那个解,就是我们所需要的正解。
P3P只需要3个点,EPNP解法:
- 利用已知的3d点,通过PCA选择4个控制点,建立新的局部坐标系,从而将3d坐标用新的控制点表示出来。
- 然后,利用相机投影模型和2d点,转换到相机坐标系中,再在相机坐标系中建立和世界坐标系同样关系(每个点在相机坐标系和世界坐标系下控制点处的坐标一致)的4个控制点,
- 求解出相机坐标系下的四个控制点的坐标,进而利用ICP求解pose
7. 如何处理关键帧
- 跟踪质量/公式特征点
- 距离关键帧的距离足够远
- 距离上一关键帧的帧数足够多(时间)
8. 为什么要引入李群李代数
旋转矩阵自身是带有约束的正交且行列式为1,他们作为优化变量时,会引入额外的约束,届时优化变得困难,通过李群李代数的转换关系,把位姿估计变成无约束的优化问题。
9. 什么是极线约束
是指同一个点在两幅图上的映射,已知左图映射点为p1,那么右图上的p2一定在左图的极线上,这样可以减少匹配的点数量。对极约束几何意义是P,O1和O2共面,归一化坐标之间的为F,像素之间的为E本质矩阵。
10. 单目视觉slam中尺寸漂移是怎么产生的
单目相机无法根据一张图片得出物体的实际大小,同理不能得出运动的尺度大小。虽然在优化过程中有三角测量,但是三角测量中极小的误差在不断累积之后也会变得很大。