【唐宇迪】三维重建-TSDF通俗解读 人工智能入门教程
水泡动画模拟(Marching Cubes) - 算法小丑 - 博客园 (cnblogs.com)
TSDF
流程分析
- 首先需要构建一大块空区域
- 采用体素网格来存储该区域
- 需要计算每个体素的TSDF值及其权重
原理简述
SDF值:它到最近的表面的距离
- X是其中一个体素,绿色是离它最近的平面
- P点是平面上离X最近的一点
- PX的模即为SDF
- 其中T表示为截断的意思,例如大于1记为1,小于-1记为-1。
计算流程:如何计算TSDF呢?
-
面到相机的深度是ds,相机采集到的深度是dv,则d(x) = ds - dv;
-
d(x) > 0说明该体素在真实的面的前面;反之则说明在真实的面的后面。
坐标转换
- 遍历每一个体素,计算其在世界坐标系中的位置
- 根据初始“大块”时设置的极点位置和体素大小决定
- 再将其在世界坐标中的值转换成其在相机坐标系中的位置(其到相机坐标原点的距离就是dv)
- 再根据相机内参,转换到像素坐标(因为我们由深度图,得到像素坐标就能得到其深度值)
TSDF组合
每个体素的值是增量更新的,每一帧图像都会更新体素的TSDF值。
例如第二帧是由其结果与第一帧组合得到,第三帧是组合了第二帧。
t
s
d
f
(
t
)
=
g
(
t
s
d
f
(
t
−
1
)
,
t
s
d
f
(
t
)
)
,
t
≥
1
tsdf(t) = g(tsdf(t - 1),tsdf(t)),t ≥ 1
tsdf(t)=g(tsdf(t−1),tsdf(t)),t≥1