下の階層にある大量の​フォルダ内にあるdi​comファイルを読み​込んで、1つのmat​ファイルに保存したい​です。

2 Ansichten (letzte 30 Tage)
秋葉
秋葉 am 12 Nov. 2022
Kommentiert: 秋葉 am 18 Nov. 2022
プログラミング初心者です。
myfolderの中の複数のフォルダにある大量のdicomファイルを全て読み込んで、1つのmatファイルにまとめるため以下のようなスクリプトを書いたのですが、「dicomファイルが読み込めません」というエラーが出てきてしまします。
どのようにスクリプトを変えればよいかご教授いただけますと幸いです。
% path to files
pname = '/Volumes/SSD/myfolder/*/'; %
%%
list_dicom = dir([pname,'*.dcm']);
gg=size(list_dicom,1); % N of slices
for j = 1:gg
data(:,:,j) = dicomread([pname,list_dicom(j).name]);
end
save([pname,'all_data.mat'],'data');

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 12 Nov. 2022
> どのようにスクリプトを変えればよいかご教授いただけますと幸いです。
  • ワイルドカードを含むパス名やファイル名は、dir 関数には通用しますが dicomread 関数には通用しません
  • dicomファイルは複数フォルダに散在するのに対し、matファイルをどこに保存するか不明確です
以上の問題点を解消する為、下記の通り変更しました。
  • dicomread 関数はワイルドカードを認識しないので、絶対パス(フォルダ名+区切り文字+ファイル名)を指定
  • save 関数によるmatファイルの保存先を特定 (区切り文字には filesep を使用しています)
% path to files
pname = '/Volumes/SSD/myfolder/*/'; %
%%
list_dicom = dir([pname,'*.dcm']);
gg=size(list_dicom,1); % N of slices
for j = 1:gg
data(:,:,j) = dicomread([list_dicom(j).folder,filesep,list_dicom(j).name]); % ここを変更
end
save(['/Volumes/SSD/myfolder',filesep,'all_data.mat'],'data'); % ここを変更
  3 Kommentare
Atsushi Ueno
Atsushi Ueno am 12 Nov. 2022
data{j} = dicomread([list_dicom(j).folder,filesep,list_dicom(j).name]);
%%%%↑ ↑ ここを変更
複数のイメージを重ねて一つの3次元行列にするには、イメージデータのサイズ(画像の大きさ)が一致している必要があります。dataを行列からセル配列に変更する事を検討してください。
秋葉
秋葉 am 18 Nov. 2022
返信遅くなってしまいました。
無事実行できました。ありがとうございました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!