August, 2026

Extracting Surfaces from Gaussian Splats

Reconstructing surfaces from photographs using 3D Gaussian Splats and Poisson surface reconstruction.

This article was based on my work on next best view planning for 3D Gaussian splats. It explains how Poisson surface reconstruction (PSR) can be used to reconstruct the surfaces of a scene from 3D Gaussain splats (3DGS). First we will give background on PSR and 3DGS then we will discuss how to use to use Gaussian splats as input to PSR. Finally, we will briefly explain using stochastic surface reconstruction for next best view planning.

Background: Poisson Surface Reconstruction

Define the model as with surface , and an indicator function which is inside the model and outside. PSR does not fit directly. It reconstructs and then extracts as a level set.

(a) the samples, each with an inward normal. (b) the indicator function reconstructed from them. (c) the surface, a level set of the indicator function.

The gradient of is zero everywhere except at the surface, where it is the inward normal. This is a distribution rather than a function, but convolving with a smoothing filter gives

so a set of normals sampled over is a set of gradients of a smoothed indicator function.

The input to the algorithm is , a noisy sample of the surface's normals, where each sample has a position and an inward normal . Replacing the integral with a sum over the surface patch which each sample represents gives a vector field

is assembled from independent samples, so in general it is not the gradient of any function. Taking the least squares closest gives Poisson's equation. The surface is the level set at the isovalue the samples themselves take,

Expectation for Samples

  • Each sample has a normal. is defined in terms of .
  • Normals are consistently oriented. The sign of determines which side of a sample is interior to the model.
  • Samples lie on the surface. Zero mean noise in is averaged out by , but a bias displaces the reconstructed surface.
  • Sample density follows surface area. The weight is what makes the sum an estimate of the integral. Without it a region contributes to in proportion to the number of samples it contains rather than its area.

Grey is the true surface and red is the reconstruction. (a) one normal is flipped. (b) samples are concentrated on one arc and is constant. (c) samples are displaced off the surface.

Background: 3D Gaussian Splatting

3DGS represents a scene as a collection of Gaussians, each parameterised by a position, rotation, scale, opacity and a set of spherical harmonic coefficients. A view is synthesised by projecting the Gaussians into screen space and alpha blending them in depth order. The parameters are optimised by gradient descent against a photometric loss between the synthesised and source views. An adaptive density control algorithm periodically adds Gaussians in poorly represented regions of the scene and removes them from dense or transparent ones.

A synthetic drum scene reconstructed by 3DGS. The silhouettes are correct and the surfaces are not.

Sampling Normals from Gaussians

The direct approach treats each Gaussian as one sample. The position is the Gaussian's position, and is the axis of least variance, which is the direction the Gaussian is flattest along.

(a) a cross section of the Gaussians near a surface, with the axis of least variance of each drawn in red. (b) the sample normals which the surface requires.

This fails each of the four requirements.

  • A Gaussian close to spherical has no well defined axis of least variance, and the photometric loss does not penalise one.
  • The axis of least variance is an axis rather than a direction, so the sign of is undetermined.
  • The Gaussians are not surface aligned. They overlap and extend to either side of the surface, so their positions are biased off it. Alpha blending hides this during rendering, because a set of overlapping Gaussians and a surface can integrate to the same image.
  • is undefined. Adaptive density control allocates Gaussians according to photometric error, so a large flat region may be covered by a few Gaussians and a small detailed one by many.

Sampling Normals in Image Space

Each of these problems is a consequence of reading geometry from individual Gaussians. Sampling the rendered images instead avoids them, because alpha blending combines the overlapping Gaussians before the sample is taken.

The pipeline. The stages between the input views and the point cloud produce a sample set which meets the requirements of the solve.

Surface Aligned Gaussians

Gaussian Surfels constrains each Gaussian to be flat by driving the third component of its scale to zero. A flat Gaussian has a well defined normal, which satisfies the first requirement. We use Gaussian Surfels with its additional regularisation terms removed, which simplifies comparison against the unmodified algorithm at the cost of some surface alignment.

Reconstructing Normals from Depth

The scene is rendered at each input pose . Normals cannot be blended directly, as neither component wise nor spherical interpolation of the Gaussians' normals produces a usable result. Depth blends well, so the normal is reconstructed from the depth map instead. The depth is back projected into a view space position map , and the normal is the cross product of central differences,

(a) the pixel and the four neighbours the central differences are taken across. (b) the same five pixels back projected into view space. The normal is perpendicular to both tangents.

A pixel is only shaded by a surface facing the camera which rendered it, so is oriented towards the camera and negated to give the inward normal. This determines the sign which was undetermined when sampling the Gaussians directly.

Masking and Downsampling

The position and normal maps are downsampled with a box filter, which reduces the number of samples and averages out noise. Downsampling also fixes . Each remaining sample is one block of pixels back projected onto the surface, so up to foreshortening the patches are equal in area, is constant, and it can be dropped from .

This holds only for blocks which are covered by the surface throughout. A block which straddles a silhouette back projects partly onto the surface and partly onto the background, and its average position lies off the surface. We accumulate a mask alongside the other maps, taking the product of the alpha channel over each block rather than the mean, so that a block containing any uncovered pixel is rejected.

Downsampling across a silhouette. A blue dot marks a block which is kept and a red cross one which is rejected. (a) the mean keeps blocks which are mostly background. (b) the product keeps only blocks which are covered throughout.

The samples which pass the mask are transformed into world space by and accumulated across the input views. Remaining outliers are rejected by comparing each sample's distance to its neighbours against the distribution over the whole point cloud, and the point cloud is downsampled spatially to bound the size of the solve.

Surface Uncertainty

For online capture of a scene it is useful to know where in the scene has not been appropriately covered. We can use the total uncertainty of a camera angle as a measure of it's importance.

Stochastic Poisson surface reconstruction (Sellán and Jacobson, reformulated by Holden et al.) reformulates PSR. The output is a Gaussian process over , so each point in space has a mean and a variance, where the mean is analogous to the reconstructed by PSR. Integrating the probability that a point is misclassified over the domain gives a total uncertainty.

Candidate poses on the drum scene coloured by the surface uncertainty each captures, with green being more certain. The back of the kit was not covered by the input views.

Further Reading