概述
matlab的图像处理工具箱(image processing toolbox)自带了读取医学图像DICOM文件的函数dicomread、dicominfo等,如果MRI影像数据的扫描参数丢失(本文以Slice order为例),可以使用dicominfo函数来获取MRI影像的头文件,从而读取到扫描参数。
在图像处理工具箱中,涉及DICOM图像处理的matlab函数主要有以下12个
今天主要介绍dicominfo、dicomread、dicomdisp
dicominfo
info = dicominfo(filename)
filename 指定的某一个DICOM文件全名
以西门子的机器为例,filename应该是一个后缀为IMA的DICOM文件
该函数负责把DICOM文件的header读进变量info里,以结构体的形式存储。
DICOM文件的header又称作metadata,里面基本存放了所有的扫描参数,当扫描参数记录丢失时,可以用这种方法重新找回扫描参数。
dicominfo的输出通常包含148个字段,如下图
其中包含很多命名具有明确意义的字段,这些字段表示了DICOM文件的基础信息和一部分扫描参数,例如FileSize表示文件大小,ImageType表示图像格式等等
而另一部分扫描参数通常在一系列名为“Private_00******”的字段内,如下图
在做MRI数据预处理时,我们需要知道很多扫描参数,例如做Slice Timing时需要知道slice number和slice order,以此为例,dicominfo输出的info变量中,slice order信息存储在一个命名为“Private_00**”的字段内(每个DICOM文件的具体字段名称可能不一样)。要想找到Slice order也很简单,只需观察“Private_00**_”字段中,那些存储着double类型的字段即可。通常的Slice number一般是32、33、34,只需找到Slice number*1的double类型变量,如上图中的Private_0019_1029字段,也就找到slice order了。
打开这一字段后,里面的数值大小就表示着每一层对应的扫描时间
以西门子的机器为例,当slice number为偶数时,先扫偶数层再扫奇数层,即2、4、6、8、10……34、1、3、5、7、9……33。由上图所示的变量内容也可以轻松推断出slice order
dicomdisp
使用dicomdisp函数可以在命令行窗口显示出DICOM文件的header
dicomdisp(filename)
dicomread
这个函数用于读取指定的DICOM文件
X = dicomread(filename)
它可以直接以DICOM文件名为输入
info = dicominfo(filename)
X = dicomread(info)
也可以拿dicominfo函数的输出来作为dicomread的输入
X以一个uint16的矩阵来存储DICOM图像
使用下面这条语句可以显示读入的DICOM图像
imshow(X,'DisplayRange',[]);
最后
以上就是无情大米为你收集整理的使用matlab读取MRI影像的DICOM文件&header的全部内容,希望文章能够帮你解决使用matlab读取MRI影像的DICOM文件&header所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复