Nodes/RDAWG 3D Pack (CUDA 12.8 + PyTorch 2.9.0)/๐Ÿ”ท Remove Outliers (RDAWG)
ComfyUI Node

๐Ÿ”ท Remove Outliers (RDAWG)

Strip the junk points before they wreck your reconstruction

By rdawgemflยทCreated 11 months agoยทUpdated 11 months agoยท 0
๐Ÿ”ท Remove Outliers (RDAWG)
  • point_cloud
  • cleaned_pcd
  • info
โ—„methodstatisticalโ–บ
โ—„nb_neighbors20โ–บ
โ—„std_ratio2.0โ–บ
โ—„radius0.050โ–บ
โ—„min_points10โ–บ

Real-world point clouds are full of garbage. Scanner noise, stray reflections, a few points floating in the void between the object and the wall - none of it is part of your object, and all of it will sabotage a reconstruction. RDAWG3DRemoveOutliers is the clean-up node: it finds points that don't belong and drops them, so the shape you're left with is the shape you actually wanted.

It's the middle step in the pack's point-cloud pipeline - Load โ†’ Downsample โ†’ Remove Outliers โ†’ Reconstruct - and it's the difference between a Poisson surface that hugs your object and one that grows phantom blobs toward every stray point. If you're reconstructing from a noisy scan, don't skip it.

How it works

Two classic statistical methods, both from Open3D:

  • statistical (default) - for each point, looks at its nb_neighbors nearest neighbors and computes the average distance. Points whose average distance deviates more than std_ratio standard deviations from the global mean get dropped. Works great on uniform-density clouds.
  • radius - counts how many neighbors fall within radius; points with fewer than min_points neighbors get removed. Better for clouds with varying density, where a global threshold misbehaves.

Normals are re-estimated on the cleaned cloud if the source had them. The info output reports original count, cleaned count, removed count, and removal percentage - wire it to a text node if you want to see how aggressive you're being.

The inputs that matter

  • method - statistical by default; radius for uneven density.
  • nb_neighbors - statistical; how many neighbors to check (default 20).
  • std_ratio - statistical; higher = more tolerant, keeps more points (default 2.0).
  • radius - radius method; neighborhood size (default 0.05).
  • min_points - radius method; minimum neighbors to survive (default 10).

Outputs: cleaned_pcd (POINT_CLOUD) and info (STRING).

Install

Part of the RDAWG 3D Pack. ComfyUI Manager (search "RDAWG 3D Pack (CUDA 12.8 + PyTorch 2.9.0)") or:

cd ComfyUI/custom_nodes
git clone https://github.com/rdawgemfl/rdawg_3D_pack
cd rdawg_3D_pack
python install.py

Open3D 0.19.0+ required at import - no Open3D, no pack (pip install open3d>=0.19.0, or python download_open3d.py for a Windows wheel). Python 3.11 recommended. And don't blindly accept the installer's torch 2.9.0+cu128 pin over an existing working install.

Where people get burned

  • Aggressive statistical removal eats real detail - std_ratio too low (or nb_neighbors too small) can classify thin real structures as outliers. Start at defaults and loosen if you're losing geometry.
  • Radius method with the wrong radius - radius set in the wrong units leaves everything or removes everything. Check your cloud's scale, same as voxel size.
  • Skipping it entirely - feeding a noisy cloud straight into Point Cloud to Mesh gives you a spiky, holey surface. The cleanup is cheap; the reconstruction isn't.
CategoryRDAWG 3D/Point Cloud

Inputs (6)

NameTypeDefaultDescription
point_cloudPOINT_CLOUDโ€”
methodCOMBOstatistical2 options: statistical, radius
nb_neighborsINT205โ€“100โ€”
std_ratioFLOAT2.00.1โ€“5โ€”
radiusFLOAT0.0500.001โ€“1โ€”
min_pointsINT102โ€“100โ€”

Outputs (2)

NameTypeDescription
cleaned_pcdPOINT_CLOUDโ€”
infoSTRINGโ€”