| --- |
| title: Point Cloud Sampling Strategies |
| emoji: 🟦 |
| colorFrom: blue |
| colorTo: gray |
| sdk: static |
| app_file: index.html |
| pinned: false |
| --- |
| |
| # Sampling more points on the surface |
|
|
| Four ways to turn `bigpointcloud_001.ply` (11,357 points, a scan of a motherboard) into a |
| fixed-budget point cloud, each scored against the object's **true surface** |
| (`motherboard.stl`, 477,957 triangles) rather than against the input cloud: |
|
|
| | strategy | what it does | |
| | --- | --- | |
| | `random` | random subsample of the input cloud | |
| | `voxel` | voxel downsample of the input cloud, voxel size bisected to hit the budget exactly | |
| | `surface` | 200,000 Poisson-disk points drawn on the mesh surface, then voxel-downsampled to the budget | |
| | `surface_pd` | Poisson-disk sampled straight onto the mesh at the budget | |
|
|
| The page has a side-by-side WebGL viewer with locked cameras, metric tables at 2,048 / |
| 4,096 / 8,192 points, and static renders. |
|
|
| **Headline:** at a fixed budget, sampling the mesh does *not* beat plain voxel downsampling |
| on coverage — the two are within noise of each other. What it buys is (a) no density |
| ceiling, so the dense 200k resample reaches 4.3× better surface coverage than the input |
| cloud can, and (b) exact accuracy and blue-noise spacing, since Poisson-disk points lie on |
| the surface by construction instead of being voxel centroids that float off it. |
|
|
| Generated by `compare_sampling.py` and `voxel_downsample.py` (Open3D 0.18). |
|
|