Radius Extraction from centerline

Hi to everyone. I’m working with centerlines, which I made with a external python code. From this code I return the centerlines as Markups nodes, and now I would like to extract radius info. For this purpose I use the Cross Section Analysis. This module works well more of the times but fails in bifurcations, where minimum sphere and cross section methods can’t find the proper area…

I noticed that centerlines made with Extract Centerlines module can give radius data when you use the centerline model (see code). I know that Extract Centerlines workflow is based on Voronoi Diagrams, but the radius extraction is better than Cross Section Analysis?

>>> c = getNode('Centerline model')
>>> points = slicer.util.arrayFromModelPoints(c)
>>> radii = slicer.util.arrayFromModelPointData(c, 'Radius')

In that case, could I use my centerlines with the same code?

If there is no solution for this, you have any idea to perform radius extraction in bifurcations ?

Thanks a lot!

Can you draw by hand or with a mouse a bifurcation to illustrate what you mean by ‘proper area’, from which point or circumference to which point or circumference you idealize measurements in a bifurcation?

The minimum sphere radius is more accurate in a bifurcation than the circular-equivalent diameter since the latter is derived from a surface area. This area will include all branches in a bifurcation. You could cut the segment so as to isolate single tubes of interest and regenerate everything.

Hi Chir.set, thanks for your help. The goals is :
Captura de pantalla 2024-01-31 153037

Where clearly both structures are well defined.

At this moment, I’m using the CSA process and then correct the radius for nodes in bifurcation zones using MIS by myself.¡, but this work well. MIS strategy used is:

Create a sphere with radius closer to zero and start increasing the radius until the sphere contains at least 30-40 edges of the segmentation…

Did you see any inconvenience on this procedure?

Is there any other way to attack this problem?

I can’t really have an authoritative opinion on the matter.

According to the above image: you might process your bifurcated centerline model with the ‘Centerline disassembly’ module in SlicerVMTK. You can thus get a complete centerline model from the first endpoint to each other endpoint, when selecting the ‘Centerlines’ component in the UI.

Each new centerline model will have a ‘Radius array’, which is the MIS radius. This may help you generate the tubes you are pointing to, probably using vtkTubeFilter.

Okay, but MIS would fail when the segment surface is non-smooth or has any stenosis…

Anyway, thanks for your help!