Diameter reduction using Centerline

Hi everyone! I do not know if this problem is possible to solve ussing Slicer 3D. But I would be glad if somebody knows about tools or python code that achieves this point.

My objective is to reduce the diameter of the semicircular canals of the inner ear obtained using a MRI. I determined the centerlines successfully as you can see in the .png. Now, I would like to reduce the diameter of these cilinders proportionally and respect to the centerline.

Thank you!

One easy approach would be to use the “Margin” tool in Segment Editor to shrink the exterior of the object by a given margin. If your surface currently exists as a model rather than a segmentation, you can first import it to a segmentation using the “Segmentations” module. I think this approach should do a reasonable job of preserving the centerlines, but to verify you could extract the centerlines of the reduced object and compare to the original centerlines.

Hi Mike! Thank you for your advice. I tried to calculate and it works correctly. The problem now is that the Margin tool reduces the diameter by a fixed amount and not proportional to the semicircular canal.

This means that in certain regions it disappears and in others it remains too large as I show in figure. Do you know if it is possible to reduce it proportionally? Perhaps by modifying the code of the Margin tool itself.

May I ask why do you want to achieve this nonlinear shrinkage? What is the clinical problem you are trying to solve?

Sure Mauro! My goal is not really a contraction. This type of medical imaging reveals only the bony labyrinth that functions as a cover for the membranous labyrinth that I intend to study. The latter has a smaller diameter (about 20%) and follows the geometry of the bony labyrinth, most of the time in contact with the outer side of the canal, as I show you in the following figure.

This reconstruction was obtained with a microtomography of a dead person that allows much greater precision. I am trying to get closer to living patients to provide personalized diagnosis and treatment. It is expected that in parts where the bony labyrinth has a smaller diameter, the membranous one will also reduce proportionally, so as a first approximation I look for this.

If you have any other ideas on how to get closer to reality, I appreciate it. Thanks!

1 Like

“Centerline” method can only extract a tree. Since you have rings in your topology you need to use the “network” method. It will give you a network of centerlines, and by applying a tube filter you can specify diameter for it. However, it won’t be very similar to the actual membranous labyrinth shape.

Instead of trying to reconstruct the labyrinth from centerlines, you will have much better results by warping an “atlas” to match image of a specific patient.

The “atlas” consists of an image of the bony labyrinth and the corresponding image or model of the membranous labyrinth. The atlas can be a single patient (you can use the cadaver image that you show above) or you can be constructed by averaging data from a number of similar patients.

You can warp the atlas to the patient fully automatically, by registering the bony labyrinth image of the patient to the bony labyrinth of the atlas (using SlicerElastix or SlicerANTs extension). The result is a warping transform. You can apply that warping transform to the membranous labyrinth model to get the patient-specific membranous labyrinth model (using Transforms module). It takes just a few clicks.