← all work 3d-computer-vision

Point cloud decimation

Three ways to throw away points — **voxel grid**, **farthest-point sampling** and

Result

cloud42000 points on a torus (R = 1, a = 0.35), of which 2222 lie in an over-sampled patch
planted ground truththe patch's area is `a·2wu·(R·2wv + a(sin(v0+wv) − sin(v0−wv)))` = 0.08482102920624893, a 0.61% share of the surface; the input holds 5.2904761904761906% of its points there, a bias of **8.618248400757404**
measuredChamfer back to the original, covering radius, distance off the true surface, density bias, wall clock
retained300 to 20000 points, matched across methods by bisecting the voxel size

The finding

The metric usually quoted is the one that cannot tell these apart

Chamfer distance back to the original cloud is what decimation is normally scored on. Across every matched count, the spread between the best and worst method on that metric is between 1.24× and 1.87×. On covering radius — the largest distance from any original point to its nearest kept point — the same four methods differ by up to 3.28×, and on density bias by nearly 10×.

Chamfer is a mean over every point, so a handful of badly served regions barely move it. The covering radius is the worst case, and the worst case is what decides whether a later surface fit, normal estimate or collision test has anything local to work with.

Figures

cost.png
cost
metrics.png
metrics
scatter.png
scatter

Elsewhere

Code and full results on GitHub

Every number is read from the file the run produced. github.com/hammasbuilds · kaggle.com/muhammadhammas13