The use of pointclouds has grown steadily with advances in 3D scanning systems and 3D software. Today, pointclouds are used in many fields, including engineering, construction, cultural heritage preservation, robotics, autonomous systems, extended reality, and geospatial analysis.
These tutorials are intended for anyone wishing to learn the basics of pointcloud processing. Having gone through this learning process during my Ph.D., I hope to share some of the knowledge and practical experience I gained along the way.
The notebooks are designed to make pointcloud processing algorithms easier to understand while remaining reasonably efficient and relying as little as possible on specialized third-party software. Basic knowledge of Python and its main scientific libraries is assumed.
Tutorials are broken down as follows:
- Basics: structure and attributes.
- Spatial transformations: translations, rotations, reflections & scaling.
- Spatial indexing: voxel grids, octrees & kd-trees.
- Subsampling: random, stride, voxel, octree, FPS, radius & Poisson.
- Cleaning: outlier removal & denoising.
- Normals and curvatures: normals & curvatures.
- Descriptors: eigenvalue-based, PFH/FPFH & SHOT.
- Segmentation: region growing, Hough Transform, RANSAC & graph-based.
- Primitive fitting: plane, sphere, cylinder, cone & torus.
- Registration: corresponding sets, Iterative Closest Point & global alignment.
- Machine learning: outlier removal, object & semantic segmentation.
- Deep learning: MVCNN, VoxNet & PointNet architectures.
These tutorials were developed using Python 3.11. All notebooks require NumPy, SciPy, Matplotlib, and JupyterLab. The machine learning notebook additionally requires scikit-learn, while the deep learning one requires PyTorch and PyTorch Geometric.
Most dependencies can be installed using either pip or conda. However, PyTorch and PyTorch Geometric are most easily installed with pip (optionally within a conda environment).
For a standard installation, run:
pip install numpy scipy matplotlib jupyterlab scikit-learn torch torch_geometric
Then start JupyterLab from a terminal (or Anaconda Prompt) using:
jupyter lab
The lists of software and resources below are not exhaustive, but may be a good starting point for those who whish to dive deeper in the topic of pointcloud processing with Python.
Libraries (in alphabetical order):
- CGAL, an open-source library for efficient and reliable geometric algorithms (in C++, with Python bidings)
- CloudComPy, a Python wrapper for CloudCompare (see below)
- Open3D, an open-source library for 3D data processing (in C++ and Python, with a 3D viewer app)
- PCL, a standalone, large scale, open project for 2D/3D image and pointcloud processing (in C++, with Python bidings)
- PDAL, an open-source library for translating and manipulating pointcloud data (in C++, with Python support)
- PyMeshLab, a Python library that interfaces to MeshLab (see below)
- PyntCloud, a Python library for working with 3D point clouds leveraging the power of the Python scientific stack
- PyVista, a library providing a pythonic interface to VTK (see below)
- VTK, an open-source software for manipulating and displaying scientific data (in C++, with wrappers in Python, Java and Tcl)
Applications (in alphabetical order):
- Blender, an open-source 3D computer graphics software that may be used to visualize and process pointclouds (with Python scripting capabilities)
- CloudCompare, an open-source 3D pointcloud (and triangular mesh) processing software (with Python scripting capabilities through CloudComPy)
- MeshLab, an open-source 3D triangular meshes (and pointclouds) processing and editing software (with Python scripting capabilities through PyMeshLab)
- ParaView, an open-source visualization application (with Python scripting capabilities)
Books (in reverse chronological order):
- Poux, F. (2025). 3D Data Science with Python. O'Reilly Media.
- Liu, S., Zhang, M., Kadam, P., & Kuo, C. C. J. (2021). 3D Point Cloud Analysis: Traditional, Deep Learning, and Explainable Machine Learning Methods. Springer.
- Vosselman, G., & Maas, H. G. (2010). Airborne and terrestrial laser scanning. Whittles Publishing.
- Samet, H. (2006). Foundations of multidimensional and metric data structures. Morgan Kaufmann.
- Schneider, P., & Eberly, D. H. (2002). Geometric tools for computer graphics. Elsevier.
- Goulette, F. (1999). Modélisation 3D automatique : outils de géométrie différentielle. Presses des Mines.
Videos (in alphabetical order):
- CVPR 2024 Tutorial: All You Need To Know About Point Cloud Understanding. https://cvpr.thecvf.com/virtual/2024/tutorial/23725 (last accessed in August 2026)
- CVPR 2025 Tutorial: The 2nd Point Cloud Tutorial: All You Need To Know About 3D Point Cloud. https://cvpr.thecvf.com/virtual/2025/tutorial/35903 (last accessed in August 2026)
- CloudCompare playlist on Daniel Girardeau-Montaut YouTube channel https://www.youtube.com/@danielgirardeau-montaut9044 (last accessed in August 2026)
- Florent Poux YouTube channel: https://www.youtube.com/@FlorentPoux (last accessed in August 2026)
You are free to share and adapt the content of these notebooks as long as you give appropriate credit and do not use it for commercial purposes. You are free to use, modify, and distribute the code contained in these notebooks as you wish. You can view the full license here.
An example of citation using BibTeX:
@unpublished{gregorio2026tutorials,
author={Grégorio, Jean-Loup},
title={Tutorials for pointcloud processing in Python},
year={2026},
}