Visualize .igs.mha tracked ultrasound sequence in 3D

Hi! I am new to the Slicer and I am trying to visualize some seqeunce file examples shared in PlusDataLib repository.
While I load the SpineUltrasound-Lumbar-C5.igs.mha as Sequence Metafile into the Sequence browser, it displays well in the 2D window. Since I noticed that every frame inside this sequence file has a corresponding transformation (ReferenceToTrackerTransform), I was expecting the 3D window could show the different spatial position of each frame. However, the frames showed in the 3D window (right most) tends to have a fixed location: frames does not move based on different transformation matrix.
In fact, I was expecting some visualization effects like this:
How can I visualize the frames sequence while each frame is posed on its corresponding transformation? Thank you so much for your time!

There can be lots of transforms in a .igs.mha file and you have several choices for reference transform. To specify these, apply a ImageToX (ImageToReference, ImageToRAS, …) to the image and make a selected slice view move with the image by using “Volume reslice driver” module.

These are all described in detail in SlicerIGT tutorials. Let us know if something is not clear.

Thank you very much! I checked SlicerIGT tutorials and “Tracked ultrasound visualization in 3D Slicer” solved my problem!

1 Like

Hello Dr. Lasso! Since last time I have been trying to convert our own data into the .mha type of images for visualization in Slicer. After checking the SlicerIGT tutorials, a new problem just came to me: I am not sure what the “Reference” means in “ImageToReferenceTransform”. Could you please help shed some light on that? Thank you so much!

You can choose any coordinate system as reference. ImageToReferenceTransform defines origin, axes directions, and spacing of the image in that coordinate system. See examples here:

Thank you Dr. Lasso!

I have managed to generate the .mhd sequence file, loaded into Slicer and build a reconstructed 3D ultrasound volume using VolumeReconstructor.exe. The outcome is amazing and thank you so much for the incredible work!

Just a minor question: Is there a version of VolumeReconstructor that can run in Linux environment? So far I only succeeded running it in Windows, and I read about the fact (developer guide) that “many of the drivers written for devices are Windows specific, and thus capture cannot be done on a Linux or MacOSX machine”. Is it still under development? Much appreciated for your time!

Volume reconstruction module is included in SlicerIGSIO extension, which is available on all platforms and can be used with the interactive GUI or from C++ or Python (and therefore via command line, too).

You can also build Plus toolkit on Linux, which contains the command-line VolumeReconstructor utility.

1 Like

Hi Dr. Lasso! Recently I have been trying to do some data processing for my research, I met a problem and cannot understand why this happens. And I really appreciate it if you can help shed some lights on this.

First of all, I have managed visualize the image sequence. Each frame correspond to a 4x4 transformation matrix, and it looks good in the Slicer window:

Then, I use matrix multiplication, multiply every transformation matrix with the inverse of the first transformation matrix. I did this because I want to move the first frame to the origin of the coordinate system, and want to maintain the inter-frame relationship across the sequence. After I did this, the visualization looks weird to me, with only the very first frames appear normal, and rest of the sequence seem to be cropped in a weird way:

I thought that: we can imagine that the inverse of the first frame’s transformation matrix is also a transformation matrix. It can move the first frame to the identity matrix. And since every frame will be transformed again by the first frame’s inverse, it looks like we are moving all the rest frames in the same way.

But I just cannot figure it out, why the images seem to be oddly cropped after my operations. Could you please shed some light on this? Thank you so much!

Make sure you set the image as input in Volume reslice driver module.