应该是思维导图的形式使用markmap实现,可以使用md文档在VSCode中添加插件预览,预览图如绑定的那个资源的样式。
效果大概是长这个样子
> 但是CSDN不好用,一堆乱码。这里建议从这个链接中复制下载md文件,使用VSCode的markmap插件查看,或者直接把md的内容复制到markmap网站也能查看。
markmap:
colorFreezeLevel: 50
initialExpandLevel: 10
maxWidth: 600
VSLAM
传感器输入
相机
相机模型
针孔模型
内参模型
- 相机内参 K K K: ( f x 0 c x 0 f y c y 0 0 1 ) \begin{pmatrix} f_x&0 &c_x \\ 0 &f_y&c_y \\ 0 &0 &1 \end{pmatrix} fx000fy0cxcy1
- 归一化坐标: [ X / Z Y / Z 1 ] T \begin{bmatrix} X/Z &Y/Z &1 \end{bmatrix}^T [X/ZY/Z1]T
- 像素坐标: ( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) = 1 Z K P \begin{pmatrix} u\\ v\\ 1\\ \end{pmatrix}=\frac{1}{Z} \begin{pmatrix} f_x&0 &c_x \\ 0 &f_y&c_y \\ 0 &0 &1 \end{pmatrix}\begin{pmatrix} X\\ Y\\ Z\\ \end{pmatrix}=\frac{1}{Z} KP uv1 =Z1 fx000fy0cxcy1 XYZ =Z1KP
畸变模型
- 径向畸变: x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \begin{matrix} x_{distorted} = x(1+k_1r^2+k_2r^4+k_3r^6)\\ y_{distorted} = y(1+k_1r^2+k_2r^4+k_3r^6) \end{matrix} xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)
- 切向畸变: x d i s t o r t e d = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y \begin{matrix} x_{distorted} = x+2p_1xy+p_2(r^2+2x^2)\\ y_{distorted} = y+p_1(r^2+2y^2)+2p_2xy \end{matrix} xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+p1(r2+2y2)+2p2xy
- 畸变后的归一化坐标: x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y \begin{matrix} x_{distorted} = x(1+k_1r^2+k_2r^4+k_3r^6)+2p_1xy+p_2(r^2+2x^2)\\ y_{distorted} = y(1+k_1r^2+k_2r^4+k_3r^6)+p_1(r^2+2y^2)+2p_2xy \end{matrix} xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2y2)+2p2xy
- 畸变后的像素坐标: u = f x x d i s t o r t e d + c x v = f y y d i s t o r t e d + c y \begin{matrix} u=f_xx_{distorted}+c_x\\ v=f_yy_{distorted}+c_y \end{matrix} u=fxxdistorted+cxv=fyydistorted+cy
相机类型
单目RGB
双目RGB
双目相机模型
- 相似三角形关系:$\frac{z-f}{z} = \frac{b-u_L+u_R}{b} , 其中 ,其中 ,其中b$是双目相机的基线,两个水平放置的相机光圈在x轴上的距离。
- 深度值 z = f b d z = \frac{fb}{d} z=dfb,视差 d = d e f u L − u R d\overset{def}{=}u_L-u_R d=defuL−uR, b b b是基线
深度图像RGB-D
IMU
IMU参数
积分方法
预积分
中值积分
外参标定
前端里程计 Visual Odometry
图像预处理
特征提取
- 外观相似的特征应该具有相似的描述子
ORB特征 Oriented FAST
- FAST角点 3像素半径灰度值变化明显的点
- 尺度不变性:使用图像金字塔放缩关系处理尺度不变性
- 旋转不变性:通过灰度质心和几何中心确定特征点的方向
- BRIEF描述子
- 使用FAST关键点的方向计算Steer BRIEF获得ORB描述子的旋转不变性
SIFT特征 Scale-Invariant Featrue Transform尺度不变特征变化
- 先进行非极大抑制,再去除低对比度的点,再通过Hessian矩阵去除边缘响应过大的点。
- 利用不同尺寸的图像与高斯差分滤波器卷积
- 在正方形区域内统计梯度幅值的直方图,直方图最大值对应主方向,可以有多个主方向
- 描述子:128维度: 4 ∗ 4 ∗ 8 4*4*8 4∗4∗8
- 旋转、尺度、亮度不变性,对视角、仿射变换、噪声保持稳定性
SURF特征
- 先利用Hessian矩阵确定候选点,然后进行非极大抑制
- 利用原图片与不同尺寸的方框滤波器(box filter)卷积。
- 在圆形区域内计算各个扇形范围内x、y方向的haar小波响应,模最大的扇形方向作为主方向
- 描述子:64维度: 4 ∗ 4 ∗ 4 4*4*4 4∗4∗4
特征匹配
基于描述子
暴力匹配 Brute-Force Matcher
快速近似最近邻匹配 GLANN
基于光流
稀疏光流
Lucas-Kanade 光流
- 灰度不变假设
- 假设图像块中的像素具有相同的运动
- 多层光流,以获得比较好的初始运动估计
稠密光流
计算当前相机位姿
- 2D-2D、2D-3D、3D-3D都有个前提: 已知匹配关系
2D-2D 对极几何
本质矩阵E和基础矩阵F
- 约束关系: x 2 T E x 1 = p 2 T F p 1 x_2^TEx_1 = p_2^TFp_1 <