A comparison of several algorithms for computing surface normal vectors from point cloud data, a fundamental task in 3D geometry processing.

Methods Covered

The primer.ipynb notebook explores and compares different approaches:

  • PCA-based estimation — Using principal component analysis on local neighborhoods
  • Weighted least squares — Fitting local planes with distance-based weighting
  • Bivariate smoothing splines — Fitting smooth B-spline surfaces and computing normals analytically

Why Smoothing Splines?

While neural network-based methods dominate modern normal estimation, bivariate smoothing splines offer a compelling alternative. They strike a balance between simplicity, efficiency, and robustness, achieving results comparable to some neural network approaches while far outperforming traditional methods like PCA.

Key advantages:

  • Computational simplicity — No training required, works out of the box
  • Robustness to irregular sampling — Handles non-uniform and inhomogeneous point clouds well
  • Exceptional on clean data — Ideal for synthetic data applications where noise is minimal

The smoothing spline approach fits a continuous surface to local point neighborhoods, allowing normals to be computed analytically from the surface derivatives rather than estimated from discrete point configurations.