体素(Voxel)

20230411194508
题图中是3D数据的不同表示类型:
(a) 点云(Point clouds):点云是三维空间(xyz坐标)点的集合
(b) 体素网格(Voxel grids):体素是3D空间的像素。量化的,大小固定的点云。每个单元都是固定大小和离散坐标(相当于图片的像素化风格应用到三维上,像无数个正方体积木组成的三维形状)
(c) 多边形网格(Polygon meshes):mesh是面片的集合
(d) 多视图表示(Multi-view representations):多视图表示是从不同模拟视点渲染的2D图像集合

为了解释体素网格(Voxel grid),首先我们要了解占据栅格地图(Occupancy Grid Map)
20230411195026
画一个二维网格,每个网格单元里有实体的话就为占据状态(1),空的话就为(0)。很好理解。

而体素就是固定分辨率的三维栅格地图。
20230411195043
体素网格是固定分辨率的,与之对应可变分辨率的网格叫八叉树地图(Octomap)。
20230411195137

三线性插值

为了便于理解,介绍三线性插值之前先介绍一下线性插值和双线性插值

线性插值

已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值(反过来也是一样):
$$
y = \frac{x_{1}-x}{x_{1}-x_{0}}y_{0}+\frac{x-x_{0}}{x_{1}-x_{0}}y_{1}
$$
上式用x和x0,x1的距离作为一个权重,用于y0和y1的加权。双线性插值本质上就是在两个方向上做线性插值。

双线性插值

在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值
20230411195941
假如我们想得到未知函数 f 在点 P = (x, y) 的值,假设我们已知函数 f 在 Q11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四个点的值。最常见的情况,f就是一个像素点的像素值。首先在 x 方向进行线性插值,得到
20230411200145
20230411200129
然后在 y 方向进行线性插值,得到
20230411200341
综合起来就是双线性插值最后的结果:
20230411200252

三线性插值

20230411200536
x0表示在x下方一个方格点,x1表示在x上方的一个方格点,对于y0、y1、z0、z1是同样的意思。
xd、yd、zd表示x、y、z在较小相关坐标的差值
第一步:沿着x轴方向插值

20230411200630
V[x0,y0,z0]表示该函数在( x0,y0,z0)上的值

第二步:沿着y轴方向插值

20230411200815

第三步:沿着z轴方向插值

20230411200847

如此我们就得到了一个点的值。三线性插值的结果与沿三个轴的插值步骤的顺序无关:任何其他顺序,例如沿x,然后沿y,最后沿z,产生相同的值。

参考

https://blog.csdn.net/xbinworld/article/details/65660665
基于深度体素流的模糊视频插帧方法
Video Frame Synthesis using Deep Voxel Flow