当前位置:   article > 正文

三维重建Fusion中的TSDF算法通俗描述_tsdf四个步骤1.建立长方体包围盒

tsdf四个步骤1.建立长方体包围盒

看个视频

https://www.youtube.com/watch?v=8M_-lSYqACo
这是mobilefusion的视频,大家先了解一下,看到在三维重建的时候外面有个长方体包围盒了吗?

数据准备:

我们不同角度拍摄的RGB图、深度图和相应的pose.txt。

步骤:

1.建立长方体包围盒

要建立一个长方体包围盒。让所有的三维点都在这个长方体里面。
假设z方向垂直相机。
很明显,x,y方向上的极值就是图像的边界。
图像的边界点是就是四个角。
(0,0),(w,0),(0,h),(w,h)
z方向上深度范围是0~max_depth
组合而成的边界点就是(0,0,0),(0,0,max_depth),(w,0,0)等的2^3=8种情况,然后把这些点用相机的内参和外参换算到世界坐标系中,长方体的极点。

2.划分网格

在长方体内部划分网格
比如说我们现在求得的长方体的极点分别是(-1,-1,-1),(1,1,1)单位是米。
我们要在这个长方体内部划分网格,就是分割出一个个等体积的小的立方体,也就是所谓的体素。我们让体素的边长是0.02,也就是2厘米。
那么从-1到1,我们可以划分出100个体素,也就是说这个长方体上每个小立方体的8个顶点的坐标可以用(x,y,z)来表示,其中x,y,z都是0-100之间的,同时它们的世界坐标也可以通过(-1+0.02x,-1+0.02y,-1+0.02*z)来计算出来。
以下图片来自https://blog.csdn.net/qq_31785865/article/details/78524429
在这里插入图片描述

3.迭代更新tsdf网格

遍历每一组数据(RGB图、深度图、pose.txt)
每次把这个长方体内的所有格点的世界坐标通过逆变换到相机坐标,再投影到图片上。
再将图片上对应位置的深度与格点的在相机坐标系下的深度比较。
depth_diff = depth_val-cam_pts[2,:];
如果|depth_diff |<trunc_marin则认为有效。
用dist=depth_diff/trunc_marin去加权更新tsdf网格。
ps:tsdf网格是和2中划分的长方体一样的,每个顶点存放的是dist的加权和。(TSDF主要获得差值+权重

4.找等值面

用marching cubes算法在tsdf网格中寻找dist加权和为0的等值面。就是物体表面。

在这里插入图片描述

更多《计算机视觉与图形学》知识,可关注下方公众号:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/883737
推荐阅读
相关标签
  

闽ICP备14008679号