Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis
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. 增加流媒体支持
- 实时帧预测:通过在现有场景上预测未来帧的方式,支持流媒体应用中的实时内容生成,这可以结合时间不透明度机制来预测短时间内的场景变化。
- 轻量化模型部署:通过量化模型参数或使用知识蒸馏的方法,将模型轻量化,减少对计算资源的需求,以便在带宽受限的流媒体应用中有效部署。
这些改进方向可以帮助现有方法不仅提升渲染质量和速度,还能拓展其适用范围,使其能够更好地应对实际应用中的挑战。
相关文章:

Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis
Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis 摘要 动态场景的新视角合成一直是一个引人入胜但充满挑战的问题。尽管最近取得了很多进展,但如何同时实现高分辨率的真实感渲染、实时渲染和紧凑的存储,依然是一个巨大的…...

PCL 基于FPFH特征描述子获取点云对应关系
目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 FPFH特征计算函数 2.1.2 获取点云之间的对应点对函数 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总…...

项目实战:Qt+OpenCV仿射变换工具v1.1.0(支持打开图片、输出棋盘角点、调整偏移点、导出变换后的图等等)
若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143105881 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...

OpenCV坐标系统与图像处理案例
在图像处理中,理解图像的坐标系统是至关重要的。OpenCV,作为一个强大的计算机视觉库,提供了丰富的功能来操作图像。本文将介绍OpenCV中的坐标系统,并提供一个简单的案例来展示如何使用这些坐标来修改图像的特定区域。 OpenCV坐标…...

Unity之如何使用Unity Cloud Build云构建
文章目录 前言什么是 UnityCloudBuild?如何使用Unity云构建Unity 团队中的人员不属于 Unity Team 的人员UnityCloudBuild2.0价格表如何使用Unity云构建配置CloudBuild前言 Unity Cloud Build作为Unity平台的一项强大工具,它允许开发团队通过云端自动构建项目,节省了繁琐的手…...

Halcon开启多线程
并行运算(提升检测时间) 支持主线程中的子线程并行执行程序和调用算子。 一旦启动,子线程由线程 ID 标识,该线程 ID 是一个取决于操作系统的整数进程号。 子线程的执行独立于它们启动的线程。 因此,无法预测子线程执行…...

