画像解析において、複数の症例の複数枚の画像を一括で処理したい場面は多い。
ex) 症例 001-010のMRI画像、それぞれ20枚ずつなど
for文で連続処理をするcode
手順
- Main folderを定義
- 内部のフォルダをセル型で一覧(リスト化でも可能)
- 内部フォルダ毎にファイルをセル型で一覧(リスト化でも可能)
- ファイルのリストでfor文で処理を実行
- MATLAB ライブエディタを想定
フォルダの構造は↓↓↓↓の感じ
% 症例が入っているMainのfoldを指定 MR_main_fd= uigetdir(); MR_fd=dir(MR_main_fd); %隠しファイルを読み込まない様に処理 MR_fd=MR_fd(~ismember({MR_fd.name}, {'.','..','.DS_Store','._.DS_Store'})); MR_fd=MR_fd([MR_fd(:).isdir]); %Cell型へ変換 MR_fd={MR_fd.name}
とりえあず、上記で処理する各フォルダを定義できる。
つづいて、
for x= 1:length(MR_fd) %DICOM fileを一覧で得る。他の拡張子の場合 ’*.dcm’をjpgなどへ変更すればOK %前述の処理で得たフォルダ名をfullfileでくっつけてpath作成 → dir()でlistを得る MR_dcm_list= dir(fullfile(MR_main_fd, MR_fd{x}, '*.dcm')); %↑↑隠しファイルがある場合は、処理が必要 %↓↓ファイルのリストでfor文 for y= 1:length(MR_dcm_list) %file pathを定義 MR_dcm_fl= fullfile(MR_main_fd, MR_fd{x},MR_dcm_list(y).name %これでファイル毎のpathができるので、下に処理を書いて行けばOK end end