在使用orb slam3进行稠密建图时,建图过程是使用elas计算双目视差,再转换为深度图得到深度,计算出点云的三维坐标。我使用kitti数据集就没有出现这样的问题,如上图1。但是在自制数据集的.bag上运行,就会在点云地图里总是有一些稠密的点在上方(如图二、图三),请问这是因为什么啊?
以下是为双目相机的参数文件。
引自免费微信小程序:皆我百晓生
在ORB SLAM3中使用自定义数据集进行稠密建图时,你遇到的问题可能与以下几点有关:
相机参数不准确:从你提供的配置文件MYNT_D_1000_Q.yaml
中可以看到相机的内参(fx, fy, cx, cy)和立体基线bf。如果这些参数与实际使用的相机设置不符,将会导致深度估计错误,从而在生成点云地图时出现异常密集区域。请检查并确保这些参数是经过正确标定得出的。
视差计算问题:ELAS算法在处理不同场景或光照条件下的图像对时可能会有不同的表现。如果你的自制数据集中存在较强的光照变化、运动模糊或者纹理缺失等现象,这可能导致视差计算不准,进而影响到深度图和点云的质量。
深度阈值设置不当:ThDepth(第37行)设置了深度图的有效范围,超出这个范围的深度值将被丢弃。如果该值设置过小,可能会导致距离较远的点无法出现在点云中;若设置过大,则可能引入噪声或误匹配点。根据你的描述,上方出现稠密点可能是由于ThDepth设置不当或者是深度映射因子(DepthMapFactor)引起的,需要根据实际情况调整这两个参数。
立体校正问题:尽管你没有提供立体校正参数(LEFT.K, LEFT.D, LEFT.R, LEFT.P等),但如果双目相机未做适当的校正或者校正参数有误,也会影响最终的深度估计及点云生成。
帧率不匹配:相机fps设置为30.0(第28行),而实际上如果.bag文件中的图像帧率与之不符,可能会导致ORB特征点匹配不稳定,进而影响深度图和点云质量。
解决方法:
同时,你可以尝试使用其他更为稳健的深度估计方法,比如半全局匹配(Semi-Global Matching, SGM)或者其他优化过的视差估计算法,并观察其效果是否有改善。