How to write a recursive script to crop volumes with ROI?

  1. How to write recursive script to run ‘crop volume’ (like attached screenshot) on all 3D volumes (3D volumes extracted from 4D nifti)? I have ‘UtBox.acsv’ ROI file already.

  2. (Am I supposed to, OR, ) how to make function call ‘slicer.modules.cropvolume’ in built-in Python console to crop 3D volumes with ROI (instead of using GUI).
    The documentation seems to be very limited.
    CropScreenshot

Thanks!

Up. Please help. Thanks!

You could start by looking at the SlicerCaseIterator. Once you can iterate through your volumes you could add some code to do the cropping. I agree it’s not well documented but the building blocks are there and you can see example scripts.

Thanks!
I think I should be able to figure out iteration method.
My main concern is how to call cropvolume function with input ROI being UtBox ROI file (like the screenshot).

Hi, this is a part of a script I used to call cropvolume from a python script:

parameters = slicer.vtkMRMLCropVolumeParametersNode()
slicer.mrmlScene.AddNode(parameters)

parameters.SetInputVolumeNodeID(input.GetID())
parameters.SetOutputVolumeNodeID(output.GetID())
parameters.SetROINodeID(roiNode.GetID())
slicer.modules.cropvolume.logic().Apply(parameters)
2 Likes

A post was merged into an existing topic: Volume Cropping from Scripted Module