如何在matlab中将DICOM图像转换为灰度图像?
感谢。
答案 0 :(得分: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版本没有im2uint8
或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(:));