Point cloud segmentation
Point cloud segmentation software: surfaces, primitives, objects and rooms
Neurones 3D is point cloud segmentation software that splits a scan into coherent surfaces with no training data and no parameters to tune, reduces them to a few hundred reviewable primitives (43.5 million points into 1,501 regions in 5.8 s), and groups them into objects and rooms. It runs on the CPU, offline, and running it is free.
By Dr. Florent Poux, 3D Geodata Academy · Updated

At a glance
Short statements, each one checkable. Where there is a number, it was measured, and the guides say on what.
- Unsupervised segmentation is self-adaptive, parameter-free region growing: no training data, and a
segmentcolumn for every point. - A Fine preset keeps sharp borders, such as between a wall and a door frame; Full detail (tiled) segments every point of a very wide cloud.
- Primitive decomposition turns 43.5 million points into 1,501 reviewable regions in 5.8 s, against 9,626 regions from region growing alone.
- Each region carries a geometric kind: H-plane, V-plane, Slanted, Cylinder, Linear, Cluster or Residue.
- The Label Components grid reviews the regions with a brush per class, box and lasso in the view, a bulk selector by size and place, and classes that can be locked.
- The scene graph finds rooms as volumes of free space: 31 rooms and 48 openings in 0.35 s on the 43.5 million point S3DIS Area 4 scan.
- On a powerline corridor, Instances separates every tree, conductor span and pole into its own object.
- Segmenting is free; exporting the
segment,componentand instance columns needs a paid edition. In a LAS file they ride as exact 32-bit extra bytes.
From points to surfaces, parts, objects and rooms
Five questions a segmentation can answer
“Segmentation” covers several different jobs. N3D does each one as its own step, and each writes its own column.
| Question | Method in N3D | Column |
|---|---|---|
| Which points form one surface? | Unsupervised segmentation | segment |
| What shape is each part? | Decompose into primitives | component, primitive_kind |
| What is each part? | The classifiers | class, confidence |
| Which object is it? | Instances (Powerlines), scene graph objects | instance |
| Which room is it in? | Scene graph and spaces | rooms with areas and volumes |
Semantic labels, the third row, are covered on the point cloud classification page. This page is about the rest.
Segmentation with nothing to tune
Process › Unsupervised Segmentation grows regions over the surface and adapts to the data,
so there is no training set and no threshold to guess. The result is a segment column for
every point and a Segments view with one colour per segment. The Fine preset tightens borders
where adjacent surfaces meet, and Full detail (tiled) keeps a very wide cloud at full
resolution rather than segmenting a decimated subset. The segment size histogram under
Knowledge opens a sortable table, and a degenerate result, one segment holding most of the
cloud, is flagged rather than passed on. Segments also feed Mesh Segments, one flat polygon
per planar segment.
From 9,626 regions to 1,501
Region growing alone breaks a 43.5 million point building into 9,626 regions: too many for a
person to review. Process › Decompose into Primitives reduces the same building to 1,501 in
5.8 s: planes sorted by size and orientation, cylinders, linear runs and clusters, each point
carrying its component and its primitive_kind. That is the unit the labelling grid works on,
and the one the floor plan reads its walls and floors from. The kinds are geometric on purpose:
calling a V-plane a wall is the classifier’s job, or yours. In the Label Components grid a
person can paint components by class, sweep them with a box or lasso, select many at once by
height, size and footprint, lock a class so no brush can change it, and keep the model’s labels
as a baseline beside the human ones.
Objects, instances and rooms
The scene graph turns components into objects linked by typed relations (touches, supports, covers, coplanar, parallel, near) and finds each room by flooding the free space between floor and ceiling, so a table does not wall off the room it stands in. On the S3DIS Area 4 scan it finds 31 rooms and 48 openings in 0.35 s, with floor area, volume and height for each. On utility corridors, the Powerlines model’s Instances step makes every tree, span and pole a separate object. Rooms feed the automatic floor plan.
Limits
Segments are geometric, not semantic. When a cloud is too large to segment in memory, N3D offers to analyse it at reduced density and says so in a persistent note; labels made that way cannot be re-bound to the full file. Instances is offered for the Powerlines model only, and not after a tiled pass. A room is traced from free floor, so where the scanner saw nothing the room stops, and a long, thin space riddled with furniture holes is called Open plan rather than a room.


Questions
Is there free point cloud segmentation software?
Yes. In Neurones 3D, unsupervised segmentation, primitive decomposition, the labelling grid and the scene graph all run in the free build, offline, on Windows. Writing the segment and component columns into an exported file is part of the paid edition.
What is point cloud segmentation?
Splitting a point cloud into groups of points that belong together: one surface, one object, one room. It says where the parts are. Classification then says what each part is.
What is the difference between segmentation and classification?
A segment says this is one surface, not this is a wall. N3D’s segmentation is geometric and needs no training; its classifiers then label the segments with classes such as wall, floor or vegetation, and give every point a confidence.
Do I have to tune parameters or train a model to segment?
No. The segmentation is self-adaptive and parameter-free. The only choices are the Fine preset for sharp borders and Full detail (tiled) for very wide clouds. If one segment holds most of the cloud, N3D warns that the result is degenerate and suggests Fine or a smaller crop.
Can it do instance segmentation?
Partly. The Powerlines model has an Instances step that makes every tree, conductor span and pole its own object. For other scenes, the scene graph turns primitives, segments or classes into objects with typed relations, and finds the rooms that contain them.
How are segment ids exported?
In a LAS export, segment, instance and component ids are written as 32-bit unsigned extra bytes, so no id is ever truncated, and PDAL, laspy and CloudCompare read them back. primitive_kind is written as a code, 1 floor plane to 7 residue. PLY and CSV carry them too.
Does segmentation need a GPU?
No. Segmentation, decomposition and the classifiers run on the CPU, on your machine. The GPU only draws the scene.
The guides behind it
Each guide gives the menu path, the steps, the command-line equivalent and the limits.
segment column for every point.
Understand the scene
Decompose into primitives
Turn a scene of millions of points into a few hundred pieces a person can actually review (planes by size, cylinders, linear runs and clusters), each point carrying its component and its primitive_kind.
Understand the scene
Label components
A supervised review grid over the components in hand (primitives, segments or classes), with a brush per class, box and lasso in the view, a bulk selector by height, size and footprint, and a baseline so the model and the human can be compared.
Build deliverables
Scene graph and spaces
See the structure of a scene - every object as a node, spatial relations as typed edges, and the rooms they sit in, found as volumes of air rather than boxes - with areas, volumes, heights and doors per room.
Understand the scene
Classify a point cloud (four models)
Label every point with one of four trained models (Indoor, Outdoor aerial LiDAR, Powerlines, Streetscape), read how sure the model was from a per-point confidence column, and split a powerline corridor into individual trees, spans and poles.
Deliver
Export a point cloud (LAS, PLY, CSV, USD, web)
One dialog for every point cloud export - format, subsample, colours, label columns and scalar fields - with a LAS writer that puts the class in the classification byte and every id in an exact 32-bit extra byte.