Maybe my question is very beginner, so I apologize for that. I would like to say that I totally don’t understand any specialized terms connected with CT scanning and X-ray. I just want to measure distances inside a connector. I made some CT scans using a GE PHOENIX X-RAY NANOMEX 180T, and after that, I got files in formats like .tiff, .vgi, .pcj, .vol, .pcr, .pca, etc. The company has a program called myVGL, but there is no option for saving measured dimensions.
So, I would like to know if there is any option to display slices like in the myVGL viewer in 3D Slicer? I’ve read something here: Loading files from a GE microCT, but unfortunately, I totally don’t understand it. The outcome should be something like what is displayed in the attached photos. Can someone please
Thank you for your response! I’ve tried it and it shows that there might be hidden processing in the myVGL viewer, or the information about the composition of slices is in a different files than .tif (tif files showing only images of rotating sample), because what I got looks like this.
Yes, I have both, .pcr and .vol in the same directory. I tried to select .pcr file, for generating NHDR file, but after clicking on ‘Generate NHDR file’ button, nothing happens.
Thanks for sharing the file. The GEVOLImport was made for GE Tome MicroCT particularly. The format of PCR files are slightly different. I’ll try to modify it today and get back to you soon.
The error generating NHDR is because the pcr file generated by GE Phoenix somehow has no voxel size value in it. In the pcr of GE Tome, this value is stored in “VoxelSizeRec”.
I found that the voxel size is stored in “.pca” as “VoxelSizeX” and “VoxelSizeY”, and in “.vgi” as “resolution”. My solution for the current problem is here. Basically, if the pcr parser cannot find “VoxelSizeRec”, it will go to look for “.pca” and “.vgi” for the resolution information:
if self.spacing is None:
pcaFilePath = fileName + ".pca"
vgiFilePath = fileName + ".vgi"
if os.path.isfile(pcaFilePath):
with open (pcaFilePath) as in_file:
for line in in_file:
lines.append(line.strip("\n"))
for element in lines:
if(element.find("VoxelSizeX=")>=0):
self.spacing = float(element.split('=')[1])
elif os.path.isfile(vgiFilePath):
with open (vgiFilePath) as in_file:
for line in in_file:
lines.append(line.strip("\n"))
for element in lines:
if(element.find("resolution")>=0):
self.spacing = float(element.split(' ')[2])
I successfully generated an NHDR file and use it to properly load the VOL into Slicer.
To try the update, you can remove your current SlicerMorph extension, and download my fork of SlicerMorph here. You can just download the zip file, unzip it, and use Extension Wizard to install it. The Extension Wizard tutorial is here. Alternatively, you can go to Slicer 5.7/Contents/Extensions-32879/SlicerMorph/lib/Slicer-5.7/qt-scripted-modules(or where your Slicer is installed) and replace the content of GEVOLImport.py with the updated script.
This is a temporary solution, but it seems that GE Phoenix automatically generate “.pcr”, “.pca”, and “.vgi” along with the VOL file in the same directory. @muratmaga
One question I have is, the PCR file shows the scalar format = 5, which is unsigned short. In the “.vgi” file, it shows the format is “unsigned integer”. Are they practically the same? I used format = 5 in “.pcr”.