2.Brains Crack/SPM8 Batch/PreProcessing

Top > 2.Brains Crack > SPM8 Batch > PreProcessing

DICOM Batch import

DICOM形式のデータをNIfTY形式に一括で変換するためのコード.

ディレクトリは3階層で,その下に*.dcmがあることを想定.例えば,main directoryの下に実験参加者毎のdirがあり,さらにその下にsession毎のdirがあって,その中に*.dcmが入っていると想定している.このスクリプトファイルはmain directoryにおいて走らせるする.

conver というoutput directoryが生成され,その中のdirectoryの階層構造は同じ.*.hdr, *.imgが入る.

clear all;
dir_current = pwd;
dir_dicom = dir(dir_current);

% Initialise SPM
spm('Defaults','fMRI');
spm_jobman('initcfg');
 
n_dir_tmp = length(dir_dicom);
for rep_dir_tmp = 3:n_dir_tmp %ignore 1:2, 
	                 %   bcz dir_dicom(1).name is '.'; dir_dicom(2).name is '..'.
	clear matlabbatch dcm_files dir_convert dir_dicom2
	
	if dir_dicom(rep_dir_tmp).isdir == 1 % for excluding file. isdir - 1, directory;  2, file. 
		name_dir1 = dir_dicom(rep_dir_tmp).name;
		dir_dicom2 = dir(name_dir1);
		
		n_dir_tmp2 = length(dir_dicom2);
		for rep_dir_tmp2 = 3:n_dir_tmp2
			if dir_dicom2(rep_dir_tmp2).isdir == 1
				name_dir2 = dir_dicom2(rep_dir_tmp2).name;
				
				dir_tmp = [dir_current, '/', name_dir1, '/', name_dir2];
				dcm_files = spm_select('FPList', dir_tmp, '^*.dcm$');
				
				name_dir_convert = '_convert';
				dir_convert = [dir_current, '/convert/', name_dir1, '/', name_dir2, '/'];
				mkdir(dir_convert)
				
				% - SPM  ------------------------------------------------
				matlabbatch{1}.spm.util.dicom.data = cellstr(dcm_files);
				matlabbatch{1}.spm.util.dicom.root = 'flat';
				matlabbatch{1}.spm.util.dicom.outdir = cellstr(dir_convert);
				matlabbatch{1}.spm.util.dicom.convopts.format = 'img';
				matlabbatch{1}.spm.util.dicom.convopts.icedims = 0;
				
				spm_jobman('run', matlabbatch);
				% ---------------------------------------------------------
			end
		end
	end
end

Pre-Processing|前処理

最終更新日: 2014-11-21 (金) 16:14:10 (1705d)

 

TOP