将TUM数据集制作成BundleFusion数据集

在上一篇文章中,我写到了如何将TUM数据生成BundleFusion所需要的数据集,生成的数据集如下图中所示.并且是将每一组数据的groundtruth.txt中的位姿数据写如到这里的pose文件中,作为每一帧图像的先验位姿.

今天我便将生成的数据集转换为了.sens格式,然后运行bundlefusion算法,第一次尝试很失败,1400张图像,最后只重建出了花瓶的一半,还有几片叶子,我不知道哪里出了问题,首先是检查一下数据格式是不是正确,图像的名称, 还有每一组数据集最后的info.txt文件的内容,检查并没有发现明显的错误.然后我又调解了两个配置文件中的一些参数,但是并不知道有可能是什么原因.最后我把目光停留在数据集的info.txt文件上,之前使用kinect相机,经过手动标定相机可以标定得到depthShift这个数据,但是现在我并不知道,也不知道TUM数据集的这个数值,然后我在代码中搜索这个m_depthShift的用途,代码是如下

for (unsigned int i = 0; i < getDepthWidth()*getDepthHeight(); i++) {
			const auto* d = getDepthFloat();
			std::cout << "d[" << i << "]: " << d[i] << std::endl;
			depth[i] = (unsigned short)ml::math::round((m_recordedData->m_depthShift * d[i]));
		}

读取深度图的深度数据,然后乘上 m_depthShift,我大致猜出来,他的作用了,

在最初的info.txt文件中我将m_depthShift设置为1000,  但是重建不成功,我突然想到,我要查看一下,深度图像的数值,于是我用imageJ来查看一下深度图.

这是BundleFusion使用的SUN3D数据集中的一组数据的一对彩色图和深度图,当我把鼠标点在最左侧的垃圾桶的上边缘时,imgJ显示1328,而根据彩色图,目测也是1米多的样子,所以也验证了,该组数据集中的info.txt中的m_depthShift=1000.

 

 而对于TUM数据集,当我将鼠标放在图片最前端的花盆上时,根据彩色图,目测只有30cm的距离,但是imageJ上显示的是2930,所以我感觉应该将info.txt中的m_depthShift设置为1000.

我将m_depthShift设置为10000后,重新生成 .sens数据集,这次就可以重建成功了.重建效果如下.

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实时全局一致的3D重建,使用动态表面重新整合技术实时,高品质,大尺寸场景的3D扫描是混合现实和机器人应用的关键。然而,可扩展性带来了姿态估计漂移的挑战,在累积模型中引入了显着的错误。方法通常需要几个小时的离线处理来全局纠正模型错误。最近的在线方法证明了令人信服的结果,但遭受以下缺点:(1)需要几分钟的时间才能执行在线修正,影响了真正的实时使用; (2)脆弱的帧到帧(或帧到模型)姿态估计导致许多跟踪失败;或(3)仅支持非结构化的基于点的表示,这限制了扫描质量和适用性。我们通过一个新颖的,实时的端对端重建框架来系统地解决这些问题。其核心是强大的姿态估计策略,通过考虑具有高效分层方法的RGB-D输入的完整历史,针对全局摄像机姿态优化每帧。我们消除了对时间跟踪的严重依赖,并且不断地将其定位到全局优化的帧。我们提出了一个可并行化的优化框架,它采用基于稀疏特征和密集几何和光度匹配的对应关系。我们的方法估计全局最优化(即,束调整的姿势)实时,支持从总跟踪故障(即重新定位)恢复的鲁棒跟踪,并实时重新估计3D模型以确保全局一致性;都在一个框架内。我们优于最先进的在线系统,质量与离线方法相同,但速度和扫描速度前所未有。我们的框架导致尽可能简单的扫描,使用方便和高质量的结果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值