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.
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).
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.
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.
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.
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.
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