视觉SLAM第12讲|地图构建:单目稠密重建、RGB-D点云与八叉树地图全解析
前面十一讲我们把前端里程计、后端优化、回环检测挨个啃完,核心都是解决「定位」问题------我在哪。但SLAM全称里还有第二个M,Mapping建图。定位和建图本来就是一体两面:定位依赖地图提供约束,建图反过来又靠定位结果累积。
第12讲就专门讲建图:从单目稠密深度估计,到RGB-D直接点云重建,再到工程上最常用的八叉树占据地图,把不同类型地图的原理、优劣、适用场景一次性讲透。
一、建图概述:你需要什么样的地图
建图不是只有"三维点云"这一种形态。任务不同,需要的地图完全不一样。按照表达的信息可以分成两大类:

1.1 度量地图
强调精确的坐标、尺寸和几何关系,是SLAM里最常见的地图形式。又按精细度分成两类:
- 稀疏地图:只保留路标级别的特征点,用来辅助定位就行,数据量小、处理速度快。
- 稠密地图:建模所有能看到的表面,像素级/体素级精度,用来导航避障、三维可视化、场景重建。
1.2 拓扑地图
不关心精确坐标,只关心地点之间的连通关系。节点代表地点,边代表可通行的路径,适合高层路径规划。
💡通俗解释:就像你去商场,稀疏地图就是几个导购台的坐标,够你定位自己;稠密地图就是整个商场的三维模型,能看清每个店铺的造型;拓扑地图就是商场导览图,只标店铺和通道,告诉你哪能走哪不能走。
二、单目稠密重建:从像素里"迭代估计"深度
单目相机没有直接深度输出,想做稠密地图,就得逐像素估计深度。这就是单目稠密重建的核心问题。
2.1 极线搜索与块匹配

有了前后帧的相机位姿,左图的一个像素,对应到右图上不会随机分布,一定落在对应的极线上。沿着极线搜索匹配的像素块,就能找到对应像素,这就是极线约束。
- 极线约束把搜索范围从二维全图压缩到一维极线,计算量直接暴跌一个数量级。
- 匹配不用单个像素比,用像素块比,也就是块匹配,常用SAD(绝对差之和)、SSD(平方差之和)作为相似度指标。块比单个像素抗噪声,鲁棒性更好。
2.2 高斯深度滤波器
只靠两帧三角化出来的深度噪声很大。单目稠密重建的标准做法是深度滤波器:把每个像素的深度当成一个高斯分布,有均值和方差。
每来一帧新图,就沿着极线找匹配,得到一个新的深度观测,然后用高斯融合规则更新这个像素的深度分布。当方差小于设定阈值,就认为深度收敛了,固定下来不再更新。
💡通俗解释:就像判断一个东西有多远,第一眼猜个大概,越走越近多看几眼,每次都修正一下判断,越来越准,最后确定就是这个距离。深度滤波器就是这个过程的数学实现。
2.3 单目稠密的局限
✅ 优点:只用单目相机,硬件成本低,场景不限;
❌ 缺点:
- 计算量大,全图每个像素都要做极线匹配,通常要GPU加速才能实时运行;
- 弱纹理区域(白墙、天空、光滑表面)匹配误差大,深度跳变严重;
- 保留了单目天生的尺度不确定性,整体深度是飘的。
三、RGB-D稠密建图:直接测量的点云拼接
RGB-D相机主动测量每个像素的深度,不用费劲算视差、估深度,直接像素转三维点,是稠密建图最简单、落地性最强的方案。
3.1 点云拼接
步骤非常直接:
- 每帧深度图,根据相机内参转换成相机坐标系下的三维点云;
- 根据当前帧的相机位姿,把点云变换到世界坐标系;
- 所有帧的点云叠加到一起,就是全局稠密点云地图。
但原始点云有很明显的工程问题:
- 数据量大,一帧就几十万个点,多帧叠加后内存爆炸;
- 散乱无结构,查询某个位置有没有障碍物效率很低;
- 噪声大,物体边缘浮动明显。
3.2 八叉树地图 OctoMap
工程上做导航避障,最常用的不是原始点云,是八叉树占据地图。
核心思想:递归八叉划分三维空间。每个立方体节点存储三种状态:占据、空闲、未知。
- 有障碍物的区域,继续细分下一级,做到高精度;
- 空旷的区域,就停在粗粒度,不用存储细节,大幅节省内存。
💡通俗解释:八叉树就像分块收纳盒。大箱子先分成八个小盒子,有东西的小盒子再分八个,没东西的盒子就空着不用管。既知道哪有障碍物,又省空间,查询速度还快。
八叉树的核心优势:
- 内存高效,空旷空间压缩比极高;
- 支持多分辨率查询,近密远粗;
- 可以随时插入新点云、动态更新;
- 非常适合移动机器人导航、避障场景。
四、TSDF地图:高质量表面重建
如果想要更光滑、更精确的三维表面模型,就用TSDF(截断符号距离函数)地图。
4.1 TSDF基本原理
每个体素存储一个带符号的距离值:该体素到最近物体表面的距离。表面内部为负,外部为正。
"截断"的意思是:距离表面太远的地方就不存精确值了,只保留截断范围内的信息,进一步节省空间。
4.2 多帧深度融合
把多帧深度图的观测,逐体素融合到TSDF模型里,最终得到的表面会非常光滑,比原始点云的重建质量高很多。
经典代表就是KinectFusion,是用TSDF做实时三维重建的标杆方案。
💡通俗解释:TSDF就像把很多张深度图"叠印"在一起,越叠越光滑,越接近真实的物体表面。适合做高精度的三维重建模型。
五、实践环节
第12讲的实践围绕三个核心实验展开:
- 单目稠密重建:手写极线搜索+块匹配+高斯深度滤波器,从单目图像序列输出逐帧收敛的深度图,直观看到深度怎么一步步迭代稳定。
- RGB-D点云拼接:输入多帧深度图和对应相机位姿,拼接成全局稠密点云。
- 八叉树地图构建:把原始点云转换成八叉树占据地图,可视化不同层级的分辨率效果。
小结
建图从来没有标准答案,完全看任务需求。
只做定位,稀疏特征点地图就够了;做三维可视化、场景重建,用稠密点云或者TSDF;做机器人导航避障,八叉树占据地图是工程首选。
前端、后端、回环、建图,到这里视觉SLAM的完整算法框架就全部串起来了。下一讲我们进入工程实践章节,看看怎么把这些模块拼装起来,搭一个完整可运行的双目SLAM系统。