1.将其中的点云生成方法进行替换,例如orbslam,进行更深一步的点云替换,比如用sfm,colmap等输出的稠密点云数据。
主要修改于三处
1>m_vslam = VisualSlamFactory::create(vslam_set, cam_set, imu_set);
2> m_vslam->registerResetCallback([=]() { reset(); });
3>m_stage_publisher
思路:一个process获取,另一个process进行传输,无法进行整体的替换,只能使用增量式的方法
第一步:读取sfm点云,PLY->PCL->CVGrid
点云以pointcloud形式存储,1.点云ID 2.Mat类型存储实际数据
若有了点云还需要什么?utm,gnss
2.在高程上添加一个随机数,看生成出来的拼接图像效果是否足够好。
正在进行,在正射影像中的高程上添加了一个随机数
在psl上再进行一次,将该过程置于生成表面之前
经过实验,若整体的增加在-1~+1之间,对整体效果没有特别大的影响
不过整体的高程位于-4~8之间,所以影响不确定。
3.使用rtsfm中的部分思路进行试验。
4.关于TSDF的相关内容
TSDF地图是由一堆体素构成的,每个体素内包含两个变量,一是tsdf值(用于生成重建表面),二是RGB信息(给重建表面贴上彩色纹理)。TSDF地图与实际场景的物理坐标系是可转换的。这是这一节讲解的基本信息。tsdf值和rgb值的计算会在下一节讨论。
相信大家即便是没有玩过“我的世界”,也肯定听说过这款游戏。在这款游戏中,世界是由三维小格子组成的。TSDF地图的原理就和它很像。TSDF是截断符号函数(Truncated Signed Distance Function)的缩写(初学不必去理会这些英文字眼)。一个三维的TSDF地图就是由L × W × H L\times W\times HL×W×H个三维小方块组成。我们称三维小方块为体素(Voxel)。列举一个例子。给定一个尺寸为100100×100×100的TSDF地图,该地图是有尺寸为0.05 m × 0.05 m × 0.05 m 的体素构成。那么可以计算出该TSDF地图覆盖一个5 m × 5 m × 5 m 的真实三维场景。这个地图中有10^6 个体素。每一个体素记录着tsdf值和RGB颜色信息(tsdf值范围是[ − 1 , 1 ] [-1,1][−1,1],在第三节做介绍)。GPU需要大概2KB存储单个体素的所有信息。因此GPU需要大概2GB左右的显存空间存放这个TSDF地图。从这些计算过程可见,TSDF占据非常大的显存空间,它适合小场景下的三维重建,比如室内环境。(原文链接:https://blog.csdn.net/qq_39732684/article/details/105294993)
5.test picture