怎么把dicom数据转成nifty数据

1. 问题描述
dicom数据是医学上CT/MRI等模态的数据存储的通用格式,Digital Imaging and Communications in Medicine,包含除了体素值以外的其他数据,包括患者信息,扫描参数等,但这样的数据每一层都是一个.dcm文件,很麻烦,转成.nii的数据更方便些。

 

2. 实现方法
python下直接调用函数就行(感谢造轮子大佬)

import dicom2nifti

dicom2nifti.convert_directory(dicom_directory, output_folder, compression=True, reorient=True)
  • 其中dicom_directory是包含dicom文件的路径,比如下面这个,20200722下面三个文件夹下都包含dicom数据(这可能是因为医院扫描序列不同或者扫描部位不同,然后存在不同文件夹下),路径写到.../20200722/就可以了,这个函数会读出三个文件夹下的数据,按照扫描序列一一转换

  • output_folder就是你想存输出的.nii文件的文件夹路径

更多内容可以看这个包地官网https://dicom2nifti.readthedocs.io/en/latest/readme.html

 

 

3. 其他说明

  1.  每个扫描序列下的slice数量需要大于3,否则会报错'TOO_FEW_SLICES/LOCALIZER',可以在dicom2nifti.common中看到:
    def validate_slicecount(dicoms):
        """
        Validate that volume is big enough to create a meaningfull volume
        This will also skip localizers and alike
    
        :param dicoms: list of dicoms
        """
        if len(dicoms) <= 3:
            logger.warning('At least 4 slices are needed for correct conversion')
            logger.warning('---------------------------------------------------------')
            raise ConversionValidationError('TOO_FEW_SLICES/LOCALIZER')

    如果你确实有这种数据而且不会被后面用到,可以加一个判断语句避免这种情况

 

2.  文件夹遍历os.walk()真是好用

    for root, _, files in os.walk(dicom_directory):
        for dicom_file in files:
            file_path = os.path.join(root, dicom_file)

那种文件夹套文件夹地情况,以前还要傻傻地自己遍历。。。os.walk会一直对文件夹下地文件夹遍历,直到没有文件夹

 

3. 获取扫描序列:

dicom_headers.SeriesInstanceUID

 

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值