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.帮助文档
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('');
待补充……