Post-processing of brain vessel models

I still have questions about post-processing of brain vessel models:

1.) Is it more advantageous to use first the smoothing function for post-processing the vessel models in order to improve the vessel lumen and thus the flow rate?

Or it is better to add the vessel wall (hollow) first and then to process the vessel with the smoothing function

2.) Which smoothing function is recommended for very small (brain) vessels?


3.)Can you recommend other post-processing tools?

4.)In my patient-specific vessel model, only the “trunk” and the main branches are important for the later training model.
Is there an elegant way to remove the small branches? I mostly use the ‘’ scissors ‘’ function which is very time consuming and cumbersome. In addition, it is hardly reproducible.

With best regards

1 Like

If the segmented vessel contains small holes or extrusions then smoothing can help.

It depends. What is the purpose of your project? 3D printing, computational fluid dynamics analysis, intervention planning, creation of educational models, …?

It depends what kind of errors your segmentation has. For removing small holes and removing small extrusions in a single segment, I would recommend median filtering.

Yes. For this, it is necessary to see examples images and segmentations and know what you are trying to achieve.

Probably the simplest is to make small cuts with Scissors effect then use Islands effect’s Keep largest island method to remove the cut-off branches.

It could be also possible to enhance Slicer-VMTK extension’s centerline extraction module to allow specifying branch end points. This could save 1-2 minutes per segmentation, but the effort to implement this would probably only pay off if you processed hundreds of cases. Nevertheless, it is a Python scripted module, so you can give it a try to make this improvement.

1 Like

It depends. What is the purpose of your project? 3D printing, computational fluid dynamics analysis, intervention planning, creation of educational models, …?

My project is defined as follows:

Stents are often used to treat vascular diseases in the brain or heart. These are to be examined for their mechanical and fluid dynamic behavior before their clinical application. Vessel models made of visible polymers are used, which are produced on the basis of patient-specific anatomy in 3D printing . The aim of the work is the conception, realization and investigation of a process for the production of synthetic vessel models with physiological true mechanical properties. In a final investigation, the manufactured vessel models are tested for their mechanical and fluid dynamic properties . (no computer-aided analysis)

1 Like

For flow testing, the highest priority is to have accurate vessel lumen geometry. A good workflow can be:

  • Import vascular CT or CBCT
  • Crop and resample the image. Choose spacing value that is at least 4-6x smaller than the minimum vessel diameter that you want to segment and at least a few times smaller than the thinnest wall thickness you want to print.
  • Segment the vessel lumen using Segment Editor module
  • Cut off branches and smooth the segment as needed. It is very easy and quick to remove branches if you just snip them where they originate and then delete them using Islands effect / Keep largest island.
  • Use hollow effect in “Use current segment as inside surface” mode.

In theory, shell thickness would be determined from patient’s vessel wall thickness. However, in practice, most likely wall thickness will be entirely dictated by your 3D printer’s minimum wall thickness and properties of the printing material: you will have to use the thinnest wall that you can print that is still mechanically strong enough so it does not tear or leaks too easily. Start experimenting with different printers, materials, and wall thicknesses early on, to make sure you don’t spend time with trying to determine parameters (wall thickness, printing material properties) that are not feasible anyway.

VMTK extension’s Extract centerline can be used to create centerline tree where only a few selected branches are kept, but about 20-30 lines of code would need to be added to the module that would generate a model from that trimmed centerline that can be used as a mask to remove unselected branches. Probably we will add this feature to the module at some point but if you need it earlier then you should be able to add it, too.

1 Like

That will be a really nice feature

I have another question about the Threshold Range:

Do you leave the minimum at the standard value of 99.00 or do you have to click on “Set” and take the determined value to get the optimal threshold range? (see figure Threshold Range)

In your opinion, is “Otsu” the best method for calculating threshold values when using CT images with contrast medium (brain vessels)?

My next question is about smoothing:
For the smoothing tools, I mostly only use the median function (see illustration smoothing), because I find that this function changes the least in the actual geometry. Is there a certain guideline value for the kernel size or for the pixels with which an optimal result can be achieved? (e.g. everything in the pixel area: 3x3x3 pixels).


There are several classes of voxels in contrasted CT images (air, various soft tissues, bones, contrast agent), so I don’t think Otsu’s method would be ideal (or even picked up the threshold between contrast agent and background if you use the whole image as input).

Since contrast filling may be uneven and smaller vessels may have lower density due to a number of reasons, and contrasted vessels may have similar density as bones, a simple global thresholding method usually does not produce very good results.

Instead, I would recommend local threshold effect, which can compute a local histogram to help you with optimal threshold selection and then uses intensity difference based region growing for extracting vessels. See tutorial here:

1 Like