biVector forum

Surface to 3D partial volume


Thanks for the very nice resources that can be found here, I am just starting to read, but I can’t wait to see if there is not already a solution.

Just to give a little bit of Context, I am working on synthesis of brain MRI data. The brain can be describe as surfaces and the MRI acquisition is a volumetric measure: a 3D voxel grid. Voxel is used as extension of image pixel, but it has a physical dimension (mm^3) : it is a small cube volume that gives the 3D volume grid resolution.

In order to simulate a MRI acquisition from a given brain (defined as several surfaces) I need to compute a partial volume map from a close surface mesh. The partial volume map is just a 3D volume (defined on a 3D voxel grid) where each voxel value are 1 inside the mesh, 0 outside, and pv in [0 1] if the mesh is intersecting the voxel.

How to compute pv: the partial volume of a single voxel ?

I think it is closely related to this discusion but instead of the intersect with a plane I need the intersect with a cube (or all cubes of the 3D grid)

may be it is not too much work for @enki to add a new ganja.js example …

I am using the code describe is this article Toblerone: Surface-Based Partial Volume Estimation | IEEE Journals & Magazine | IEEE Xplore
but it is only an approximation, and it takes quite a lot of computing time, (finding inside an outside of a surface with classical representation leads to complicated algorithm). So I suspect PGA would give an exact an effective solution, I would be very interested to compare it.

Many thanks

I would just like to mention that PGA is just a different tool, it does not magically lead to “exact and effective solutions”.
I was going to suggest volumetric sampling but I now see that my solution is very specifically outlined as not sufficient :sweat_smile:

ok, May be as a beginner, I may overestimate the power of PGA. Especially if I consider the main problem I would like to work on : How to re-construct the brain gray matter surface from a MRI acquisition. I get very exited by the PGA approach, as it looks as being the proper tool to use (and not just an other tool …) I may be wrong since I did not find any work mixing the PGA framework to do surface reconstruction but it worth a try. (especially if I can find collaborations through this forum)

To come back to the particular technical question of this thread, the “PGA magic” I need seem to be obvious: it has oriented surface, (so an easy test to separate inside from outside) and it also has the volume formula, that should make the computation easy. Indeed, the end result is just to compute the inner and the outer volume of the surface intersection with a cube.

What is not clear to me, is how to choose the surface and the voxel cube representation in PGA. For the surface, I also would be very interested by @enki work “Clean up your meash !” as mention here #393 (is there a first version available ? or any other related works ?)
May be a naive question, can the voxel cube be an element of the algebra (as points, lines and planes ) ?

Sorry to come back with this technical question but It is still unclear to me if GA would help or not.

May be can I reformulate the problem.
Given a close surface mesh (with triangle parametrization) and given a cube, can I compute the surface inside volume within this cube ? The answer is yes, but I am concern to find an efficient way to compute it.
So more importantly I would like to know if I can solve it without taking all vertices (or all triangle) of the surface ? (is local information enough ?)

In other words, let say I have a way to select all vertices (and triangle) that are within this cube or intersect a face of the cube, can I compute this mesh inside volume only from those vertices (or triangle) ?

If I can construct a new closed mesh containing which represent the intersection of the surface with a given cube, then the usual volume formula will do the job.

So it seems to be that I only need to find the intersection, and construct a mesh from it ? any help to do it with PGA would be appreciate


This paper perhaps is useful.

Consistently Oriented Dart-based 3D Modelling by Means of Geometric Algebra and Combinatorial Maps

It shows how to represent polyhedral bodies as a certain set of PGA numbers. Once the combinatorial structure is found you can compute the length, area or volume of any polyhedral cell of the body (even with holes,…surface of volume holes)