dicom(.dcm)转nifti(.nii)

该博客介绍了一个Python脚本,用于将DICOM医学影像文件转换为NIFTI格式。脚本使用SimpleITK库读取DICOM系列,整合数据,然后保存为NIFTI文件。此过程涉及读取、转换和保存步骤,适用于医学影像处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import SimpleITK as sitk
import os
import pydicom
import matplotlib.pyplot as plt

os.chdir( 'C:\\Users\\xxxx\\Desktop\\DemoData\\DemoRaw\\DemoData\\FunRaw')
#避免因路径中含中文导致SimpleITK无法读取

def dcm2nii(dcms_path, nii_path):
	# 1.构建dicom序列文件阅读器,并执行(即将dicom序列文件“打包整合”)
    reader = sitk.ImageSeriesReader()
    dicom_names = reader.GetGDCMSeriesFileNames(dcms_path)
    reader.SetFileNames(dicom_names)
    image2 = reader.Execute()
    #print(image2)
	# 2.将整合后的数据转为array,并获取dicom文件基本信息
    image_array = sitk.GetArrayFromImage(image2)  # z, y, x
    origin = image2.GetOrigin()  # x, y, z
    spacing = image2.GetSpacing()  # x, y, z
    direction = image2.GetDirection()  # x, y, z
	# 3.将array转为img,并保存为.nii.gz
    image3 = sitk.GetImageFromArray(image_array)
    image3.SetSpacing(spacing)
    image3.SetDirection(direction)
    image3.SetOrigin(origin)
    sitk.WriteImage(image3, nii_path)


dcms_path = r'.\Sub_002'   # dicom序列文件所在路径
nii_path = r'.\Sub_002\test.nii' # 所需.nii文件保存路径
###将dicom(.dcm)文件转为nifti(.nii)文件###
dcm2nii(dcms_path, nii_path)

### 将NIfTI格式(.nii.gz)的医学影像文件换为DICOM格式 为了实现从NIfTI (.nii.gz)DICOM (.dcm)换,通常推荐使用 `pydicom` 和 `nibabel` 库来处理这两种不同类型的医学图像文件。此外,还可以借助于 `plastimatch` 或者 `mrconvert` 工具来进行这种换操作。 #### 使用Plastimatch进行换 Plastimatch 是一个开源软件包,支持多种医学成像模态之间的相互换。对于本案例中的需求,可以通过命令行调用来完成: ```bash plastimatch convert --input input_image.nii.gz --output-dicom output_dicom_folder/ ``` 这条指令会读取指定路径下的 `.nii.gz` 文件并将其换为一系列位于目标文件夹内的 `.dcm` 文件[^1]。 #### Python脚本方式换 如果倾向于编程解决方案,则可以编写一段Python代码利用外部工具如 Plastimatch 来执行此任务: ```python import os from subprocess import call def nifti_to_dicom(nifti_path, dicom_dir): """Converts a NIfTI file to multiple DICOM files using plastimatch.""" if not os.path.exists(dicom_dir): os.makedirs(dicom_dir) command = ["plastimatch", "convert", "--input", nifti_path, "--output-dir", dicom_dir] try: result = call(command) print(f"Conversion completed with exit code {result}") except Exception as e: print(e) if __name__ == "__main__": # Example usage of the function defined above. nifti_file = "/path/to/your/input_image.nii.gz" destination_directory = "/desired/path/to/output/dicoms/" nifti_to_dicom(nifti_file, destination_directory) ``` 这段程序定义了一个名为 `nifti_to_dicom()` 的函数,该函数接收两个参数——源NIfTI文件的位置以及希望存储生成的DICOM切片的目标目录。它内部构建了一条类似于前面提到过的Plastimatch命令,并通过Python的标准库subprocess模块运行之[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值