isl-org / Open3D

Open3D: A Modern Library for 3D Data Processing
http://www.open3d.org
Other
11.43k stars 2.31k forks source link

What exactly is the vertex density of a poisson reconstructed surface? #5723

Open cmosig opened 1 year ago

cmosig commented 1 year ago

Checklist

My Question

The tutorial on poisson surface reconstruction states the following about the returned vertex densities:

"The create_from_point_cloud_poisson function has a second densities return value that indicates for each vertex the density. A low density value means that the vertex is only supported by a low number of points from the input point cloud."

This gives a good intuition for the density values, but does not answer all my questions:

(1) How is density precisely defined / how is it computed? (2) Is the density value deterministic? (3) Is the density value comparable between multiple similarly dense pointclouds? E.g. if I have one pointcloud and split it in half, do I get the same density values for each triangle vertex as when I run the function for the whole pointcloud? (4) Does it represent some exact number like 4 points from the input pointcloud formed this vertex?

The original code mentions the --density flag: "Enabling this flag tells the reconstructor to output the estimated depth values of the iso-surface vertices." Is that the density value that the open3d function returns?

The function docs unfortunately don't mention anything about the density value.

wtyuan96 commented 9 months ago

Same question. Looking forward to reply.

cmosig commented 9 months ago

Copying from my notes from back then:

PoissonRecon supports returning a so-called density per surface. The density is the [octree] depth to which the respective vertex would be assigned given the point density of the input pointcloud at that location. A small density implies that the surface was constructed with few or no points, whereas a large density implies more evidence.

If I recall correctly, what this depth means is dependent on the spatial dimensions of the input pointcloud.