Matlab版本:2020a
一、dicomread函数
Matlab读取dcm图像的函数是dicomread,根据dicomread的帮助文档,该函数有四种参数输入方式:
- X = dicomread(filename); % 根据文件名直接读取
- X = dicomread(info); % 根据构造的info结构体读取
- X = dicomread(___,‘frames’,f); % 仅从图像中读取 f 指定的帧
- X = dicomread(___,Name,Value); % 使用 Name,Value 对组读取 DICOM 图像数据来配置解析器
这里主要介绍的是前两种方式,后两种只是在前两种方式的基础上添加的参数限定,这里不展开讨论。
下面以Matlab内置的CT-MONO2-16-ankle.dcm文件为例,介绍这两种方式
1.根据文件名直接读取
filename='C:\Program Files\Polyspace\R2020a\toolbox\images\imdata\CT-MONO2-16-ankle.dcm'; % dcm文件路径+文件名
imgTest01=dicomread(filename);
figure(1),imshow(imgTest01,[]);% 以默认窗显示图像
2.根据info结构体读取
filename='C:\Program Files\Polyspace\R2020a\toolbox\images\imdata\CT-MONO2-16-ankle.dcm'; % dcm文件路径+文件名
Dinfo=dicominfo(filename); % 用dicominfo函数读取文件信息
imgTest02=dicomread(Dinfo);
figure(2),imshow(imgTest02,[]);% 以默认窗显示图像
二、CT值失真的问题处理
上面两种方式读取的图像的灰度值都是一致的,显示的结果如下
一般空气部分的CT值在-1000左右,这里显示的值是大于0的。因此我们不能把图像的灰度值直接当作CT值,这里需要info结构体中的信息进行转换。
imgTest03=imgTest02*Dinfo.RescaleSlope+Dinfo.RescaleIntercept;
figure(3),imshow(imgTest03,[]);% 以默认窗显示图像
经过上述转换后,图像的灰度值便是正常的CT值了。