Just to clarify, does this mean that the browser node splits the sequence back into volumes (or transforms as in the case of the registration) so that I can do things like export those volumes or apply the individual transforms to other segmentations and volumes, or would I have to clone the scene? As for cloning the scene, does that separate the volume?
Each browser node can take one item (corresponding to one time point, one patient, …) from a sequence and copies it into the scene.
When you save a volume sequence to file then it may be either saved as a 4D image (if all 3D volumes in the sequence has the same size, geometry, etc) or as a .mrb file (a zip file containing individual volumes).
To force save a volume sequence as .mrb (so that you can unzip it to have each volume in a separate file), you can set the storage node explicitly:
# remove current storage node
slicer.mrmlScene.RemoveNode(s.GetStorageNode())
# create and set storage node that writes sequence in .mrb file
s.SetAndObserveStorageNodeID(slicer.mrmlScene.AddNewNodeByClass('vtkMRMLSequenceStorageNode').GetID())
ITK, VTK can read 4D nrrd volumes natively, so there should be no need for dealing with individual 3D files (if they have the same geometry). We even created a nrrd file reader/writer for Matlab that can deal with 4D volumes (used in MatlabBridge).
Here is the error log when I ran the sequence registration:
https://drive.google.com/file/d/0B7remrTspnWab0J0eEZuM1dyZTA/view?usp=sharing
Thanks for the logs. If you go to Volumes module and select the OutputVolumes proxy volume node as Active volume
, in Information section, what are Image Dimensions
values? In the slice view controller, what background and foreground volume is selected? Did you see the input volume playing before you run the registration?
As I registered two sequences, I’ll give you both dimensions: 74 X 77 X 117 and 89 X 66 X 122. The foreground by default was always None, and the Background was the registered volume when I went to the Sequence Browser. I checked the sequence input volume before I rant the registration and there was nothing wrong with it as far as I know. While I was registering the sequences (at start) I had the sequence of the input volume displayed on a particular portion. During the registration process it switched over to show particular registered volume images until the end when it stopped at the first volume in the registered sequence. The registration for the volume with the 74 X 77 X 117 is really bad though, and that was the sequence that kept giving me the error. The registered volume has extreme distortion where the image is pulled far off the registered image space. Also, by the appearance of both of my registered sequences, it looks as if the sequence registration just registered all of the volumes to the first volume in the sequence, as that is the only volume that wasn’t distorted. I’m trying to get the registration to register all of the images together so that even the first volume is zero-padded based off from whether it is or isn’t the largest volume in the sequence. Is there an easy method to do this?
I couldn’t really follow what you described, but if registration result was incorrectly distorted then probably you need to step back and figure out how to register just two frames to each other. Once that works reliably, you can move on to register a complete sequence.
In sequence registration all frames are registered to one frame, which might be the first frame by default but in general the beat is to choose a frame from near the middle of the sequence.