Radi_tech’s blog

Radiological technologist in Japan / MRI / AI / Deep learning / MATLAB / R / Python

【MATLAB】複数症例の画像を一括処理

画像解析において、複数の症例の複数枚の画像を一括で処理したい場面は多い。

ex) 症例 001-010のMRI画像、それぞれ20枚ずつなど

for文で連続処理をするcode


手順

  • Main folderを定義
  • 内部のフォルダをセル型で一覧(リスト化でも可能)
  • 内部フォルダ毎にファイルをセル型で一覧(リスト化でも可能)
  • ファイルのリストでfor文で処理を実行
  • MATLAB ライブエディタを想定


フォルダの構造は↓↓↓↓の感じ
MATLAB, for文, MRI

% 症例が入っている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