【Matlab】Matlab读取dcm图像的函数以及CT值失真的问题处理

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值失真的问题处理

上面两种方式读取的图像的灰度值都是一致的,显示的结果如下
Matlab直接读取的图像imgTest01和imgTest02
一般空气部分的CT值在-1000左右,这里显示的值是大于0的。因此我们不能把图像的灰度值直接当作CT值,这里需要info结构体中的信息进行转换。

imgTest03=imgTest02*Dinfo.RescaleSlope+Dinfo.RescaleIntercept;
figure(3),imshow(imgTest03,[]);% 以默认窗显示图像

经过灰度转换的imgTest03
经过上述转换后,图像的灰度值便是正常的CT值了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值