Segmentation of 4D sequence volumes using Sequence Registration

I am trying to segment the CT Cardio Volume Sequence (from the Slicer sample data). I have followed all the steps as mentioned in Load multiple cardiac phases for segmentation/virtual reality question that was posted earlier on the forum, but I can’t get the required results.

  • My input volume sequence is the CTCardioSeq

  • I have created a new output volume sequence (OutputVolumes)

  • For output transform sequence I have chosen the Segmentation.

I had segmented frame 4 of the volume sequence and wanted to modify that segmentation to fit all other frames. Instead of modifying the segmentation to fit all the frames, Slicer is modifying the rest of the frames to fit the segmentation. I am not able to figure out where I am going wrong and how should I go about this issue. I am using Slicer 4.11.20210226.

Thanks in advance.

For output transform sequence you need to choose a transform sequence (not segmentation).
Transform direction should be “fixed frame to moving frames”.

If you segment the fixed frame and then apply the transform sequence’s proxy node (the transform that is changing in time as you replay the sequence) then you’ll see the segmentation is warped to each image frame.

If you want to edit the automatically warped transform then you need to create a segmentation sequence, enable “Save changes” for the segmentation sequence in “Synchronized nodes” section in Sequences module, and replay it once so that the segmentation is saved for each time point. You can then apply the warping transform manually for each time point and fix up the segmentation if you have found inaccuracies in the automatic warping.

Hi Lasso,
I tried to use this method on a (2D+time) dataset and it through me an error:
“Error: Command ‘elastix’ returned non-zero exit status 1.”

Could this function work with 2D cine data?

Thanks for the help!

Probably you need to adjust the settings to register 2D+t data. You can ask help from the Elastix forum.

Hi Andras,

Is there a way to segment the anatomy of interest in each time frame and extract a transform sequence based off that?

I need an accurate transform sequence of the airway in a multiphase CT that I have. But the transform sequence that “sequence registration” module creates is not very accurate, So I was curious to know if I can work backwards and go from a series of segmentation to an accurate transform sequence.

Thank you,

Sassan

You can make registration more accurate by cropping the images to the region of interest, using Crop volume sequence module. You can also tune the registration parameters to make the registration more accurate.

But if you still want to register based on segmentation, you can do that, too. You’ll need to manually (or from Python script) compute a distance map from one or few structures and then use sequence registration on these distance maps. The resulting transform sequence can be then applied to the image sequence.