3D freehand ultrasound - saving data using sequences

Operating system: Windows
Slicer version: 4.10.2

Hi, I have been trying to get Slicerigt to work for a about a week now. Things are coming along slowly but I am quite confused what is the best way to save my data.

I am collecting position tracking data using Optitrack and streaming data using Motive (1.10.3). I am collecting Ultrasound data using Telemed (Echo Blaster 128*. I am using the 32bit Telemed version of PLUS. I am currently performing stylus calibration and temporal calibration in fcal and then performing spatial calibration in Slicer.

Trying to replicate the U31 tutorial I believe I need to record data for the spatial calibration using the sequence module. My issue is how is data meant to be saved? In the tutorial, the data is saved as a .mrb file. However in many other examples data appears to simply be saved as a .mha file and then imported as a sequence metafile? I would really love some clarification on what the best workflow is to collect data. Should I be saving each calibration or experimental trial as a .mrb file? Or should they be saved as .mha file? Should data instead be recorded through the Plus Remote Module and then import the .mha file at sequence metafile? I find this last one problematic because it does not appear to account for the ReferenceToRAS transform I have to include due to how Motive streams data. In the forum post ‘Use of ‘sequences’ for 3D ultrasound spatial calibration and acquisition’ by AurelieS, she mentions that she is recording live acquisitions using the model Sequences. However how is the data saved from this point?

Additionally, when I try to collect more than one sequence it does not appear to reset the previous sequence, instead it just adds to the previous sequence. Is this meant to function in this way? How then do you collect multiple trials?

The tutorials have been great but an overview of the entire process would be really helpful. So in a research setting where my standard workflow would be to set up the hardware. Perform stylus, temporal and spatial calibration. Participant arrives and then collect 8-10 trials. What would be the ideal workflow?

With that in mind here is where I have gotten to so far

  1. Start fCal with generic configuration file (.xml)

  2. Perform Stylus and temporal calibration in fCal

  3. Save calibrations to a new configuration file (.xml)

  4. Start PLUS SERVER with new configuration file

Plus Server

  1. Open generic scene (.mrml) that has my data hierarchy already set up? (Is this bad practice?)
    I do this because I have to include an additional transform that accounts for motive streaming data where X axis is Anterior, Y axis is mediolateral and Z axis is vertical. Having a generic scene with a transform that swaps the X and Y axis saves me having to redo this every time

*Note this generic scene does not include the transform file for StylusTipToStylus (.h5). If I have assumed this correctly, this will be obtained from the stylus calibration recorded within the new configuration file (.xml), correct?

Generic Scene

Files in Generic Scene

  1. Create a sequence browser node and then populate a sequence proxy node for each of my elements. I have done 4 here based on the forum post from AurelieS (Use of ‘sequences’ for 3D ultrasound spatial calibration and acquisition). Do I need another node for StylusTipToStylus?

Sequence Setup

  1. Collect data as performed in Tutorial U31 using the record button seen above and save the data.
    How should the data be saved? I have managed to save it as a .mrb file which can then be opened for spatial calibration to be performed. Or does this need to be saved as a .mha file and if so, how is that done in slicer?
    The reason I am confused about this is when trying to follow Tutorial U32, on slide 3, where you create a new .mha file that includes the ImageToReference for all frames. If you save the sequence using .mrb file then you will not have the correct files for this command correct? How was ElbowUltrasoundSweep.mha saved? Was is saved using slicer or PLUS? It does not appear to have a scene attached with it so does that mean it was saved using the Plus Remote? Should I be setting up sequences and then saving the data (not sure how to do this), or should I just be using the Plus Remote record tool to create the .mha file and then add in my ReferenceToRAS transform later?

Save as MRB

8)Next steps are to follow U32 and U33, however as I am saving my data as .mrb I am stuck here. Next steps are to follow U32 and U33, but i ahve not been able to complete these steps due to issues saving data.
U32 states that I should probably be using the 64 build of PLUS. Should I be using the 32 bit Telemed version to record and then using the 64 bit for reconstruction?
*Note – link on slide 2 of U33 is broken.

Thanks so much for sticking this post out! Really appreciate all the work everyone has done on the software.

Much appreciated,


Unfortunately 3D Slicer does not save the IJKToRAS transform for recorded volume sequence, so you will lose the ImageToReference tracking information if you save a recording of Image_Reference. A workaround is to send the ImageToReference transform separately and send the image using EmbeddedTransformToFrame=“Image”. You will also have to record the ImageToReference transform. Using a scene with the transforms already set up is fine.

For U32 and U33, you should record/reconstruct the ultrasound entirely in Plus. The PlusRemote module in SlicerOpenIGTLink can be used to control the recording and volume reconstruction over OpenIGTLink.

This isn’t a part of the tutorial, but you might also be interested to know that the SlicerIGSIO extension can reconstruct volumes from a sequence or in real-time from within Slicer: Real-time 3D ultrasound volume reconstruction using SlicerIGT extension

Volume sequences in the scene can have varying IJKToRAS transform. However, varying IJKToRAS can be saved only in sequence bundle (.mrb) format and not in standard nrrd file format (.nrrd or .seq.nrrd). We could save into .igs.nrrd format as well, but I’m not sure how much it would help in what you want to achieve (I haven’t read the post above in detail).

Sorry i am not familar with what IJK is referring to? From what you have said, i need to collect data using PlusRemote which will give me a .mha file that has the sequences (ProbeToTracker, StylusToTracker, ReferenceToTracker). From this point i will need to add back in my additional transform (TrackerToRAS which switches the x and y axis). Is this correct?