Reading * .mhd / *. Raw format in python

Can anyone tell me how can I read a dataset containing .mhd / .raw files in python?

+16
source share
4 answers

The easiest way is to use SimpleITK (MedPy also uses ITK for .mhd / .raw files). Command

pip install SimpleITK 

works for many versions of python. For reading .mhd / .raw you can use this code from kaggle

 import SimpleITK as sitk import numpy as np ''' This funciton reads a '.mhd' file using SimpleITK and return the image array, origin and spacing of the image. ''' def load_itk(filename): # Reads the image using SimpleITK itkimage = sitk.ReadImage(filename) # Convert the image to a numpy array first and then shuffle the dimensions to get axis in the order z,y,x ct_scan = sitk.GetArrayFromImage(itkimage) # Read the origin of the ct_scan, will be used to convert the coordinates from world to voxel and vice versa. origin = np.array(list(reversed(itkimage.GetOrigin()))) # Read the spacing along each dimension spacing = np.array(list(reversed(itkimage.GetSpacing()))) return ct_scan, origin, spacing 
+16
source

Using skimage can be even easier after installing SimpleITK

 import skimage.io as io img = io.imread('file.mhd', plugin='simpleitk') 

This will give you a numpy array with sorting z, y, x.

+9
source

Adding to the above messages, you can start with the CT-Scan.mhd file downloaded from here and display / save 29 images with the following code (provided that you have both the header and the raw files loaded). in the current directory):

 import SimpleITK as sitk import matplotlib.pylab as plt ct_scans = sitk.GetArrayFromImage(sitk.ReadImage("training_001_ct.mhd", sitk.sitkFloat32)) plt.figure(figsize=(20,16)) plt.gray() plt.subplots_adjust(0,0,1,1,0.01,0.01) for i in range(ct_scans.shape[0]): plt.subplot(5,6,i+1), plt.imshow(ct_scans[i]), plt.axis('off') # use plt.savefig(...) here if you want to save the images as .jpg, eg, plt.show() 

enter image description here

Here is the same .mhd file for computed tomography, which is read using SimpleITK and animated: enter image description here

+2
source

You can try using MedPy or this mhd_utils script

0
source

All Articles