Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis
摘要
动态场景的新视角合成一直是一个引人入胜但充满挑战的问题。尽管最近取得了很多进展,但如何同时实现高分辨率的真实感渲染、实时渲染和紧凑的存储,依然是一个巨大的挑战。为了应对这些挑战,我们提出了时空高斯特征点投影(Spacetime Gaussian Feature Splatting),作为一种新的动态场景表示方法,包含三个关键组件:
-
时空高斯表示(Spacetime Gaussians):
- 通过增强3D高斯,使其具有时间维度的不透明度(temporal opacity)以及参数化的运动/旋转,我们定义了时空高斯。这种表示方式使得高斯点能够捕捉场景中的静态、动态和瞬时内容。
-
特征点投影渲染(Splatted Feature Rendering):
- 我们引入了特征点投影渲染方法,用神经特征替代了传统的球谐函数。这些神经特征能够有效地建模与视角和时间相关的外观变化,同时保持较小的模型尺寸。
-
引导采样(Guided Sampling):
- 我们利用训练误差和粗略深度信息,在难以收敛的区域采样新的高斯点,以提高这些区域的渲染效果。
实验在多个真实数据集上进行了验证,结果表明我们的方法在渲染质量和速度上达到了当前最先进的水平,同时保持了较小的存储需求。在8K分辨率下,我们的简化版模型可以在Nvidia RTX 4090 GPU上实现**60帧每秒(FPS)**的实时渲染。我们的代码已经公开发布在 GitHub。
1. 引言
真实世界动态场景的真实感建模一直是计算机视觉和图形学中追求的目标。通过这种建模,用户可以在新的视角和时间点自由探索动态场景,从而获得强烈的沉浸式体验,并在VR/AR、广播、教育等应用中带来巨大益处。
新视角合成的最新进展,特别是神经辐射场(NeRF),使得在非实验室环境中利用随意的多视角输入来进行静态场景建模变得更加便捷和逼真。从那时起,大量研究工作出现,旨在增强渲染质量和速度。特别地,一些工作采用各向异性的径向基函数作为3D表示方法,非常适合场景结构的自适应建模,并提升了细节的呈现。而**3D Gaussian Splatting(3DGS)**进一步提出了一种基于光栅化的差分体积渲染方案,通过将3D高斯点投影到图像平面上实现了显著的渲染速度提升。
尽管这些方法在静态场景中取得了成功,但直接将这些方法逐帧应用于动态场景是具有挑战的,因为这需要较大的模型尺寸和较长的训练时间。当前最先进的动态视角合成方法采取了整体的方式,通过将多个帧表示在单个模型中来实现紧凑的模型表示。NeRFPlayer 和 HyperReel 结合静态空间表示与时间特征共享/插值来提高模型的紧凑性,因为自然视频中的相邻帧通常具有较高的相似性。类似地,MixVoxels 使用时间变化的潜在变量与空间特征进行内积关联。而K-Planes 和 HexPlane 则将4D时空域分解为多个2D平面以实现紧凑表示。然而,这些方法存在一个局限性,即它们的网格化表示不能完全适应场景结构的动态变化,难以有效建模精细的细节。同时,它们在不牺牲质量的情况下也难以实现实时高分辨率渲染。
为了解决上述挑战,本文提出了一种用于动态视角合成的新表示方法。我们的方法可以同时实现高真实感质量、实时高分辨率渲染以及紧凑的模型尺寸。本文的核心是时空高斯(Spacetime Gaussian, STG),它通过将3D高斯扩展到4D时空域来实现动态场景的建模。我们提出为3D高斯添加时间相关的不透明度以及多项式参数化的运动和旋转,使得STGs能够忠实地建模场景中的静态、动态以及瞬时内容。
为了提高模型的紧凑性并应对时间变化的外观问题,我们提出了特征点投影渲染(Splatted Feature Rendering)。具体来说,对于每个时空高斯点,我们存储了表示基础颜色、视角相关信息以及时间相关信息的神经特征。这些特征通过可微分的投影(splatting)被光栅化到图像空间,然后通过一个小型的多层感知机(MLP)网络生成最终的颜色。这种特征相比于传统的球谐函数更加小巧,但表现力很强。
此外,我们还引入了引导采样的方法来提升复杂场景的渲染质量。我们观察到,在初始化时高斯分布稀疏的远处区域往往会出现模糊的渲染结果。为了应对这一问题,我们提出在训练过程中使用训练误差和粗略深度信息对4D场景中的新高斯点进行采样。
本文的主要贡献总结如下:
- 我们提出了一种基于时空高斯的新表示方法,用于实现高保真且高效的动态视角合成。
- 提出了特征点投影渲染,提高了模型的紧凑性并促进了时间变化外观的建模。
- 引入了一种引导采样的方法,用于提升远处稀疏区域的渲染质量。
- 在多个真实世界数据集上的广泛实验表明,本文的方法在渲染质量和速度上达到了当前最先进的水平,同时保持了紧凑的模型尺寸。我们的轻量级模型能够在8K分辨率下以60帧每秒(FPS)进行渲染。
2. 相关工作
新视角合成(Novel View Synthesis):早期的新视角合成方法主要利用基于图像的渲染技术和代理几何/深度信息,从源图像中采样生成新视角。Chaurasia等人通过估计深度图并结合超像素来补偿缺失的深度数据,从而合成新的视角。Hedman等人使用RGBD传感器来提升渲染质量和速度,而Penner和Zhang则利用体素来确保合成视图的连续性和深度的稳健性。Wiles等人则通过对点云的潜在特征进行投影以实现新视角合成。
神经场景表示(Neural Scene Representations):近年来,神经场景表示在新视角合成方面取得了巨大进展。这些方法通过分配神经特征到不同的结构(如体积、纹理或点云)来实现新视角合成。NeRF 提出了一种基于差分体积渲染的方法,不需要代理几何,而是使用MLP来隐式编码3D空间中的密度和辐射信息。之后,许多工作涌现出来,旨在提高差分体积渲染的质量和效率。例如,一些方法通过改进采样策略来减少点查询的数量,或者采用基于光场的公式来实现改进。而其他一些方法则通过结合显式和局部化的神经表示以换取速度提升,例如Instant-NGP 使用哈希网格,而TensoRF 则利用张量分解来提高模型的紧凑性。
最近,3D Gaussian Splatting(3DGS) 提出了使用各向异性3D高斯作为场景表示,并通过高效的可微光栅化技术将这些高斯投影到图像平面,从而实现高分辨率渲染。类似于3DGS,NeuRBF 利用各向异性径向基函数实现高保真渲染。然而,这些方法主要集中在静态场景的表示上。
动态新视角合成(Dynamic Novel View Synthesis):在动态自由视角渲染中,一个常见的做法是使用多视角视频作为输入。Broxton等人通过多球图像作为初始输入,随后将其转化为分层网格。Bansal等人将静态和动态内容分离,并在屏幕空间中通过深度网络操作视频。Attal等人使用多球表示来处理360度视频中的深度和遮挡问题。还有一些方法扩展静态NeRF相关表示到动态场景中,如DyNeRF 结合时间条件潜在代码来紧凑地表示动态场景,而StreamRF 通过建模连续帧的差异来加速动态场景的训练。
一些研究则致力于从单目视频中进行动态视角合成。在这种情况下,单个相机在动态场景中移动,在每个时间步只有一个观察视角。为了应对监督稀疏性,这些方法通常引入运动、场景流或深度的先验信息。
与本文相关的最新工作:近期有一些与本文同时进行的研究工作,例如4K4D 将4D点云与K-Planes结合,并使用可微分深度剥离进行模型训练。Luiten等人通过一组移动的3D高斯来建模4D场景,但由于离散定义的位置和旋转,其渲染质量会出现闪烁伪影。相比之下,本文提出的多项式运动模型在表达能力上更为丰富,能够实现更高的渲染质量和更快的渲染速度。此外,Yang等人和Wu等人侧重于单目动态视角合成,并使用变形场来变形一组3D高斯点,而本文的方法在多视角视频设置下表现更为优异。
3. 预备知识:3D Gaussian Splatting
给定多个已知相机位姿的视点图像,3D Gaussian Splatting (3DGS) [41] 通过可微光栅化技术来优化一组各向异性3D高斯,以表示静态的3D场景。由于其高效的光栅化,优化后的模型可以实时渲染高保真的新视角。
3DGS [41] 将一个3D高斯 i i i 与位置 μ i \mu_i μi、协方差矩阵 Σ i \Sigma_i Σi、不透明度 σ i \sigma_i σi 和球谐系数 (SH coefficients) h i h_i hi 相关联。任意空间点 x x x 处的3D高斯的不透明度计算如下:
α i = σ i exp ( − 1 2 ( x − μ i ) T Σ i − 1 ( x − μ i ) ) . \alpha_i = \sigma_i \exp\left( -\frac{1}{2} (x - \mu_i)^T \Sigma_i^{-1} (x - \mu_i) \right). αi=σiexp(−21(x−μi)TΣi−1(x−μi)).
协方差矩阵
Σ
i
\Sigma_i
Σi 是半正定的,可以分解为缩放矩阵
S
i
S_i
Si 和旋转矩阵
R
i
R_i
Ri:
Σ
i
=
R
i
S
i
S
i
T
R
i
T
,
\Sigma_i = R_i S_i S_i^T R_i^T,
Σi=RiSiSiTRiT,
其中, S i S_i Si 是一个由3D向量 s i s_i si 参数化的对角矩阵,而 R i R_i Ri 则由四元数 q q q 来参数化。
要渲染图像,首先通过透视变换的近似,将3D高斯投影到2D图像空间 [105]。具体来说,一个3D高斯的投影可以近似为一个2D高斯,其中心为 μ i 2 D \mu_{i}^{2D} μi2D,协方差为 Σ i 2 D \Sigma_{i}^{2D} Σi2D。设 W , K W, K W,K 分别为视角变换矩阵和投影矩阵,则 μ i 2 D \mu_{i}^{2D} μi2D 和 Σ i 2 D \Sigma_{i}^{2D} Σi2D 计算如下:
μ
i
2
D
=
(
K
(
W
μ
i
(
W
μ
i
)
z
)
)
1
:
2
\mu_{i}^{2D} = \left(K\left(\frac{W \mu_i}{(W \mu_i)_z}\right)\right)_{1:2}
μi2D=(K((Wμi)zWμi))1:2
Σ
i
2
D
=
(
J
W
Σ
i
W
T
J
T
)
1
:
2
,
1
:
2
,
\Sigma_{i}^{2D} = (J W \Sigma_i W^T J^T)_{1:2,1:2},
Σi2D=(JWΣiWTJT)1:2,1:2,
其中,
J
J
J 是投影变换的雅可比矩阵。
在按照深度顺序对高斯点进行排序后,通过体积渲染得到像素的颜色:
I
=
∑
i
∈
N
c
i
α
i
2
D
∏
j
=
1
i
−
1
(
1
−
α
j
2
D
)
,
I = \sum_{i \in N} c_i \alpha_i^{2D} \prod_{j=1}^{i-1} (1 - \alpha_j^{2D}),
I=∑i∈Nciαi2D∏j=1i−1(1−αj2D),
其中, α i 2 D \alpha_i^{2D} αi2D 是方程 (1) 的2D版本, μ i \mu_i μi、 Σ i \Sigma_i Σi、 x x x 分别被替换为 μ i 2 D \mu_{i}^{2D} μi2D、 Σ i 2 D \Sigma_{i}^{2D} Σi2D、 x 2 D x^{2D} x2D(像素坐标)。 c i c_i ci 是在视角方向和球谐系数 h i h_i hi 下评估后的RGB颜色。
4. 方法细节
4.1. 时空高斯 (Spacetime Gaussians)
为了表示4D动态,我们提出了时空高斯(Spacetime Gaussians, STG),将3D高斯与时间组件相结合,用于建模场景中出现/消失的内容以及运动/变形,如图2(a)所示。具体来说,我们引入了时间径向基函数来编码时间不透明度,这可以有效地建模在视频时长内出现或消失的场景内容。同时,我们利用时间条件的参数化函数来描述3D高斯的位置和旋转,以建模场景中的运动和变形。对于一个时空点 ( x , t ) (x, t) (x,t),STG的不透明度计算如下:
α i ( t ) = σ i ( t ) exp ( − 1 2 ( x − μ i ( t ) ) T Σ i ( t ) − 1 ( x − μ i ( t ) ) ) , \alpha_i(t) = \sigma_i(t) \exp \left( -\frac{1}{2} (x - \mu_i(t))^T \Sigma_i(t)^{-1} (x - \mu_i(t)) \right), αi(t)=σi(t)exp(−21(x−μi(t))TΣi(t)−1(x−μi(t))),
其中, σ i ( t ) \sigma_i(t) σi(t) 是时间不透明度, μ i ( t ) \mu_i(t) μi(t) 和 Σ i ( t ) \Sigma_i(t) Σi(t) 分别是时间相关的位置和协方差, i i i 代表第 i i i 个STG。我们将在以下部分详细说明各组件。
时间径向基函数(Temporal Radial Basis Function):我们使用时间径向基函数表示STG在任意时间 t t t 的时间不透明度。受到 [18, 41] 使用径向基函数近似空间信号的启发,我们利用一维高斯函数来描述时间不透明度 σ i ( t ) \sigma_i(t) σi(t):
σ i ( t ) = σ i s exp ( − s τ i ∣ t − μ τ i ∣ 2 ) , \sigma_i(t) = \sigma_i^s \exp \left( -s_\tau^i |t - \mu_\tau^i|^2 \right), σi(t)=σisexp(−sτi∣t−μτi∣2),
其中, μ τ i \mu_\tau^i μτi 为时间中心, s τ i s_\tau^i sτi 为时间缩放因子, σ i s \sigma_i^s σis 为时间不相关的空间不透明度。 μ τ i \mu_\tau^i μτi 表示STG最为显著的时间戳,而 s τ i s_\tau^i sτi 决定了其有效持续时间(即时间不透明度较高的持续时间)。我们包含 σ i s \sigma_i^s σis 来允许STG之间存在空间不透明度的变化。
多项式运动轨迹(Polynomial Motion Trajectory):对于每个STG,我们采用时间条件函数来建模其运动。受到 [24, 35] 的启发,我们选择了多项式函数:
μ i ( t ) = ∑ k = 0 n p b i , k ( t − μ τ i ) k , \mu_i(t) = \sum_{k=0}^{n_p} b_{i,k} (t - \mu_\tau^i)^k, μi(t)=k=0∑npbi,k(t−μτi)k,
其中, μ i ( t ) \mu_i(t) μi(t) 表示STG在时间 t t t 的空间位置, { b i , k } k = 0 n p , b i , k ∈ R \{b_{i,k}\}_{k=0}^{n_p}, b_{i,k} \in \mathbb{R} {bi,k}k=0np,bi,k∈R 为相应的多项式系数,并在训练过程中进行优化。结合方程 (7) 和方程 (8),复杂且长的运动可以通过多个短而简单的运动片段进行表示。在我们的实现中,我们使用 n p = 3 n_p = 3 np=3,因为它在表示能力和模型大小之间取得了较好的平衡。
多项式旋转(Polynomial Rotation):参考 [41],我们使用实数值的四元数来参数化方程 (2) 中的旋转矩阵 R i R_i Ri。与运动轨迹类似,我们采用多项式函数来表示四元数:
q i ( t ) = ∑ k = 0 n q c i , k ( t − μ τ i ) k , q_i(t) = \sum_{k=0}^{n_q} c_{i,k} (t - \mu_\tau^i)^k, qi(t)=k=0∑nqci,k(t−μτi)k,
其中, q i ( t ) q_i(t) qi(t) 表示STG在时间 t t t 的旋转(以四元数表示), { c i , k } k = 0 n q , c i , k ∈ R \{c_{i,k}\}_{k=0}^{n_q}, c_{i,k} \in \mathbb{R} {ci,k}k=0nq,ci,k∈R 为多项式系数。在将 q i ( t ) q_i(t) qi(t) 转换为旋转矩阵 R i ( t ) R_i(t) Ri(t) 之后,时间 t t t 的协方差 Σ i ( t ) \Sigma_i(t) Σi(t) 可以通过方程 (2) 获得。我们在实验中设置 n q = 1 n_q = 1 nq=1。
需要注意的是,我们保持方程 (2) 中的缩放矩阵 S i S_i Si 为时间不变,因为我们在实验中没有观察到对该参数应用时间条件函数时,渲染质量有显著提升。
4.2. 特征点投影渲染 (Splatted Feature Rendering)
为了准确且紧凑地编码视角和时间相关的辐射,我们在每个STG中存储特征而不是球谐系数(SH coefficients)。具体来说,每个STG的特征 f i ( t ) ∈ R 9 f_i(t) \in \mathbb{R}^9 fi(t)∈R9 包含三部分:
f i ( t ) = [ f i base , f i dir , ( t − μ τ i ) f i time ] T , f_i(t) = \left[ f_i^{\text{base}}, f_i^{\text{dir}}, (t - \mu_\tau^i) f_i^{\text{time}} \right]^T, fi(t)=[fibase,fidir,(t−μτi)fitime]T,
其中, f i base ∈ R 3 f_i^{\text{base}} \in \mathbb{R}^3 fibase∈R3 包含基础RGB颜色, f i dir , f i time ∈ R 3 f_i^{\text{dir}}, f_i^{\text{time}} \in \mathbb{R}^3 fidir,fitime∈R3 编码了与视角方向和时间相关的信息。特征投影过程类似于3D Gaussian Splatting [41],只不过方程 (5) 中的RGB颜色 c i c_i ci 被特征 f i ( t ) f_i(t) fi(t) 所取代。在投影到图像空间后,我们将每个像素的特征分为 F base , F dir , F time F_{\text{base}}, F_{\text{dir}}, F_{\text{time}} Fbase,Fdir,Ftime,其通道对应于方程 (10) 中的三部分。
每个像素的最终RGB颜色通过一个两层的MLP Φ \Phi Φ 来获得:
I = F base + Φ ( F dir , F time , r ) , I = F_{\text{base}} + \Phi(F_{\text{dir}}, F_{\text{time}}, r), I=Fbase+Φ(Fdir,Ftime,r),
其中, r r r 为像素的视角方向,并与特征作为输入进行拼接。图2(b) 展示了渲染过程的示意图。
与SH编码相比,我们的基于特征的方法对每个STG需要的参数更少(9个 vs. 3阶SH的48个)。同时,由于MLP网络 Φ \Phi Φ 较浅且窄,我们的方法仍然实现了快速的渲染速度。
为了最大化渲染速度,我们还可以选择在训练和渲染过程中仅保留 F base F_{\text{base}} Fbase,而去掉 Φ \Phi Φ。
4.4. 引导高斯采样 (Guided Sampling of Gaussians)
我们观察到,在初始化时高斯点稀疏的区域往往难以收敛到高渲染质量,特别是当这些区域距离训练相机较远时。因此,我们进一步引入了一种策略,通过训练误差和粗略深度的引导来采样新的高斯点。
我们沿着在训练期间误差较大的像素射线采样新的高斯点,如图3所示。为了确保采样的有效性,我们在训练损失稳定之后进行采样。由于训练过程中的误差图可能会有噪声,我们采用**分块聚合(patch-wise aggregation)**的方式来聚合训练误差,从而优先选择误差较大的区域,而不是离群像素。然后,我们从每个选中的大误差块的中心像素采样射线。为了避免在过大的深度范围内采样,我们利用高斯中心的粗略深度图来确定更精确的深度范围。该深度图是在特征投影过程中生成的,计算开销很小。然后,我们在沿射线的深度范围内均匀采样新的高斯点,并在新采样的高斯点中心添加小的噪声。
在采样的高斯点中,不必要的点在经过多次训练步骤后会具有较低的不透明度并被剪枝。在我们的实验场景中,上述采样过程最多只需进行3次。
我们的引导采样策略与 [41] 中的密度控制技术是互补的。密度控制通过分裂逐渐增加现有高斯点附近的高斯,而我们的方法可以在稀疏或没有高斯点的区域采样新的高斯点。
5. 实验细节 (Implementation Details)
我们通过运动结构(structure-from-motion)从所有可用的时间戳中初始化我们的时空高斯(STGs),得到稀疏点云。为了进行密度控制,我们采用了比 [41] 更为激进的剪枝策略,以减少高斯点的数量并保持模型尺寸相对较小。我们使用了 Adam 优化器 [43] 进行训练。对于50帧的视频序列,单张 NVIDIA A6000 GPU 的训练时间为 40-60 分钟。我们调整了投影过程以支持真实世界数据集中不同的相机模型。更多的实现细节请参考补充材料。
6. 实验 (Experiments)
我们在三个真实世界基准数据集上评估了我们的方法:Neural 3D Video Dataset [48] (第6.1节)、Google Immersive Dataset [10] (第6.2节) 和 Technicolor Dataset [76] (第6.3节)。此外,我们还对方法的各个方面进行了消融研究(第6.4节)。更多结果和实时演示请参见补充材料和视频。
6.1. Neural 3D Video Dataset
Neural 3D Video Dataset [48] 包含六个室内多视角视频序列,由18到21个相机以 2704×2028 的分辨率拍摄。按照惯例,训练和评估在半分辨率下进行,第一个相机被保留用于评估 [48]。每个场景的帧数为300帧。
我们使用 PSNR、DSSIM 和 LPIPS [102] 作为评估指标。正如 [4, 28] 所提到的,DSSIM 的实现方法在各方法之间存在不一致性。为了公平比较,我们尽力将现有方法的 DSSIM 结果分为两类(DSSIM1 和 DSSIM2)。DSSIM1 使用 scikit-image 库中的结构相似性函数,数据范围设置为 1.0,而 DSSIM2 则设置为 2.0。我们还使用 FPS 作为渲染速度的指标。所有六个场景的指标均取平均值,除非另有说明。
如表1所示,我们的方法实现了 140 FPS,并在各方面相比其他方法取得了显著的优势。我们的方法在所有比较中均获得了最佳的 LPIPS,并且在大多数情况下也拥有最好的 PSNR/DSSIM。图4显示了在其他工作中广泛使用的代表性视角的定性比较。与其他基线相比,我们的结果包含了更加生动的细节(例如鲑鱼上的纹理)和无伪影的渲染效果(例如杯子上的焦散)。更多与同时期方法的比较请参考补充材料。
基于局限性与结论的改进方向
基于在局限性和结论部分提到的问题,以下是一些潜在的改进方向,以提升现有方法的渲染质量、速度以及适用性:
1. 支持实时训练
- 改进初始化技术:开发更高效的初始化方法,例如基于生成模型的预训练初始化,或者使用深度先验进行初始化,以减少训练时间并加速收敛。
- 渐进式训练策略:探索渐进式训练策略,从低分辨率或简化的场景开始训练,逐步增加复杂度,帮助加快训练速度并支持实时应用。
2. 适应单目输入的能力
- 引入正则化或生成先验:通过结合正则化技术或者生成先验(例如基于神经生成模型的先验),将现有方法扩展到单目输入的场景中,弥补多视角信息的不足。
- 场景流估计与深度约束:利用场景流估计(Scene Flow Estimation)和深度先验约束,增强在单目视频场景中的动态内容重建能力。
3. 动态内容的增强和适应
- 更高阶的运动与旋转建模:尝试引入更高阶的多项式或其他类型的曲线(如样条曲线)来建模运动和旋转,从而提升模型对复杂运动的表达能力。
- 引入弹性变形模型:为了应对更加复杂的动态场景,考虑将弹性变形模型融入现有的运动与旋转建模中,从而对更复杂的运动和形变具备更好的适应性。
4. 优化特征点投影渲染
- 混合编码方法:在特征投影渲染中结合球谐函数(SH)与神经特征,以确保在保持紧凑性的同时提升复杂光照与外观的建模能力。
- 更深的MLP网络:可以逐步增加MLP网络的深度和宽度,以提升对视角和时间依赖外观的表现力,但同时通过剪枝技术控制计算开销。
5. 改进引导高斯采样策略
- 多阶段采样:引入多阶段采样策略,确保在训练的不同阶段中对难以覆盖的区域进行充分优化。
- 自适应采样:利用生成对抗网络(GAN)或强化学习,针对难以收敛的区域动态选择采样频率与位置,进一步提升采样的效率和渲染质量。
6. 增加流媒体支持
- 实时帧预测:通过在现有场景上预测未来帧的方式,支持流媒体应用中的实时内容生成,这可以结合时间不透明度机制来预测短时间内的场景变化。
- 轻量化模型部署:通过量化模型参数或使用知识蒸馏的方法,将模型轻量化,减少对计算资源的需求,以便在带宽受限的流媒体应用中有效部署。
这些改进方向可以帮助现有方法不仅提升渲染质量和速度,还能拓展其适用范围,使其能够更好地应对实际应用中的挑战。
标签:Real,采样,场景,Splatting,渲染,Dynamic,mu,3D,高斯 From: https://blog.csdn.net/weixin_44287798/article/details/143106870