0

これは、dicom画像のピクセルを変更しようとしているmatlabデータです。

dicom 画像は 4D、Rgb 画像は 3D、その他の次元はフレームを表します。各フレームを取得し、いくつかの特定のピクセル値を変更し、それらを生の形式で dicom イメージ データ全体を保存しようとします。

raw形式で保存している理由は、このデータをdcmtkのdcmodifyコマンドでファイルとして使いたいからです。最初の質問は、生データを正しい形式で保存していますか? そうでない場合は、どうすればよいか教えてください。また、dcmodify コマンド dcmtk はこの場合のように 4d データを処理できるのか、それとも 1 つのフレームしか変更できないのか知っていますか? ありがとう。

clc
clear all
close all
img=dicomread('Bad001_2CH_01_anon.dcm');
%%implay(img);
[rows,columns,colors,frames]=size(img);
for i=1:frames
    img(1:25,:,:,i)=0;
    disp(i);
    figure(1)
    imshow(img(:,:,:,i))
end
fid=fopen('image.raw','w+');
cnt=fwrite(fid,img,'uint8');
fclose(fid);
4

2 に答える 2

0

dmtk を使用するのに生データは必要ありません: " dcmodify は、DICOM ファイル内のタグとアイテムを変更、挿入、および削除できるツールです。 "

さらに、プログラムが情報を読み取らなければならないときに、そこに何があり、どのように保存されているかを示すファイル内の一部のメタデータが非常に役立つため、生データは非常に少数の特定の状況で望ましいものです。

私は dmkt を使ったことはありませんが、dicomread でデータを読み取り (あなたと同じように)、それを変更し (あなたと同じように)、dicomwriteで再び DICOM として保存する必要があると思います。

メタデータを DICOM に保持するには、 dicominfoを使用してメタデータを抽出する必要もあります。これにより、ファイルを保存するときに元に戻すことができます。

img = dicomread('originalfile.dcm');
metadata = dicominfo('originalfile.dcm');

% do something with the img

% save altered DICOM with metadata
dicomwrite(img, 'processedFile.dcm', metadata, 'CreateMode', 'copy');

次に、次のように呼び出すことができます。

dcmodify [options] writtenDicomFile

ここで、writtenDicomFileはファイルの保存に使用した名前で、 [options] はファイルの変更方法を指定します。

于 2013-02-21T14:14:16.423 に答える
0

本当にやりたいことによっては、gdcmimggdcmrawを確認することをお勧めします。

于 2013-02-27T15:34:53.890 に答える