【问题标题】:DICOM images display in MATLABDICOM 图像在 MATLAB 中显示
【发布时间】:2018-02-24 17:31:28
【问题描述】:

我正在处理扩展名为 dcom 的 CT 图像。我的问题是,当我使用

存储它时
dicomread()

我必须使用 imshow() 中的 '[]' 才能正确查看。我需要将它存储在变量 x 中,当我查看它时,我使用

imshow(x)

only ,使其看起来像这样(原始形状)

不是这样的

换句话说,我需要将 imshow(image,[]) 对图像所做的调整存储到新图像 x 中以供进一步处理。 我想这样做是因为当我稍后使用图像时,由于覆盖图像的灰色,它会给我错误的结果。 编辑:这是显示我的问题的进一步解释。我想用强度值提取肺部的“内容”。由于我上面提到的问题,我使用直方图均衡来获得下图:

接下来我开发了肺面罩:

使用这个遮罩,我试图获得我之前提到的肺部原始值,但是由于覆盖图像的灰色,肺部内容物消失了:

即使我使用 imshow(segmentedimage,[]) 查看这个分段图像,它也会像这样显示:

对于需要该文件的任何人,这里是:

https://drive.google.com/file/d/1_mUVL9KNV3MTRk_kj5kiNOlEyGsrNr10/view?usp=sharing

【问题讨论】:

  • CT 具有特定组织类型(密度)的特定灰度值。使用直方图均衡化或如下建议的标准化会破坏这种关系。您最好使用已知的灰度值来提取感兴趣的组织。

标签: image matlab digital


【解决方案1】:

imshow(X,[]) 所做的只是将显示范围缩放到您的数据范围。在 DCM 图像中,通常会出现数据范围仅为 12 位,而数据类型范围为 16 位(例如 int16)的情况。

要解决此问题,您需要做的就是重新调整数据。

一种方法是使用 mat2gray 函数:

I = mat2gray(X);
imshow(I);

这会将您的数据标准化为范围 [0,1] 作为双精度浮点结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多