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

2 visualizaciones (últimos 30 días)
秋葉
秋葉 el 12 de Nov. de 2022
Comentada: 秋葉 el 18 de Nov. de 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');

Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 12 de Nov. de 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 comentarios
Atsushi Ueno
Atsushi Ueno el 12 de Nov. de 2022
data{j} = dicomread([list_dicom(j).folder,filesep,list_dicom(j).name]);
%%%%↑ ↑ ここを変更
複数のイメージを重ねて一つの3次元行列にするには、イメージデータのサイズ(画像の大きさ)が一致している必要があります。dataを行列からセル配列に変更する事を検討してください。
秋葉
秋葉 el 18 de Nov. de 2022
返信遅くなってしまいました。
無事実行できました。ありがとうございました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Convert Image Type en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!