Чтение *.mhd/*. Raw-формата в python

Кто-нибудь может рассказать мне, как я могу прочитать набор данных, содержащий файлы .mhd/.raw в python?

Ответ 1

Самый простой способ - использовать SimpleITK (MedPy также использует ITK для файлов .mhd/.raw). Команда

pip install SimpleITK

работает для многих версий python. Для чтения .mhd/.raw вы можете использовать этот код из 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

Ответ 2

Использование skimage может быть еще проще после установки SimpleITK

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

Это даст вам массив numpy с сортировкой z, y, x.

Ответ 3

Добавляя к вышеупомянутым сообщениям, вы можете начать с файла CT-Scan.mhd, загруженного из здесь, и отобразить/сохранить 29 изображений со следующим кодом (при условии, что у вас есть загруженный как заголовок, так и необработанные файлы). в текущем каталоге):

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, e.g.,
plt.show()

enter image description here

Вот тот же файл .mhd для компьютерной томографии, который читается с помощью SimpleITK и анимируется: enter image description here

Ответ 4

Вы можете попытаться использовать MedPy или этот mhd_utils script