7 while [[ $(jobs -p | wc -l) -ge $1 ]]; do
15 echo "$image_name -> Extracting patient..."
16 clitkExtractPatient -i $image_name -o $mask_dir_tmp/patient_$image_name --noAutoCrop -a $afdb_name $ExtractPatientExtra
17 clitkBinarizeImage -i $mask_dir_tmp/patient_$image_name -o $mask_dir_tmp/patient_$image_name -l 1 -u 1 --mode=BG
18 clitkSetBackground -i $image_name -o $mask_dir_tmp/patient_only_$image_name --mask $mask_dir_tmp/patient_$image_name --outsideValue -1000
23 if [ x = x$ExtractBonesLower1 ]; then
24 ExtractBonesLower1=120
26 if [ x = x$ExtractBonesLower2 ]; then
29 echo "$image_name -> Extracting bones..."
30 clitkImageConvert -i $image_name -o $mask_dir_tmp/float_$image_name -t float
31 #clitkExtractBones -i $mask_dir_tmp/float_$image_name -o $mask_dir_tmp/bones_$image_name --lower1 120 --upper1 2000 --lower2 70 --upper2 2000 --smooth --time 0.0625 --noAutoCrop
32 clitkExtractBones -i $mask_dir_tmp/float_$image_name -o $mask_dir_tmp/bones_$image_name -a $afdb_name --lower1 $ExtractBonesLower1 --upper1 2000 --lower2 $ExtractBonesLower2 --upper2 2000 --smooth --time 0.0625 --noAutoCrop
33 #clitkMorphoMath -i $mask_dir_tmp/bones_$image_name -o $mask_dir_tmp/bones_$image_name --type 2 --radius 4,4,2
38 echo "$image_name -> Extracting lungs..."
39 clitkExtractLung -i $image_name -o $mask_dir_tmp/lungs_$image_name -a $afdb_name --noAutoCrop
44 echo "$image_name -> Resampling..."
45 clitkResampleImage -i $mask_dir_tmp/patient_$image_name -o $mask_dir_tmp/patient_$image_name --spacing $resample_spacing --interp $resample_algo
46 clitkResampleImage -i $mask_dir_tmp/patient_only_$image_name -o $mask_dir_tmp/patient_only_$image_name --spacing $resample_spacing --interp $resample_algo
47 clitkResampleImage -i $mask_dir_tmp/bones_$image_name -o $mask_dir_tmp/bones_$image_name --like $mask_dir_tmp/patient_only_$image_name --interp $resample_algo
48 clitkResampleImage -i $mask_dir_tmp/lungs_$image_name -o $mask_dir_tmp/lungs_$image_name --like $mask_dir_tmp/patient_only_$image_name
53 if [ x = x$MotionMaskOffsetDetect ]; then
54 MotionMaskOffsetDetect="0,-5,0"
56 if [ x = x$FillingLevel ]; then
59 clitkMotionMask -i $mask_dir_tmp/patient_only_$image_name -o $mask_dir_tmp/mm_$image_name --featureBones=$mask_dir_tmp/bones_$image_name --featureLungs=$mask_dir_tmp/lungs_$image_name --upperThresholdLungs -400 --fillingLevel $FillingLevel --offsetDetect 0,-5,0 --pad --writeFeature=$mask_dir_tmp/feature_$image_name $MotionMaskExtra --monitor=$mask_dir_tmp/monitor_$image_name
64 echo "$image_name -> Setting Background..."
65 clitkSetBackground -i $mask_dir_tmp/patient_only_$image_name -o $mask_dir_tmp/inside_$image_name --mask $mask_dir_tmp/mm_$image_name --outsideValue -1200
66 clitkSetBackground -i $mask_dir_tmp/patient_only_$image_name -o $mask_dir_tmp/outside_$image_name --mask $mask_dir_tmp/mm_$image_name --outsideValue -1200 --fg
69 create_registration_masks()
71 echo "$image_name -> Creating registration masks..."
72 clitkMorphoMath -i $mask_dir_tmp/mm_$image_name -o $mask_dir_tmp/regmask_in_$image_name --type 1 --radius 8
73 clitkExtractPatient -i $mask_dir_tmp/outside_$image_name -o $mask_dir_tmp/regmask_out_$image_name --noAutoCrop
74 clitkMorphoMath -i $mask_dir_tmp/regmask_out_$image_name -o $mask_dir_tmp/regmask_out_$image_name --type 1 --radius 8
79 echo "Removing temporary files..."
80 image_name_base=`echo $image_name | sed 's/mhd//'`
83 #rm $mask_dir_tmp/float_$image_name_base*
86 #rm $mask_dir_tmp/bones_$image_name_base*
89 #rm $mask_dir_tmp/patient_only_$image_name_base*
108 create_registration_masks
117 echo "$image_name -> Computing motion mask..."
118 compute_motion_mask >> $mask_log_dir/motion_mask_$image_name.log
122 create_registration_masks
127 #set cmd line variables
129 phases=`grep ".raw" $1`
130 echo "mask phases -> " $phases
139 #set other global variables
140 mask_dir="MASK-$resample_spacing""mm""-$resample_algo"
141 mask_dir_tmp="tmp."$mask_dir
144 echo "------------ Motion mask from create_midP_masks.sh ------------"
149 # the motion masks are first created in a tmp directory. this directory is
150 # later going to be renamed to the final motion mask directory. concurrent
151 # executions trying to create the same set of masks will be blocked until
152 # the first execution finishes. naturally, these other executions will not
153 # recreate the masks. so first we try to create the tmp directory.
154 # if the creation fails, it means that another execution is
155 # already creating the masks, so this execution will be blocked. the
156 # execution is unblocked only when the creation of masks is finished and
157 # the mask directory is renamed.
159 # ATTENTION: RP - 08/02/2011
160 # robustness issue: tmp directory may exist but may be empty or
161 # incomplete. the solution is to check per file, but I'll leave it like
162 # this for the moment.
164 if [ $(ls -d $mask_dir 2> /dev/null | wc -l) -eq 0 ]; then
165 mkdir $mask_dir_tmp 2> /dev/null
167 if [ $return_mkdir == 0 ]; then
170 while [[ $(ls -d $mask_dir 2> /dev/null | wc -l) -eq 0 ]]; do
171 echo "waiting creation of motion masks..."
174 echo "finished waiting"
183 # multi-threaded pre-processing for motion mask calcs
184 if [ $do_mm == 1 ]; then
185 mask_log_dir=$mask_dir_tmp/LOG
186 mkdir -p $mask_log_dir
190 image_name=`echo $phase | sed 's/raw/mhd/'`
191 afdb_name=`echo $phase | sed 's/raw/afdb/'`
192 check_threads $MAX_THREADS
196 # single-threaded motion mask calc
199 image_name=`echo $phase | sed 's/raw/mhd/'`
202 echo "$image_name -> Computing motion mask..."
203 compute_motion_mask >> $mask_log_dir/motion_mask_$image_name.log
207 # multi-threaded post-processing of motion mask calcs
210 image_name=`echo $phase | sed 's/raw/mhd/'`
211 if [ $do_mm = 1 ]; then
212 check_threads $MAX_THREADS
216 regmask_in_list="$regmask_in_list regmask_in_$image_name"
217 regmask_out_list="$regmask_out_list regmask_out_$image_name"
218 reg_in_list="$reg_in_list inside_$image_name"
219 reg_out_list="$reg_out_list outside_$image_name"
222 # rename tmp mask directory after mask creation
224 mv $mask_dir_tmp $mask_dir
229 echo "-------- Motion mask done ! ---------"
242 echo "Usage: create_midP_masks.sh 4D_CT.mhd resample_spacing resample_algorithm"
247 # variables exported in this scope
249 # mask_dir: directory where all mask are kept
250 # regmask_in_list: list of registration mask files (inside lungs)
251 # regmask_out_list: list of registration mask files (outised lungs)
252 # reg_in_list: list of registration image files (inside lungs)
253 # reg_out_list: list of registration image files (outside lungs)
256 # import variables specific to each patient
259 if [ $1 != "using-as-lib" ]; then