Splattering 3D di Gaussiane

L'idea dello splattering 3D di Gaussiane è quello di rappresentare l'immagine come miscela di gaussiane tridimensionali. Le gaussiane 3D si basano sulla estensione tridimensionale delle gaussiane monodimensionali. Le gaussiane tridimensionali sono definite da una matrice di covarianza $\Sigma$ (in coordinate mondo) e centrate nel punto (media) $\mu$:

\begin{displaymath}
G(\mathbf{x}) = e^{-\frac{1}{2} \left( \mathbf{x} - \mu \right)^{\top} \Sigma^{-1} \left( \mathbf{x} - \mu \right) }
\end{displaymath} (9.99)

Per essere disegnata questa gaussiana deve prima essere trasportata in coordinate camera attraverso una rototraslazione $\mathbf{W}$ e infine proiettata in coordinate immagine. Tuttavia si può pensare ad una approssimazione, disegnando una gaussiana bidimensionale nello spazio immagine. In spazio 2D la covarianza $\Sigma'$ diventa

\begin{displaymath}
\Sigma' = \mathbf{J} \mathbf{W} \Sigma \mathbf{W}^{\top} \mathbf{J}^{\top}
\end{displaymath} (9.100)

dove $\mathbf{W}$ è la sola parte rotazionale della trasformazione e usando, come approssimazione, il Jacobiano $\mathbf{J}$ della proiezione prospettica calcolato nel punto rototraslato in camera $(x,y,z)^{\top}$. Per esempio nel caso di proiezione camera pinhole:
\begin{displaymath}
\mathbf{J} = \begin{bmatrix}
k_u / z & 0 & - \frac{k_u x}{ z^2 } \\
0 & k_v / z & - \frac{k_v y}{ z^2 } \\
\end{bmatrix}\end{displaymath} (9.101)

La matrice $\Sigma'$ pertanto ha dimensionalità $2 \times 2$ (ZPvBG01) ed è equiparabile alla matrice di ad una gaussiana 2D.

In (KKLD23) si fa un passo ulteriore: siccome risulta difficile parametrizzare una matrice di covarianza (semi definita positiva) si parte dal fatto che la matrice $\Sigma$ rappresenta un ellissoide e pertanto si può avere una minima parametrizzazione invece di usare tutti i termini della matrice come incognita. L'idea infatti è quella di usare una matrice di scala $\mathbf{S}$ (3 DOF) e una matrice di rotazione $\mathbf{R}$ (altri 3 DOF ma normalmente rappresentata da un quaternione, vedi sezione A.3):

\begin{displaymath}
\Sigma = \mathbf{R} \mathbf{S} \mathbf{S}^{\top} \mathbf{R}^{\top}
\end{displaymath} (9.102)

parametrizzando pertanto ogni gaussiana con 6 DOF. Da notare che $\mathbf{S} \mathbf{S}^{\top} = \diag \left( s_x^2, s_y^2, s_z^2\right)$.

Associato infine ad ogni punto ci può essere un colore RGB o delle armoniche sferiche (Spherical Harmonics SH) oltre ovviamente al parametro di opacità $\alpha$ simile a quello di NeRF. Dal punto di vista pratico le gaussiane sono renderizzate dalle più vicine alle più lontane fino a saturazione dell'opacità.

Paolo medici
2025-03-12