The idea behind 3D Gaussian Splatting is to represent the scene using a set of three-dimensional Gaussian primitives.
3D Gaussians are based on the three-dimensional extension of one-dimensional Gaussians.
Three-dimensional Gaussians are defined by a covariance matrix (in world coordinates) and centered at the point (mean)
:
| (10.116) |
To be rendered, this Gaussian must first be transformed into camera coordinates through a rotation and then projected into image coordinates.
However, one can use an approximation in which a two-dimensional Gaussian is drawn in image space.
By locally linearizing the perspective projection through its Jacobian
, the three-dimensional covariance is projected into a two-dimensional covariance
:
| (10.117) |
| (10.118) |
In (KKLD23), a further step is taken: since parameterizing a covariance matrix (positive semidefinite) is difficult, one starts from the fact that the matrix represents an ellipsoid and can therefore be minimally parameterized instead of treating all the matrix entries as unknowns. The idea is to use a scale matrix
(3 DOF) and a rotation matrix
(another 3 DOF, but normally represented by a quaternion; see Section A.3):
| (10.119) |
Finally, each 'Gaussian' may be associated with an RGB color or spherical harmonics (Spherical Harmonics, SH), in addition to the opacity parameter , similar to that used in NeRF.
In practice, the Gaussians are rendered from nearest to farthest until the opacity saturates.