Page 1 of 1

Algorithm for calculating the volume of the part of point cloud

Posted: Sun Mar 13, 2016 1:40 pm
by Kaltair
Hello ;)
I am taking part in the project studies associated with clouds of points.

We have to create a web application. Whose task will be displaying point cloud from .ply file. And then select an area and calculate its volume. The algorithm of counting the volume is to be implemented in C ++. The only things we have is a file in .ply format and file with the XYZ-coordinates of all points.

I have two questions for you.
-First, could you give me a clue, link or anything that would help me to find such an algorithm and the reasons why he is the best.
-Second, do any of you have idea what would be the best way to select some area from the rendered point cloud?

I was looking for this information . But I can not find anything that would be useful enough to use it in our project. Any tip or a document on the subject would be very useful ;)

Re: Algorithm for calculating the volume of the part of point cloud

Posted: Sat May 14, 2016 7:50 pm
by thematrix
Hi,
this forum is really usefull.
i would like to know if you have got the answers of your questions.
Because, i would like to do the same think as you : calculating the volume of the part of point cloud, even if this calculation is juste approximative. I would like to have some clue for this task.

Can somebody help please ?

Best regard.

Re: Algorithm for calculating the volume of the part of point cloud

Posted: Tue May 17, 2016 6:57 am
by daniel
To select an area you can simply draw a (2D) polygon over the clouds and select the points that fall inside (the user or the software has to choose a preferred orientation first). This algorithm is rather simple and you can find it in multiple places (or here: https://github.com/cloudcompare/trunk/b ... l.cpp#L612 as it is implemented in CC).

And then computing the volume is a little bit harder. Either you simplify the problem by projecting the cloud in '2.5D' (i.e. on a grid) as we do in the '2.5D volume ' computation tool. You can then approximate the volume in each grid cell rather easily.

Otherwise you can compute a closed triangular mesh of the area. Depending on what you clouds look like it can be more or less easy ;). But once you have a closed mesh you can compute the volume very easily (see https://github.com/cloudcompare/trunk/b ... ls.cpp#L66).

And you can also look at 'tetrahedral mesh' computation algorithms (e.g. 'Delaunay tetrahedralization'). There are a lot of implementations and you'll also get the volume very easily.