Technical issues volumes and segments

Hi everybody,

I am a new Slicer user with no competence in Python scripting. I am carrying out a project that aims to measure bone densities (in terms of Hounsfield) from concentric cylindrical sections. To this aim, a series of concentric hollow tubes was built in FreeCad and imported in Slicer. The tubes were created calculating inner and outer radius so that the tube volume was constant irrespective of the distance from the center. Therefore, the thickness of the more external tube is progressively lower than the inner tube. For each distance, 10 replicate tubes are available.

Cylinder

After importing the bone volume in Slicer, the respective segment was obtained. Each tube (.stl) was imported in Slicer as Segmentation. The tubes have specific coordinates that guarantee an a priori defined overlapping with the bone segment. To obtain the actual bone region overlapping with the tube, the bone segment and the tube have been intersected and the statistics was calculated.

Since the results from Slicer were somehow unexpected, some technical trials were performed. Firstly, it was checked if the volume of the tube exported from FreeCad was preserved in Slicer. To this purpose, the tubes were imported in Slicer as Segments. To calculate their volume, the option “Specify Geometry” from the “Segment Editor” Module was selected and the respective volume was created. Subsequently, the statistics was calculated. Here is the output obtained from Slicer for the tubes of a specific distance. Also, the volume is compared to the expected value from FreeCad (also confirmed through hand calculation).

Tabella 1

A first question is: why does Slicer calculate tube volumes differently than another software and in a different way according to the site? What am I doing wrong?

After these results, a further technical check was made. In FreeCad, two cubes and two cylinders with a specified volume were created. One cube had the exact half of the volume of the first cube and the same was true for tubes. These shapes (.stl) were imported in Slicer as Segment. The volume was obtained with function “Specify Geometry” as described before.

At first, the volume was calculated for each geometric shape separately.

Tabella 2

While the cube/2 is the exact half of the cube as expected, the volume of the tube/2 is not the half of the tube: 23.4487/2=11.72435. The discrepancy from the expected value is about 0.11%.
Volume was then calculated after intersecting the cube in cube/2 and the tube in tube/2. Therefore, the expected volumes were the cube/2 and the tube/2. Here are the results.

Tabella 3

Volumes appear definitely not the expected ones.

From these results the following questions:

Why is the volume of the tube/2 not completely the half of the tube as expected? Why does the tube behave differently from the cube? Is there a bias in the results from Slicer depending on the shapes considered?

Why do I obtain such different results after intersecting the segments? Could this operation affect my results also during the experimental phase?

One last unclear point arose when working on the volumes and segment that I should analyze for my experiment.
Here is an example output collected after intersecting the tube with the bone volume of interest.

The red segment is the tube and the green segment is the bone intersected with the tube. The statistics is as follows.

Statistics1

In this case, the two rows are identical, indicating that the intersected segments are exactly the same. However, this holds not true for all the sites measured considering a specific tube. For example, at the measurement site 7, the intersection shows segments that do not perfectly overlap and thus show different statistics.

Segment and statistics

The question now is:

  • Why do the two segments not intersect perfectly in this occasion? The procedure was the same followed for other sites, but the result was different.
  • Is it expected that the intersection process retrieves two identical segments?
  • Also, it is not clear to me what the statistics value refer to, why do I observe multiple columns with volume values that differ one from the other?

I thank you in advance for any suggestion that you may want to share.

Best

Ennio

Sorry for not taking the time to digest your full set of questions, but on the first point about cubes and tubes having different volumes, I believe you can explain this as the difference because your cad program probably works on curved surfaces but then you exported triangulated surface (stl) that are just a piecewise linear approximation of a tube, but an exact description of the cube.

Similarly for your second set of questions you may be seeing issues related to discretization when going from surface models to volumes.

1 Like

Dear Dr. Pieper,

thank you for your kind and brisk reply. I see your point and this would justify the discrepancy of 0.11% when measuring the tube/2 volume.

Do you have by chance the possibility to help me with the last point about the weird intersection of the two segments?

Thank you very much
Best
Ennio

Hi Ennio - I see you gave a lot of description and maybe there’s enough there to figure out what’s going on but I don’t really have time to dig in right now. Perhaps someone else will be able to look through it and offer suggestions. Best of luck.

Have you tried exporting your bone models out of Slicer and performing your intersections and calculations with another software using the tubes you made to see how the results compare?

1 Like

Thank you for suggestion. I thought about this other approach, but I did not put it into practice yet. Do you have any piece of software to recommend?

You can try Meshlab. It’s free and has lots of tools for mesh comparisons.

1 Like