在 MATLAB 中显示 DICOM 图像

DICOM images display in MATLAB

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

存储它时
dicomread()

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

imshow(x)

只有 ,所以它看起来像这样(原始形状)

不是这样的

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

接下来我开发了肺面罩:

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

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

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

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

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

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

一种方法是使用 mat2gray 函数:

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

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