Loading of GE/Kretz ultrasound volumes (.vol file)

Good morning, I have a doubt as to the extensions that the program can upload. In my case I need to load a cartesian volume file with .vol extension to edit it and convert it into a 3D STL model. Is it possible to do this with 3D Slicer?

There are a couple of different file formats that use .vol extension. Where does this file come from?

If it’s from an old GE ultrasound system then most likely it is a Kretz volume file, which has no known free converter, although you might find some free viewers (https://groups.google.com/forum/#!topic/comp.protocols.dicom/PMMnxcTh6nw). For example, free viewer that might work is TomoVision. The cheapest available converter is DICOMatic, costs $1000.

Kretzfile loading has come up a couple of times, so I would implement a reader for it in Slicer, but for reverse-engineering the file format I would need 3-4 sample images of phantoms (preferably with different sizes, acquired with different imaging settings).

Thanks for your answer
This file is originated by the ultrasound, I need to make a 3D impression of a 4d-5d ultrasound. The equipment that manages this extension are those of General Electric.

Thanks

OK, so most likely the files are in Kretzfile format. You can confirm that by opening them with the free TomoVision viewer. If you want to 3D print it then you have to convert to a usable format by either buying DICOMatic ($1000), Mimics (around $15000), or share a few data sets that we can use to implement support for it in Slicer (for free).

I have a GE Voluson I 730 and would be able to send any data you need to get these to work in slicer. I send to the slicer listener via dicom but get an error trying to load the file no geometry data

OK. For this, please acquire a few scans with varying depth, zoom, etc. settings, of an object with known dimensions (preferably use an ultrasound quality assurance phantom, but if you don’t have access to one then you can put a cube or sphere shaped object in water). Upload these scans to Dropbox or OneDrive and post the link here.

I will get with the tech and have her do some scans.

Here is a link to 3 files. I have loaded these in the GE 4d viewer software and it has volumes…

Thank you fro the sample files. I was able to load the files manually but still need to figure out how to get some metadata from the files automatically.

Getting some more files, some of them showing objects with known size would help.

I can do… We will do a a study and supply measurements on them… But how did you get them to load manually?

I’ve compared the content of each file and from the differences determined where voxels and image size information is stored. Now the challenge is that voxels are stored in a rectangular grid but the image is acquired with a convex probe, so I need to figure out where the spherical projection parameters are stored. For this, it would help if you could also acquire a scan of a flat surface, such as a bottom of a water-filled plastic box, at a few different depths.

At what levels do you need the measurements?..

Basically the tech wants to know what you need and she will scan it for
you…

Thanks

Something like these:

  • probe imaging depth set to 5cm, have the water tank bottom at 3cm
  • imaging depth set to 10cm, have the water tank bottom at 5cm
  • imaging depth set to 10.5cm, have the water tank bottom at 5cm
  • imaging depth set to 11cm, have the water tank bottom at 5cm
  • imaging depth set to 15cm, have the water tank bottom at 10cm

Always have an object of known size in the image (such as a dice or coin).

In the meantime, I’ve found out how data fields are stored in the image header, I can retrieve angular resolution, image size, field of view, etc. The only information that I could not decode yet is the imaging depth start/end. That’s why the above described set of images with different imaging depth would help.

Importing is now available in latest Slicer nightly version, in SlicerHeart extension. See a demo here:

Conversion of spherical coordinates to Cartesian is not perfect yet, there are distortions in the images. If you send me those additional images that I’ve asked then there is a good chance I can fix all remaining issues.

1 Like

Andras, did you already get the data you need?

Amir

I would still need some more data to finalize scan conversion (from spherical to Cartesian). Put a small object of known dimensions (such as a dice or thick coin) into water container with flat bottom and acquire images like these:

  • start imaging depth set to 0cm, imaging depth set to about 10cm. This setting will serve as baseline, keep all parameters that are not mentioned unchanged compared to these settings.
  • imaging depth set very slightly (by 5-10mm) less
  • imaging depth set very slightly (by 5-10mm) more
  • imaging depth set to much more (by 3-5cm)
  • imaging depth set to much less (by 3-5cm)
  • field of view decreased a bit (by a few degrees)
  • field of view decreased significantly (by at least 15-20 degrees)
  • start imaging depth set to a small value (1-2cm?)
  • start imaging depth set to a larger value (3-5cm?)

I will try to obtain the scans till the end of the week. If it helps I will also try take the object to the angio suite or CT so that you have an exact 3D representation for comparison.

Moreover, there was a plugin for Amira written at our institution years ago to import the kretz files. Unfortunately the developer left and I cannot find the source code. All I have now is the dll, that you could disassemble to get to the algorithm. But I don’t think thats helpful. I will try to search for the source code though.

Amir

Thanks in advance.

If the Amira reader implemented scan conversion then it’s source code would be very useful.

This is a “brainlab disposable reflective marker sphere” in a cylinder container with water. The bottom of the container is not perfectly flat. I didnt find any better Phantom. There Voluson E8 exports also DICOM, DICOM with DICOMDIR, 4dv (i took uncompressed, proprietary format again I think).

For the vol files, it exports vol (nicht cartesian), vol with wavelet (compression I guess, can be lossy or not lossy, so I took the not lossy) and most imortantly, VOL Karthesisch=cartesian.

So I think maybe modifying your algorithm so that the volumes of carthesian and not carthesian match could help.

I have given up the search for the source code of our amira plugin, because its long lost and as far as I know, it only imports the “cartesian” volumes.

What I want to say is that there are also cartesian volumes around, that could be imported with more ease. However, I don’t know since what version the export of cartesian is supported on the machines.

Let me know if this helps or is completely useless and I should search for another phantom.

Amir

Thank you these images are very useful. I’ll try to update the code to handle Cartesian volumes and improve scan conversion of spherical volumes.