Presenting two modules that combine steps for *common* arterial segmentation

Here are two small modules that combine the different usual steps to segment small portions of arteries on CT angioscans, with an ultimate goal of extracting centerlines. They do not target ‘head to toe’ segmentations.

They are definitely useful to me as time saving tools, and I present them here under the assumption that they might be useful to others. However, if this post is perceived as dead noise, please apologize in advance.

Both of them remote control the ‘Segment editor’ modules and the ‘Extract centerline’ modules. Internally, API calls are made as much as possible, else, UI gestures are simulated. The latter part may be seen as a ‘macro style’ approach.

Fiducial centerline extraction

This module uses fiducial points as input, placed inside the arterial lumen. An ROI must be used to limit segmentation to a targeted small region. Each fiducial point will be an endpoint in the ‘Extract centerline’ module.

It is suitable for common regions dealt with in vascular surgery (aorto-iliac bifurcation, carotid bifurcation, visceral arteries with the aorta…), with ‘goodly sized’ arteries. The resulting segmentation is usually of good quality and centerline extraction succeeds readily. This module is not that much time consuming.

Curve centerline extraction

This one uses a markups open curve as input, to produce a single tube as output. Each control point must be placed in the lumen, else the resulting segmentation will be a malformed time consuming lump.

It targets otherwise difficult to segment vessels, with poor contrast or very small or surrounded by veins with excessive contrast. In practice, I’ve seen it so far quite efficient for diseased small vessels like distal visceral arteries, or subclavians that are surrounded by many bones. Segmenting left anterior descending and right coronary arteries have produced good results too. Even with the greater saphenous vein, when there is sufficient contrast in it in CT angioscans studying arteries.

Control point placement is determining. A few points can be placed in a ‘Volume rendering’ 3D view, or in slice views, followed by curve resampling. Next, each point must be checked to lie in the lumen. This is yet time consuming.

The first and last points will be endpoints to ‘Extract centerline’ module, and are not used for segmentation. It is therefore helpful that the second control point be reasonably close to the first point, and that the before last one be close to the last point.

The resulting segmentation mush be checked in slice views, so that is not excessive, overlapping on calcifications, or insufficient.

Centerline extraction may often fail however. In such cases, smoothing with ‘Fill holes’ at minimal kernel size helps to create centerlines (smoothing is faster using the 3D brush). After smoothing, work should be continued directly in ‘Extract centerline’ module obviously. It is recommended to save work done before extracting centerlines, because this may crash Slicer on poor quality segments.

Whether with the segmentation step or with extracting centerlines, post-procesing is often needed here.

This module might perhaps be more suitable for research work. Its targeted approach by point placement is probably its main interest.

In the hope that they might be useful to others.



Thank you for sharing these modules. It would be nice if you could record a video of a typical case (preferably on one of the Slicer sample data sets) just in case someone has difficulty following the written instructions.

You could also consider submitting these modules to the extensions index. You can do that by either moving them to Slicer VMTK extension (a bit less work) or submit your extension (a bit more visibility at the cost of some maintenance and support workload). Based on all your contributions and experience in Slicer extension development, you could now get direct write access to SlicerVMTK extension, so you would not have to wait for your changes to be reviewed each time.

Here are links for 3 studies :

Centerline extraction with fiducials in Panoramix-Abdomen sample
Curve extraction of the right subclavian artery in CTA-cardio
Curve extraction of the left internal mammary artery in CTA-cardio

The third one is quite lengthy, but it shows a very challenging segmentation.

Thank your for considering these modules fit for inclusion in Slicer VMTK extension. That’s what I prefer indeed.

Thanks again for this proposal. I’ll do all necessary edits for pointing the documentation at the right place. How does the write access grant happen ? What should I wait for ? What should I do then ?


I’ve sent you an invitation to get write access (you should have received a notification but you can also click here to accept it). After accepting the invitation you can commit changes directly into the SlicerExtension-VMTK repository. You can use that to add and make changes to your new modules; or make any other simple changes. If you are not sure about any change or there is something more complicated then you can create a pull request and go through the usual review process.

Thanks, I accepted the invitation and now have push access to this repo. Of course, I’ll go through PR for anything doubtful to me.

1 Like