matlabでDICOM画像をグレースケール画像に変換するにはどうすればよいですか?
ありがとう。
あなたが話している特定の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');
アップデート
im2uint8
お使いのバージョンの Matlab にまたはがない場合、DICOM 画像が常にDICOM 画像をより管理しやすい形式に変換するための迅速な回避策であるim2double
と仮定すると、次のようになります。uin16
% 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(:));