dicom文件转化为nii文件

dicom其实就是二维图像,nii是三维图像,我们将图像转化为nii更有利于我们后面对图像进行处理。

dicom文件介绍

dicom包括头文件和数据两部分,dicom可以通过很多免费的软件读取图像,例如mango,因为科研工作中一般不通过dicom格式读取,而是转化成nii文件,所以随便选择一种就可以,这里推荐一个查到的可以在线查看的网站免费在线 Dicom 图像查看器 - 放射学和医学成像 | IMAIOS,有兴趣的同学可以尝试一下。

另外可以通过matlab来读取dicom文件

从 DICOM 文件中读取图像数据- MATLAB & Simulink- MathWorks 中国

下面展示matlab中关于diom的几种展示方式,其他的请大家通过matlab帮助文档自行探索哦

I = dicomread("");结果是1200x1200 uint16,unit 16是16位没有符号的整数数组
info = dicominfo("CT-MONO2-16-ankle.dcm"); 结果是一个结构体
I = dicomread(info);结果和1一样,读出来的是一个数组
imshow(I,DisplayRange=[]) 展示dicom的图像

dicomBrowser(fullfile(matlabroot,'toolbox/images/imdata'))打开dicom浏览器,然后直接把文件夹丢进去,可以一个一个点开看

那么 dicom文件就介绍到这里啦

dicom转nii方法介绍

目前网上有的dicom转nii的方法包括spm12,fsl,freesurfer,mricon,python代码等方法,但是存在各种各样的问题,例如批处理慢,文件结构不清晰等,因此这里推荐通过dcm2bids的公开代码包来实现转换,这一方式的优势在于转换之后的文件层级清晰,并且可以实现批处理,批处理不会出现问题,而且不需要对dicom进行整理

rawdir=('');/输入文件夹
subname='';/被试ID
jsondir='';/json文件的地址
bids_helper_o='';/输出文件夹


cmd_bids=['dcm2bids -d ' rawdir ...
        ' -p ' subname ' -c ' jsondir...
        ' -o ' bids_helper_o ' -s ses-1'];
system(cmd_bids);

# -d dicom文件所在文件夹
# -p 样本id,每次只识别1个ID
# -c dcm2bids_config.json文件
# -o 输出文件夹
# -s 将生成的文件归类到ses-1文件夹中
dcm2bids细节

1.dcm2bids_config文件编写

这一文件的作用是在命令将dicom文件转换为nii文件之后,通过访问Nii文件的json文件中的信息,来实现nii文件的自动分类存放。

//dcm2bids_config.json文件示例。具体编写规则请相关教程。
//(注:由于有的json文件的规范是不支持注释的,
//在生成该文件时,为防止出错,请删除文中所有注释。)
//以下为3.1.1版本的dcm2bids的json文件

{
  
  "descriptions": [
        {
            "id":"id_task-task207",
            "datatype": "func",
            "suffix": "bold",
            "custom_entities": "task-task207",
            "criteria": {
                "SeriesDescription": "",
                "ImageType": []
            }
        },
        {
            "datatype": "anat",
            "suffix": "T1w",
            "criteria": {
                "SeriesDescription": "",
                "EchoTime": 
            }
          
        },
        {
            "datatype": "fmap",
            "suffix": "magnitude1",
            "EchoTime": ,
       
            "criteria": {
                "SidecarFilename": "",
                "ImageType": []
                },
            "sidecar_changes" :{
                    "IntendedFor": ["id_task-task207"]
                }
        	},
            {
            "datatype": "fmap",
            "suffix": "magnitude2",
            "EchoTime": ,
            "criteria": {
                "SidecarFilename": "",
                "ImageType": []

                },
            "sidecar_changes" :{
                    "IntendedFor": ["id_task-task207"]
                }
            },
            {
                "datatype": "fmap",
                "suffix": "phasediff",
                "EchoTime1": ,
                "EchoTime2": ,
            
                "criteria": {
                    "SidecarFilename": "",
                    "ImageType": []
                      },
            "sidecar_changes" :{
                    "IntendedFor": ["id_task-task207"]
                }
                },
            {
            "datatype": "dwi",
            "suffix": "dwi",
            "criteria": {
                "SeriesDescription": ""
            }
        }
    ]
}

2.检查

①检查名称是否正确,如果有多余的run需要手动删除

②phase和magnitude的"intendedFor",intendedFor中只有func中留下的文件

3.引用要求

Introduction - Brain Imaging Data Structure v1.9.0

4.帮助文档

dcm2bids documentation

nii文件介绍

NIfTI-1(Neuroimaging Informatics Technology Initiative)文件格式,通常保存为.nii.nii.gz,是MRI数据分析中通用的一种文件格式。

nii文件中存储了头文件.hdr和数据文件.img两部分信息.

---头文件:包含了描述图像数据的元数据,如图像的维度、体素尺寸、数据类型、图像方向、时间序列信息等。头文件对于理解数据的空间和时间属性非常关键。

---图像数据:紧随头文件之后,包含了实际的成像数据。这些数据可以是任何维度的,通常是三维(单一时间点)或四维(包含时间序列的数据)。

nii读取同样有很多种方式,下面列举几个本人常用的函数

///matlab自带函数
% 读取NIfTI文件
nii = niftiread('path/to/your/file.nii');
%结果是224*320*320的uint16

% 获取头文件信息
info = niftiinfo('path/to/your/file.nii');
%结果是一个结构文件

//Loads nifti header and volume. The volume is stored
  in hdr.vol. Columns and rows are not swapped.
nii=load_nifti('');

待补充……

  • 35
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值