【医学影像处理】基于MRIcron的dcm2nii批量dcm转nii格式

MRIcron下载

MRIcron下载官网
选择适合自己环境的版本,我使用的是windows版本
Alt

MRIcron介绍

MRICron是一款用于处理磁共振成像(MRI)数据的免费开源软件工具。它是一个功能强大的图像处理程序,主要用于可视化、分析和处理医学影像数据别是MRI数据。界面如下:
在这里插入图片描述

除了查看医学图像,MRIcron也有将dcm格式转nii的功能并且支持图形界面转换命令行转换

图形界面如下:

点击import->convert DICOM to NIFTI进入图形界面
在这里插入图片描述
在这里插入图片描述

命令行使用

在window上,下载好MRIcron后,安装包的Resources目录下会有一个dcm2nii.exe程序,打开window命令行窗口(cmd),转到有dcm2nii.exe的路径下(必要)即可在命令行窗口使用dcm2nii命令,命令行如下:

dcm2niix.exe -f "outputfilename" -i y -l y -p y -x y -v y -z y -o "E:\datasets" "c:\DicomDir"

在这里插入图片描述
其中,"E:\datasets"是输入nii文件的目录,"c:\DicomDir"是输入dicom的目录,“outputfilename” 是输出nii.gz的文件名。

在Linux上需要先安装dcm2nii

sudo apt-get install dcm2niix

运行命令

dcm2niix -o /path/to/output_folder /path/to/dicom_folder

-o 用于指定输出文件夹。
/path/to/output_folder 是您希望保存NIfTI文件的文件夹路径。
/path/to/dicom_folder 是包含DICOM文件的文件夹路径。

使用dcm2nii.exe批量转换

1、生成路径txt文件
因为是要批量自动的处理文件,因此必须知道每个样本的路径,这里的路径如果是递归的存放在子文件下面的话,只需要读到第一个就行,比如从ADNI上下载的数据是使用子文件命名的形式存储患者信息,如图,我们只需要读到subjectID(就是ADNI的下一个路径)就行,并不需要读到I249535
在这里插入图片描述

# 当前目录下所有文件夹下的文件名(不带后缀)写入对应txt文件(以文件夹命名)中
import os

# 指定包含所有样本文件夹的根目录
root_folder = r"E:\ADNITest\EMCI\ADNI"  # 修改为你的根目录路径

# 指定保存路径的文本文件
output_txt_file = r"E:\ADNITest\EMCI\EMCI.txt"  # 修改为你希望保存路径的文本文件路径


# 打开文本文件以写入样本路径
with open(output_txt_file, "w") as f:
    # 遍历根目录下的所有样本文件夹
    for subject_folder in os.listdir(root_folder):
        subject_folder_path = os.path.join(root_folder, subject_folder)

        # 确保当前路径是一个目录
        if os.path.isdir(subject_folder_path):
            # 将样本文件夹的路径写入文本文件
            f.write(subject_folder_path + "\n")

2、批处理
在批处理之前,需要将dcm2nii.exe程序放到项目里面

import sys  # 导入sys模块
import os

d2n = 'dcm2niix.exe -f '
para = ' -i y -l y -p y -x y -v y -z y -o '
output_path = "E:\ADNITest\EMCI\EMCI"


# read txt
filepaths = []
for line in open("E:\ADNITest\EMCI\EMCI.txt", "r"):  # 设置文件对象并读取每一行文件
    filepaths.append(line)
# deal with format transform
for filepath in filepaths:
    filepath = filepath[:-1]  # 去掉行位的换行符
    outputname = filepath[22:] # 命名,这里直接从路径里面取,因为我的路径里面包含subjectID,需要根据实际情况调整
    # print(filepath[22:])
    # 运行cmd命令
    cmd = d2n + outputname + para + '\"' + output_path + '\" ' + '\"' + filepath + '\"'  # 其中的双引号不可少
    os.system(cmd)
print("Congratulation, Done!")

参考链接:https://blog.csdn.net/DragonGirI/article/details/104011541

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyzy_czh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值