Septal extraction

I’d like to extract septal surface from left (LV) or right (RV) ventricle model. I am able to convert models points to numpy arrays and get its distance using numpy.linalg.norm. Then I can select part of points with minimal distance. However I don’t know how to create new model based on selected points - see picture.

thank you fro your help

You don’t need to mess with computing distances in numpy, but instead use vtkDistancePolyDataFilter. You can then use vtkThreshold to extract a piece of a mesh based on the computed distance that is stored in point scalars.

An alternative, potentially simpler and more robust method is to use the Segment Editor:

  1. Create a segment “septum” that contains LV RV and septal wall, by combining LV and RV into one segment using Logical operators effect (allow overlap in masking settings to be able to preserve the original LV and RB segments).
  2. Fill the gap between the LV and RV in the “septum” segment by using Smoothing effect (Closing operation, with a sufficiently large kernel).
  3. Subtract the original LV and RV segments from the “septum” segment using Logical operators. What remains is the septal wall.

thank you very much! The segmentation method looks great. However, I am not sure if I make it correctly - smoothing takes more than 15 minutes.

If the serial wall can be up to 15mm and voxel size is about 0.5mm then indeed the smoothing may take long. You can try Margin effect instead (grow then shrink by 15mm), or use Wrap Solidify effect (provided by SurfaceWrapSolidify extension).

thank you very much! The Margin effect works good for my purposes.


I have problem with saturation after Margin operation in some cases. Do you have any idea why?
Thank you.

You can increase the extent of the segmentation by creating an ROI markup and use it in “Specify geometry” in Segment Editor.