Straighten the vessel segments in a network

Hi All,

I have got a network of blood vessels and I’m looking for ways to straighten each segment/branch in the network. I found some discussions on straightening single segments, I’m not sure if it is possible to straighten segments in a network.

Any suggestions on how to do this in Slicer, if possible, will be really helpful.

This is a kind reminder

Hi All,

I would like to know if this is possible in Slicer.

Yes, there are many ways to do this in Slicer. Since of course it is impossible to straighten an entire network (straightening one vessel segment determines how you need to warp the entire 3D space, so if you have multiple vessel segments then you would have contradicting space warping requirements), you need to tell us how you want your straightened network segments to be represented.

For example, @pieper worked recently on placenta vascular network flattening (http://people.csail.mit.edu/abulnaga/publication/abulnaga-2019-placenta/abulnaga-2019-placenta.pdf), if that’s what you are after. Or, you can straighten each vessel segment and concatenate them into an artificial tree. Or, you can design a template and register to that template using landmark points (e.g., specific vessel branching points).

1 Like

Hi @lassoan

Thanks a lot for the details.
I’d like to do the following

The image on the left has the curves that we generate after using the extract centerline module.
For instance, the Network properties table returns the lengths of the centerline path in each branch
of the blood vessel. I would like to convert these curves paths to straight lines shown in the right image. i.e the length of each line segment shown in the right will be equal to the centerline length/branch length computed from the left.

I had a look at the reference shared above. From what I understand the optimization algorithm flattens the entire 3D volume. But I am interested in straightening only the line segments ( i.e centerline curves displayed).

Could you please explain a bit more on how to do this? I think I must proceed in this direction.

@lassoan This is a kind reminder.

What you show in the screenshot is not the same that you describe (in the screenshot, vessel branching points are simply connected with a straight line; length of vessel segments are not preserved). If you want to preserve vessel segment lengths then it makes the problem much harder! You might find solutions in scientific papers or in software libraries but there is a good chance that you need to implement it yourself. But probably it makes more sense to apply more commonly used analysis methods.

@lassoan

Yes, I agree with your point. I was trying to find a way to preserve the lengths.

By this are you referring to the centerline extraction results? Could you please clarify?

I’ve been trying to use optimization. It’s not working unfortunately for large networks

I mean that you can research the scientific literature for papers that work on similar problems and try to use similar methods that they do.