如何在Python(不使用MedPy)或C中将*.mha文件转换为*.nii文件

How to convert *.mha file to *.nii file in Python (without using MedPy) or C?

本文关键字:文件 中将 nii mha 转换 Python MedPy      更新时间:2023-10-16

我想在Python中处理*.mha文件。但它需要MedPy包,这取决于ITK包。我目前在安装软件包时遇到问题ITK。我在想是否有办法*.mha文件转换为*.nii文件(使用其他方式,可能C++),因为我可以使用Python读取*.nii文件。欢迎任何相关的指针。

您可以在Python中安装SimpleITK并使用它来进行转换。例如

import SimpleITK as sitk
root_path = '/path/to/image'
nii_path = root_path + '/data.nii'
mha_path = root_path + '/data.mha'
img = sitk.ReadImage(nii_path)
sitk.WriteImage(img, mha_path)

解决此问题的另一种方法是安装sci-kit映像和simpleitk。

这不需要从源代码构建或包装ITK,并允许读取MHA文件并写入NIFTI格式。

pip install scikit-image 
pip install SimpleITK or easy_install -U SimpleITK

安装这些代码后,如果您运行以下代码,这应该可以工作

import skimage.io as io
path = 'C:/test.mha' #path to your MHA file
outpath = 'C:/test.nii'
img = io.imread(path,plugin='simpleitk')
io.imsave('outpath',img,plugin='simpleitk')

为了得到这个问题的答案,我浪费了 24 小时,但最后,我可以说从 .mha 转换为 .nii 文件非常简单1. 首先,您必须在 conda 或您正在使用的环境中安装 SimpleITK 软件包

之后,只需按照以下步骤转换任何文件。

import SimpleITK as sitk
import matplotlib.pyplot as plt
import numpy as np
import os
OUTPUT_DIR = 'Output'
# Image = sitk.ReadImage('lena1.png')
Image = sitk.ReadImage('Flair.mha')
print(Image.GetPixelIDTypeAsString())
sitk.WriteImage(Image, os.path.join(OUTPUT_DIR, 'Flair.nii'))
# sitk.WriteImage(Image, os.path.join(OUTPUT_DIR, 'SimpleITK.bmp'))
# plt.imshow(sitk.GetArrayViewFromImage(Image))
# plt.axis('off')
# plt.show()

通过执行以下步骤,我认为你们将获得所需的输出。