Loading files from a GE microCT

Operating system: MacOSX 10.10
Slicer version: 4
Expected behavior: NA
Actual behavior:
I have files that I would like to open in 3DSlicer, which were created on a GE microCT system. The output files from the machine are the series of X-ray tiff images and pca, which is opened in a linked software for alignment and correction called Phoenix Datosx. This software outputs a series of files including pcj, pcp, pcr, vgl and vol.
I was wondering if there is a plugin that will read these files and import as a regular dicom or tiff files from other CT scanners.
Thank you.

I don’t think Slicer will import datos|x files like VGL and VOL - I believe these are proprietary formats for Volume Graphics VG Studio Max. (Would be very happy to be corrected on this if Slicer could read these…?)

What I do (we use the same type of scanner and reconstruction software) is to export a stack of TIFF files from datos|x - the button is usually in the right hand side of the tool bar up top. The stack can then be imported into Slicer.

What I often wind up doing, however, is doing a little preprocessing of that TIFF stack with Fiji/ImageJ, cropping and maybe converting to 8 bit (depending on the data), setting the voxel size, and then exporting as NRRD. This can then be easily loaded and analyzed in slicer. This is optional, however, as Slicer can import a TIFF stack all by itself.

Not saying this is the best way, and if anybody has any suggestions on better ways, I’m all ears.

Hope this helps.

-Hollister

2 Likes

Hi Lorian and Hollister -

Here’s some code that worked for reading some vgi/vol data that I got from a microCT a while back. I’m happy to contribute this along with some scanned phantoms if anyone wants to turn it into an extension.

HTH,
Steve

1 Like

Dear Hollister and Pieper,

Thank you for the answers. I’ll be trying both.
I’m not yet versed on Python to help with the extension creation, although it would be a fantastic tool, because I have seen the expansion of GE CT and microCT equipment in the Life Sciences field, and it’s heartbreaking that hands are tied due to software pricing.

Best,
Lorian.

If you have an example file we could see if it works with this code. I had .vgi/.vol files and I think they came from either a Bruker or Nikon scanner so I’m not even sure it’s the same format (is VGL the same a .vgi?)

I convert tiff stacks to nrrd in Fiji as well. The nrrd loads much faster, plus you can use Fiji to delete slices and do other editing as well.

Terrie

Hi Steve, I am having a similar or maybe the same problem. I had .vol file (3D reconstructed volume file using GE CT scan) and .vgl (created from .vol file using the VG Studio software). I am looking for the code/method to open the .vol file and then extract 2D slices out, can you help try a .vol file using the code you provided, etc.? Maybe I am not that good in the Python code and am unable to make it work. I may send the .vol file example to you though it has relatively very large file size. Thank you:)

VG Studio Max used to save a vgi file that you can open with any text editor. The volume representation section described the volume size, data type etc… A very old vgi file I have shows this information:

{volume1}
[representation]
size = 865 519 369
mirror = 0 0 0 0
resamplemode = not activated
indexedcolormode = false
datatype = unsigned integer
datarange = 0 -1
bitsperelement = 16
[file1]
FileFormat = raw
Size = 865 519 369
Name = C:/CT_Data/AUJM-2002-25/VGStudio/maxilla.raw
Datatype = unsigned integer
BitsPerElement = 16
[description]

If you can get this information, you can use GitHub - lassoan/SlicerRawImageGuess to get your data into Slicer.

1 Like

@qinwuxutexas - if you have the dimension information you should be able to use the code @muratmaga pointed to and just fill in the blanks. Or you can experiment by writing a nhdr file with the volume information.

If you are really stuck, then yes, put it on a public share (dropbox, google drive, onedrive, etc) and one of us can probably give specific advice. For inspiration, can you tell us what kind of data it is and what your overall goal is?

1 Like

I sometimes use Fiji/ImageJ to do this - you can import a GE CT scan .vol file as raw, you just need to put in the image dimensions (usually in the .pca file) and specify little-endian byte order. You can crop if you like, then export as NRRD.

Once you determined the correct image size, SlicerRawImageGuess can create a nhdr header for you, which you can use to load the proprietary volume into Slicer or any other standard image viewer.

@lassoan, SlicerRawImageGuess might need some updates for python3. Got some errors when I was trying a raw volume.

Thank you:) I am going to try this.

I am going to try this to see.Thank you:)

When I try opening the vol files in SlicerRawImageGuess (running in Slicer 4.11) it loads fine, but crops out a portion of the volume for some reason. I’ve played with the various options but the crop still remains. I’m not sure if this is a bug or if there is another reason. If I use ImageJ and the same volume dimensions (using import–> raw) I have no problems and it opens the full volume.

What is the volume size? If you generate the nrrd header, restart Slicer, and load the image by opening the header file then is the image still cropped?

Can you save the micro-CT in the scanner as DICOM file? You can then load it with DICOM module.

Yes, the volume is still cropped in the generated nrrd header. The original vol file is 3.6 GB (running on a machine with 16 GB RAM) and it gets cropped down to 1.8 GB. The missing bit can be scrolled through, but it’s blank (black). I can save an nrrd file from FIJI and then load as nrrd and it loads fine.

What is the image size?
Is the size correct in the nhdr file that RawImageGuess generates?

The dimensions of the volumes I’ve tried are around 1737x 1139x 2022. Yes, the header has correct dimensions in the nrrd. Basically the volume loads correctly in x and y (in the red window) for about the first ~third in the z dimension; for the rest it’s black/empty

Something is not right. In general, CTs must be stored on 16 bits, as when only 8 bits are used then the dynamic range would be so low that you could not represent hard tissues (bones) and air and still distinguish various soft tissues. Therefore size of an image of 1737x1139x2022 voxels should be about 8GB.

If the file size is just 4GB then most likely at some point the image was converted to 8 bits (which is acceptable when you image dry bone in air). In this case, in Raw Image Guess module you need to set Pixel type -> 8 bit unsigned to make the image load correctly.