Dyna3DGR: 4D Cardiac Motion Tracking with Dynamic 3D Gaussian Representation

原博客作者:胡JT,uphome

使用3D高斯来表征心脏模型,并使用MLP来预测把不同时间下的高斯参数,实现了4D心脏跳动。

Dyna3DGR = 显式3D高斯(几何表示) + 隐式神经场(运动建模)

image

具体实现

整个过程是由两个部分组成的,使用3D高斯来对心脏模型进行建模。使用MLP接受时间戳编码之后,得出在相应的时间戳下的高斯参数(坐标,尺寸,强度,旋转角度)。

3D高斯建模

一个高斯椭圆球的参数包括(位置,旋转,缩放,不透明度,颜色)。位置是这个高斯球的中心,形状使用协方差矩阵(可以分解成一个旋转矩阵rot以及缩放矩阵scale)进行表示,I决定这个高斯中心的强度值。

Gi(Xϕi)=Iie12(Xxyzi)TΣi1(Xxyzi)ϕi={xyzi,Σi,Ii}G_{i}\left(X \mid \phi_{i}\right) = I_{i} \cdot e^{-\frac{1}{2} \left(X - x y z_{i}\right)^{T} \Sigma_{i}^{-1} \left(X - x y z_{i}\right)} \\ \phi_{i} = \left\{ \mathbf{xyz}_{i}, \Sigma_{i}, I_{i} \right\}

ϕi\phi_{i}是一个参数集。

XX代表的是3D空间中的一个位置。这个公式代表着的是在空间中的XX点,第ii个高斯球的强度值。IiI_{i}是这个高斯球中心的最大强度值。后面的等式计算的是一个这个高斯球的强度随离中心距离的衰减的程度。

同时,一个空间点XX会被多个高斯球所影响。这里就是简单地将XX点周围对齐有影响的高斯值加起来。did_{i}是高斯球的作用范围。

V(Xθi)=i:XxyzidiGi(Xϕi)V(X \mid \theta_{i}) = \sum_{i : \|X - xyz_{i}\| \leq d_{i}} G_{i}(X \mid \phi_{i})

心脏形变

首先,使用**控制节点(选取关键的高斯核)**来控制整体心脏的形变,而不是全部的高斯核来输入到MLP。可以用少量的高斯核就可以表示整个心脏的形变。

SC-GS: Sparse-Controlled Gaussian Splatting for Editable Dynamic Scenes

寻找在模型变化中,在多个时间步中都出现在对应空间位置附近的控制点。这个控制点具有坐标以及影响范围。在影响范围内的高斯核的变化方式是相似的。这个控制点控制其影响范围内的所有高斯核的变化。

image

image

就是在规定的空间范围内随机生成控制点(具有坐标以及其RBF影响范围半径),这些参数都是可以被学习的。

使用**神经网络Fθ\mathcal{F}_{\theta}**来得到控制点影响范围下的高斯参数在不同的时间下的数值。会输出一个位移量以及一个尺度变化

(Δxyz,α)=Fθ(γ(sg(x)),γ(t))(\Delta xyz,\alpha)=\mathcal{F}_{\theta}(\gamma(\operatorname{sg}(\boldsymbol{x})),\gamma(t))

sg(⋅) 表示停止梯度操作。是因为这里的xx也是可学习参数,如果不停止的话,会将梯度再次传递给xx

其中,坐标输入以及时间戳的输入需要进行编码

γ(p)=(sin(2kπp),cos(2kπp))k=0L1\gamma(p)=\left(\sin\left(2^{k}\pi p\right),\cos\left(2^{k}\pi p\right)\right)_{k=0}^{L-1}

这里的网络的作用是输入控制点的坐标以及时间戳,会输出这个控制点影响范围内的高斯核的位移量以及尺度变化。

一个高斯核会同时被多个控制点所影响,使用KNN搜索k个最近控制点,K个控制点同时对这个高斯核进行影响。是通过加权的方式对其进行影响。

[Δxyzitαit]=j=1kwj[Δxyzjtαjt]\left[\Delta xyz_{i}^{t} \mid \alpha_{i}^{t}\right] = \sum_{j=1}^{k} w_{j} \cdot \left[\Delta xyz_{j}^{t} \mid \alpha_{j}^{t}\right]

这里的权重是wjw_{j},是需要归一化。$ \quad \hat{w}{i j}是第是第i个高斯与第个高斯与第j个控制点直接的权重,使用径向基函数计算(RBF)。后面的公式就是径向基函数(控制点的参数,可学习)。越近影响越大。其中个控制点直接的权重,使用径向基函数计算(RBF)。后面的公式就是**径向基函数**(控制点的参数,可学习)。越近影响越大。其中d{ij}$是欧式距离,下面的是函数半径(可学习)。

wj=w^ijjCkw^ij,w^ij=exp(dij22σj2)w_{j} = \frac{\hat{w}_{i j}}{\sum_{j \in \mathcal{C}_{k}} \hat{w}_{i j}}, \quad \hat{w}_{i j} = \exp \left(-\frac{d_{i j}^{2}}{2 \sigma_{j}^{2}}\right)

这里论文少说了一部分,会将整个3D模型以与GT相同的角度切开,根据切片进行Loss计算。

高斯的切片是通过调整渲染平面实现的,需要与GT的切片位姿相统一。

image

变换好之后,经过体渲染,得到变换之后的高斯模型与真实心脏体素模型之间的差异。

L=V(G(xyz+Δxyz,αscale,rot,I)Vgt1\mathcal{L} = \sum \left\| V\left(G(xyz + \Delta xyz, \alpha \cdot \text{scale}, \text{rot}, I\right) - V_{gt} \right\|_{1}

训练

高斯点的初始点是在ED期分割掩码所定义的心脏组织区域内,进行均匀采样,从而获得一系列三维空间坐标点。然后,控制节点被放置在与此批高斯元完全相同的位置上。因此,初始状态下,一个高斯元对应一个控制节点。

分部分训练的。

  • 第一阶段(前1000轮):建立稳定的规范空间几何基础。使用高斯来对心脏进行建模。
  • 第二阶段:联合优化几何与运动参数,避免耦合振荡,让心脏跳动起来。

结果

Dyna3DGR在保持形变场物理合理性方面具有突破性表现

  • HD(Hausdorff距离)↓:衡量分割边界的最大误差,值越小越好
  • ||J|-1|↓:雅可比行列式与1的绝对偏差,评估体积保持能力
  • det(Jφ)≤0↓:形变场中出现折叠或撕裂的点的数量,要求为0
  • Params(M)↓:模型参数数量(百万级),衡量计算效率

image

number是初始高斯元的数量。SSIM:结构相似性。PSNR:图像保真度

image