Vascular supply of a solid organ

Is there anyway I can estimate the area supplied by a specific branch? I would like to see a preview of an ischemic area if one branch is ligated or embolized, and estimate the drainage area of some vein…

Thanks a lot!

I’m not sure I was clear in my request, but I would like to do something like this

doi: 10.21037/atm-20-7920

doi: 10.1016/j.cmpb.2017.12.008

1 Like

Hi Celina,
I know that @RafaelPalomar is working on a very similar project - Slicer-Liver.
Maybe he can comment.
Kind regards

I haven’t looked at the paper but most likely you can reproduce the same workflow in Slicer.

If I had to implement vessel-based segmentation of the liver in Slicer, I would do the following:

  • segment the whole liver and the arteries in Segment Editor module
  • partition the vessel tree (into separate segments): for example, you can make a few scribbles in the vessel tree and use Grow from seeds (choose the vessel segment as editable region)
  • partition the liver segment: use the vessel segments as seeds to segment the liver (using a full liver segment as editable region, hide the liver segment so that it is not used for region growing, and set a high seed locality value to do the region growing mostly based on distance from vessels and not so much based on image intensity)

It is a complex workflow if you don’t know all the tools yet, but if you complete a couple of segmentations then it becomes much easier. It can be also fully automated, using MONAILabel for liver and vessel segmentation, VMTK for centerline analysis, and some Python scripting to go through all the steps.

However, as @rbumm suggested, before diving into reimplementing these steps from scratch I would recommend to check out extensions that are already developed for liver segmentation and surgical planning, such as:


@lassoan like your idea and, as we need to do the same for lung segments, I tried the grow from seeds technique from AI-generated vessels but the borders of the segmentation were very fuzzy and did not appear line-cut.

So in this upper lung lobe with three segments @Eserval and I current would:

  • create S1, S2 and S3 segments
  • use arithmetic copy of right upper lobe on each segment
  • use a vessel-orientated scissor cut to isolate S1
  • subtract S1 from S2 and S3
  • do a vessel-orientated scissor cut to isolate S2
  • finally, subtract S2 from S3.

But this is a bit like cheating and a grow from seeds or watershed method would be better.
As we need to perform this in 20+ cases and all lung lobes for training a model any ideas on how to do this effectively and anatomically correct are very welcome.

1 Like

@rbumm what about doing a distance transform from each branch of the vessels and then create a segmentation where each voxel is labeled by the vessel it is closest to (min of the distance transforms). Basically a Voronoi method.

1 Like

@pieper @Celina_Hallal I do not know how is the definition of edge segment in liver but for the lungs, it is a key point. For lungs, we have the artery in the center of the segment running together with the bronchus, but the border of segment is defined by an intersegmental vein.
Look at the example of that lower lobe surgery planning with a nodule in the S8 segment (Veins in red and artery in blue since is lung circulation):

So… for the lung I think we have two major challenges: make the segment grow from the main artery and stop in the intersegmental vein. Thinking about the final user, most of the time is hard to define the intersegmental vein before having the 3D segmentation of the vessels and airway. So, maybe the automatic workflow should have steps where the first should be the vessels and airway segmentation and next the user would mark the intersegmental vein and artery… I don’t know it’s an idea. @rbumm
@Celina_Hallal I don’t know if in the liver you have the same issues.

I also work with the Synapse Vincent by Fuji… The AI is awesome in dividing the intersegmental plane between lung segments. It works through center lines. After the lobes, airway, and vessel’s automatic extraction, the user selects the centerline of the segmental artery, and the software automatically extracts the segment.

This is expected if the region growing is done based on image intensity. If you set set a high “Seed locality” value in Grow from seeds then region growing will be based on a distance transform (doing essentially the same that @pieper suggested, too), that takes into account the lung mask (while computing the distance map, the area outside the lung is excluded).

Joint smoothing can be applied to further smooth the boundary as much as needed. If that is still not sufficient then it is possible to fit a spline surface to the boundary, which can be used for smoothing (enforce a slightly curved cutting surfaces) and to allow convenient manual adjustment.

Lots of things! I will take some time to read it and try some workflows. Did I said I really like the Slicer community? :smiling_face_with_three_hearts:

1 Like

Me too :slight_smile:
Thanks all for the thoughtful comments, will try the grow from seeds with the different settings again as soon as possible. We should look into this Synapse workflow during our next meeting @Eserval. The segmentations you show above are top-notch.

Hello @Celina_Hallal. Have you tried the Slicer-Liver extension as @rbumm suggested? It should be available through the extension manager in the Slicer Preview release. You can find more information at GitHub - ALive-research/Slicer-Liver: 3D Slicer extension for liver analysis and therapy planning. Don’t hesitate to contact me if you have questions about Slicer-Liver