0

matlab中如何将DICOM图像转换为灰度图像?

谢谢。

4

1 回答 1

3

我不确定您所谈论的特定 DICOM 图像不是灰度的。以下代码演示了如何读取和显示 DICOM 图像:

im = dicomread('sample.dcm'); % im will usually be of type uint16, already in grayscale
imshow(im, []);

如果您想要 uint8 灰度图像,请使用:

im2 = im2uint8(im);

但是,为了尽可能保持精度,最好这样做:

im2 = im2double(im);

要仅在显示图像时临时拉伸限制,请使用:

imshow(im2, []);

要永久拉伸限制(仅用于可视化而不用于分析),请使用:

% im3 elements will be between 0 and 255 (uint8) or 0 and 1 (double)
im3 = imadjust(im2, stretchlim(im2, 0), []); 
imshow(im3);

要将灰度图像写入 jpg 或 png,请使用:

imwrite(im3, 'sample.png');

更新

如果您的 Matlab 版本没有im2uint8or im2double,假设您的 DICOM 图像始终uin16是将 DICOM 图像转换为更易于管理的格式的快速解决方法,则为:

% convert uint16 values to double values
% im = double(im);
% keep the current relative intensity levels for analysis
% involving real values of intensity
im2 = im/2^16
% if displaying, create a new image with limits stretched to maximum 
% for visualization purposes. do not use this image for
% calculations involving intensity value.
im3 = im/(max(im(:));
于 2013-05-19T03:27:05.567 回答