Real-time 3D Reconstruction at Scale using Voxel Hashing

算法流程

算法流程

  • 将每一张新输入的深度图融合到哈希表中,同时去除无效的体素来保持存储的稀疏性。
  • 渲染生成当前位姿的深度图和彩色图用于下一帧的ICP计算位姿,采用渲染图的目的是保证定位是frame-to-model的。

数据结构

数据结构

  • 在表面附近创建体素快,每个体素块包含83个体素,每个体素中存储sdf值,RGB值和权重。
  • hash表中每一个元素存储对应的三维坐标值,指向对应体素快的指针和为了处理重复冲突的指向其他hash表的指针。hash表的序号由三维坐标x,y,z,三个大素数p1,p2,p3和哈希表长度n计算得到: H ( x , y , z ) = ( x ⋅ p 1 ⨁ y ⋅ p 2 ⨁ z ⋅ p 2 )   m o d   n H(x,y,z)=(x \cdot p1 \bigoplus y \cdot p2 \bigoplus z \cdot p2) ~ mod ~ n H(x,y,z)=(xp1yp2zp2) mod n

冲突处理

在出现冲突时,在hash表的同一个哈希块中找到空位插入。

元素插入

根据x,y,z计算出位置,在hash中找到目标位置进行融合和创建体素。查找过程可能需要便利冲突处理的链表。在并行计算时,锁住正在处理的哈希块避免处理冲突,这可能会导致一些插入操作有延时,但不影响最终的效果。

元素删除

在删除无效的体素时,需要维护链表。

体素块更新

对于每一帧图像的每一条射线,根据截断的距离生成和插入所有的体素块。便利哈希表,并行处理所有需要更新,删除的体素。

本地体素快的管理

为了加快计算,在每个流程的开始,将不在视野中的体素块移出,并加入新进入视野的体素块。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值