单目稠密重建
立体视觉
单目相机通过移动相机之后进行三角化测量像素的距离。---->移动视角的立体视觉
双目相机利用左右目的视察计算像素距离
RGB-D直接获得像素距离
单目的稠密估计(估计每个像素的深度)
——>根据视频序列估计图像深度
对图像提取特征,根据描述子计算特征之间匹配。
通过不同视角下的观测估计特征点的深度(三角测量)
——>稠密深度图估计
无法把每个像素都当做特征点计算描述子,因此需要匹配
——>匹配
极线搜索与块匹配技术
- ——>极线搜索
在特征点法中,通过特征匹配得到p2的位置,然而现在没有描述子,只能在极线上搜索和p1想的比较相似的点。(可能沿着极线一直走比较每个像素与p1的相似程度。)
- ——>块匹配
单个像素亮度没有区分性》在p1周围取像素块提高区分性
- ——>计算像素块之间的差异:SAD(Sum of Absolute Different)、SSD(Sum of Squared Distance)、NCC(Normalized Cross Correlation,归一化互相关)
深度滤波器技术(高斯分布)
得到的匹配值有多个峰值,但是只是的对应点只有一个。使用概率分布来描述深度值,而非使用单一的数值来描述深度。
问题转为在不断对不同图像进行极线搜索时,我们估计的深度分布将发生怎样的变化,这就是深度滤波器。
稠密深度的整过程
1.假设所有像素的深度满足某个初始的高斯分布
2.当新数据产生时,通过极线搜索和块匹配确定投影点位置
3.根据几何关系计算三角化后的深度及不确定性
4.将当前观测融合进上一次的估计中。若收敛则停止计算,否则返回第二步。
实践
test_data中包括以下内容
image中有200幅无人机俯视图像,TXT文件中为每幅图像的位姿。
./build/dense_mapping test_data
loop 24
loop 40
最后深度图趋于稳定
像素梯度
逆深度
RGB-D稠密建图
拼接点云地图(Point_Cloud Map)
三角网格(Mesh),面片(Surfel)
通过体素(Voxel)建立占据网格地图(Occupancy Map)
SFM 泊松重建
八叉树地图(Octo-Map)
将三维空间建模为很多小方块(体素),每个面切成两片分割为8块。一直重复达到建模的最高精度。
实践(参考第5章PCL拼接点云 ./build/joinMap )
octovis octomap.bt
分辨率0.05米
分辨率0.1米