Real-time 3D ultrasound volume reconstruction using SlicerIGT extension

3D Slicer’s SlicerIGT extension allows live data acquisition from a wide range of medical imaging, position tracking, and other devices and visualize and process the data in real-time.

We have recently implemented huge performance improvements in live 3D ultrasound image acquisition, which allows smooth, continuous reconstruction of high-resolution 3D ultrasound volumes, using inexpensive portable ultrasound and position tracker. For large volumes and performance-critical applications, the volume reconstructor can use all CPU threads or GPU acceleration (OpenCL). We have uploaded a short video of this new feature here:

Thanks to company sponsors and our awesome SlicerIGT developers @Sunderlandkyl and @ungi for making these available for the community.

Any questions, comments, and suggestions are welcome.

9 Likes

This is awesome!

I would like to address an issue I had with an already recorded sequence. I loaded the sequence in Plus (providing the full path in the config file.)
Then I followed the steps as shown in the video. As a result, I do not get live reconstruction. Is it not supposed to behave the same as a real-time data acquisition and reconstruction scenario, given that Plus will replay the images from the sequence?

Also the button for “input sequence browser” does not work when chosen “Recorded sequence reconstruction” as an input method. Any input on this matter?

3d reconstruction

@Sunderlandkyl could you help out with this?

What is the exact issue that you are having when doing live volume reconstruction?

The images that you receive from Plus should have a transform applied to them, either by receiving them directly as in the correct coordinate system (ex. Image_Reference), or by applying the transforms within Slicer. If this is already done, then I will need some more information about your Slicer scene, Plus config file and data to determine what the issue is.

For the “Recorded sequence reconstruction”, I assume the reason that you cannot select a sequence browser is that you do not have a loaded sequence in Slicer.

1 Like

Hi, can you please tell me where I can find the Plus Server configuration file to perform a real-time 3D ultrasound volume recontruction using this SlicerIGT extension?

Perhaps you could try U-34 in SlicerIGT Tutorials (User tutorial | SlicerIGT) where sample data is also available.

1 Like

Thank you. I used that data and it worked

Dear Sir,

does this module(volume reconstruction)support the TEE living data or offline record data ?

there mabye a position tracking device.
image

thanks

It does continuous live recording and volume reconstruction. You can also feed pre-recorded data or reconstruct offline from pre-recorded data.

Thanks very much, I will try the TEE pre-recored data.

Hello,
I am using a system with an NVIDIA GeForce RTX 3070 GPU. I want to use it for volume reconstruction. Can you please let me know if there is a way to configure Slicer to use it for volume reconstruction?
Thank you.

GPU is used for volume reconstruction and volume rendering.

Thank you for your reply.
The issue is that when I make the region of interest larger for real-time reconstruction then I see lag and there are missing parts and gaps in the reconstructed result.
I checked “slicer.vtkSlicerVolumeReconstructionLogic().IsGpuAccelerationSupported()” and it was false. Does this mean my GPU is not used?
Would you please let me know how I can have a bigger area for reconstruction with no lag? should I upgrade any hardware? or is there any other way to solve this issue?
Thank you.

@Sunderlandkyl is GPU acceleration available on factory-built IGSIO packages? If not, what would be needed to enable it?

@Javan using the GPU will accelerate volume reconstruction but there is a lot of other things to happen quickly to be able to significantly increase the frame rate. Most of these things cannot run on the GPU. So, in general, you need to slow down if you see gaps. What are the dimensions and voxel size of the volume that you are trying to insert frames into? What are the dimensions and pixel size of the ultrasound image? What is the ultrasound image acquisition rate?

It doesn’t look like it’s included in the factory-built packages. It should be automatically included if the factory has OpenCL installed.

I tried with image size 800x600 spacing 0.08 with fps 10, and volume size 800x800x800 and spacing 0.1.
For the GPU that means I don’t have OpenCL installed? is there any way to install it on my system? and will that help to solve the issue?
Thank you in advance.

You shouldn’t need to have OpenCL installed on your own computer. The OpenCL SDK just needs to be installed on the machine that is building the extension.

@Sunderlandkyl Do you know if there is any disadvantage of building with OpenCL? (for example, what happens if the package is built with OpenCL SDK but then on the user’s computer there is no OpenCL or not even a GPU)? If there are no disadvantages then we could download the OpenCL SDK in SlicerIGSIO build.

@Javan Do you have experience in building C++ code? You can then test if the speed improvement by reconstructing on the GPU is significant enough.

I believe that the user should still be able to use the OpenCL GPU-acceleration optimization. I’ll look into including OpenCL as part of the SlicerIGSIO superbuild process.

Unfortunately, not.
I didn’t understand why I am not able to use GPU-acceleration now. Would you please let me know if it is possible how I can use it? or am I able to use it after OpenCL is included in SlicerIGSIO?