Echarts 点击事件无法使用 this 或者 this绑定的数据无法获取
这里写自定义目录标题 现象解决方案 现象 给echarts绑定自定义点击事件时,无法使用this,并且无法获取到this绑定的数据。 解决方案 增加:const _this this; 代码块如下: const _this this; let myChart echarts.init(docum…...

PCL 基于距离阈值去除错误对应关系(永久免费版)
目录 一、概述1.1 原理1.2 实现步骤1.3应用场景 二、关键函数2.1 获取初始点对2.2 基于距离的对应关系筛选函数2.3 可视化 三、完整代码四、结果展示 即日起,付费专栏所有内容将以永久免费形式陆续进行发表!!! 一、概述 在3D点云的…...

DirectX 11 和 Direct3D 11 的关系
以下是对两者的详细比较: DirectX 11 DirectX 11是微软的一项技术,为高性能游戏和复杂图形程序制定了标准。它是DirectX系列的一个版本,引入了多项创新功能,如硬件加速的Tessellation(细分曲面技术)、多线…...

什么是SCRM?为什么企业要做SCRM?
很多人都知道CRM是客户关系管理系统,而SCRM又是什么呢? 今天我就给大家用一文讲清SCRM的那些事,本文包括:SCRM 的定义与内涵,与传统 CRM 的区别;通过案例阐述其重要性及作用,如适应消费模式转变…...

类间方差,分割地物
类间方差(Inter-class Variance)是用于图像分割中的一种统计量,特别是在使用Otsu方法进行阈值选择时。它衡量的是分割后两个类别(通常是前景和背景)之间的分离程度。类间方差越大,说明两个类别之间的差异越…...

基于微博评论的自然语言处理情感分析
目录 一、项目概述 二、需要解决的问题 三、数据预处理 1、词汇表构建(vocab_creat.py) 2、数据集加载(load_dataset.py) 四、模型构建(TextRNN.py) 1、嵌入层(Embedding Layerÿ…...

MFEM( Modular Finite Element Methods)是一个灵活的、可扩展的、开源的有限元库
MFEM( Modular Finite Element Methods )是一个灵活的、可扩展的、开源的有限元库,主要用于求解偏微分方程(PDE)问题。MFEM的目标是通过模块化设计和强大的抽象能力,简化有限元方法的使用,并支持高效的并行计算,尤其是在复杂的几何形状和自适应网格细化的情况下。 核…...

在VMware上创建虚拟机以及安装Linux操作系统,使用ssh进行远程连接VMware安装注意点 (包含 v1,v8两张网卡如果没有的解决办法)
一,VMware上创建虚拟机 1.VMware下载 1)点击VMware官网进入官网 网址:VMware by Broadcom - Cloud Computing for the EnterpriseOptimize cloud infrastructure with VMware for app platforms, private cloud, edge, networking, and security.https…...

关于vue3中如何实现多个v-model的自定义组件
实现自定义组件<User v-model"userInfo" v-model:gender"gender"></User> User组件中更改数据可以同步更改父组件中的数据: 1 父组件: <User v-model"userInfo" v-model:gender"gender">&…...

【STM32项目_2_基于STM32的宠物喂食系统】
摘要:本文介绍一款基于 STM32 的宠物喂食系统资源。该系统以 STM32 为核心,集成多种传感器与设备,涵盖 DHT11、HX711、减速马达及 ESP8266 模块,具备环境监测、精准喂食、网络连接及数据存储功能。 🔜🔜&am…...

商场楼宇室内导航系统
商场楼宇室内导航系统 本文所涉及所有资源均在传知代码平台可获取 文章目录 商场楼宇室内导航系统效果图导航效果图查看信息数据加载加载模型模型选型处理楼层模型绑定店铺创建店铺名称动态显示隐藏2d元素空气墙查看信息楼梯导航效果图 导航效果图 查看信息 数据加载 因为是一…...

2025全网最全计算机毕业设计选题推荐:计算机毕设选题指导及避坑指南√
博主介绍:✌全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLM…...

Vision China 2024 | 移远通信以一体化的AI训练及部署能力,引领3C电子制造智能升级
10月14日,由机器视觉产业联盟(CMVU)主办的中国机器视觉展(Vision China)在深圳国际会展中心盛大开幕。作为全球领先的物联网整体解决方案供应商,移远通信应邀参加展会首日举办的“智造引领数质并进”3C电子制造自动化与数字化论坛。 论坛上,移…...

浏览器播放rtsp视频流解决方案
方案一: html5 websocket_rtsp_proxy 实现视频流直播 实现原理 实现步骤 服务器安装streamedian服务器 客户端通过video标签播放 <video id"test_video" controls autoplay></video><script src"free.player.1.8.4.js"></script&g…...

Ubuntu下查看指定文件大小
Ubuntu下查看指定文件大小 方法一:查看指定文件夹的总大小方法二:查看文件夹内各个子文件夹的大小方法三:查看指定深度的子文件夹大小方法四:使用ls命令查看单个文件的大小注意事项 在Ubuntu中查看指定文件夹的大小,你…...

【南开X上海交大】OPUS:效率显著提升的OCC网络
1. 摘要 占据预测任务旨在预测体素化的3D环境中的占据状态,在自动驾驶领域中迅速获得了关注。主流的占据预测方法首先将3D环境离散化为体素网格,然后在这些密集网格上执行分类。然而,样本数据分析显示,大多数体素实际上是未占据的…...

SqlUtils 使用
一、前言 随着 Solon 3.0 版本发布,新添加的 SqlUtils 接口,用于操作数据库,SqlUtils 是对 Jdbc 原始接口的封装。适合 SQL 极少或较复杂,或者 ORM 不适合的场景使用。 二、SqlUtils 使用 1、引入依赖 <dependency><…...
平面声波——一维Helmhotz波动方程
平面声波的一维Helmholtz波动方程是一种简化的声波传播模型,适用于在一维空间中传播的声波。 声波的基本物理过程---傅里叶变换---Helmholtz方程 一、声波的基本波动方程 在无源、无耗散、均匀介质中的一维声波的波动方程为: 其中: 表示位…...

深度学习 简易环境安装(不含Anaconda)
在Windows上安装深度学习环境而不使用Anaconda,下面是一个基于pip的安装指南: 1. 安装Python 确保你已经安装了Python。可以从Python官网下载Python,并在安装时勾选“Add Python to PATH”选项。 注意,Python 不要安装最新版的…...

Java缓存技术(java内置缓存,redis,Ehcache,Caffeine的基本使用方法及其介绍)
目录 摘要 1. Java缓存技术概述 1.1定义 1.2 优势 1.3 应用场景 2. Java中的内置缓存实现 2.1 通过通过HashMap和ConcurrentHashMap实现缓存 3. Java缓存框架 3.1 Redis 3.1.1 redis的简介 3.1.4 Redis的工作原理 3.1.5 总结 3.2 Ehcache 3.2.1 Eh…...

YoloV9改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发
摘要 在目标检测领域,YoloV9以其高效和准确的性能而闻名。然而,为了进一步提升其检测能力,我们引入了DeBiFormer作为YoloV9的主干网络。这个主干网络的计算量比较大,不过,上篇双级路由注意力的论文受到很大的关注,所以我也将这篇论文中的主干网络用来改进YoloV9,卡多的…...

【力扣 | SQL题 | 每日3题】力扣2988,569,1132,1158
1 hard 3mid,难度不是特别大。 1. 力扣2988:最大部门的经理 1.1 题目: 表: Employees ---------------------- | Column Name | Type | ---------------------- | emp_id | int | | emp_name | varchar | | de…...

移动网络知识
一、3G网络 TD-SCDMA(时分同步码分多址接入)、WCDMA(宽带码分多址)和CDMA2000三种不同的3G移动通信标准 TD-SCDMA(时分同步码分多址接入):中国自主开发的一种3G标准主要用于国内市场ÿ…...

CentOS系统Nginx的安装部署
CentOS系统Nginx的安装部署 安装包准备 在服务器上准备好nginx的安装包 nginx安装包下载地址为:https://nginx.org/en/download.html 解压 tar -zxvf nginx-1.26.1.tar.gz执行命令安装 # 第一步 cd nginx-1.26.1# 第二步 ./configure# 第三步 make# 第四步 mak…...