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 echo "$image_name -> Extracting bones..."
27 clitkImageConvert -i $image_name -o $mask_dir_tmp/float_$image_name -t float
28 #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
29 clitkExtractBones -i $mask_dir_tmp/float_$image_name -o $mask_dir_tmp/bones_$image_name -a $afdb_name --lower1 $ExtractBonesLower1 --upper1 2000 --lower2 80 --upper2 2000 --smooth --time 0.0625 --noAutoCrop
30 #clitkMorphoMath -i $mask_dir_tmp/bones_$image_name -o $mask_dir_tmp/bones_$image_name --type 2 --radius 4,4,2
35 echo "$image_name -> Extracting lungs..."
36 clitkExtractLung -i $image_name -o $mask_dir_tmp/lungs_$image_name -a $afdb_name --noAutoCrop
41 echo "$image_name -> Resampling..."
42 clitkResampleImage -i $mask_dir_tmp/patient_$image_name -o $mask_dir_tmp/patient_$image_name --spacing $resample_spacing --interp $resample_algo
43 clitkResampleImage -i $mask_dir_tmp/patient_only_$image_name -o $mask_dir_tmp/patient_only_$image_name --spacing $resample_spacing --interp $resample_algo
44 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
45 clitkResampleImage -i $mask_dir_tmp/lungs_$image_name -o $mask_dir_tmp/lungs_$image_name --like $mask_dir_tmp/patient_only_$image_name
50 if [ x = x$MotionMaskOffsetDetect ]; then
51 MotionMaskOffsetDetect="0,-5,0"
53 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 94 --offsetDetect 0,-5,0 --pad --writeFeature=$mask_dir_tmp/feature_$image_name $MotionMaskExtra --monitor=$mask_dir_tmp/monitor_$image_name
58 echo "$image_name -> Setting Background..."
59 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
60 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
63 create_registration_masks()
65 echo "$image_name -> Creating registration masks..."
66 clitkMorphoMath -i $mask_dir_tmp/mm_$image_name -o $mask_dir_tmp/regmask_in_$image_name --type 1 --radius 8
67 clitkExtractPatient -i $mask_dir_tmp/outside_$image_name -o $mask_dir_tmp/regmask_out_$image_name --noAutoCrop
68 clitkMorphoMath -i $mask_dir_tmp/regmask_out_$image_name -o $mask_dir_tmp/regmask_out_$image_name --type 1 --radius 8
73 echo "Removing temporary files..."
74 image_name_base=`echo $image_name | sed 's/mhd//'`
77 #rm $mask_dir_tmp/float_$image_name_base*
80 #rm $mask_dir_tmp/bones_$image_name_base*
83 #rm $mask_dir_tmp/patient_only_$image_name_base*
102 create_registration_masks
111 echo "$image_name -> Computing motion mask..."
112 compute_motion_mask >> $mask_log_dir/motion_mask_$image_name.log
116 create_registration_masks
121 #set cmd line variables
123 phases=`grep ".raw" $1`
124 echo "mask phases -> " $phases
133 #set other global variables
134 mask_dir="MASK-$resample_spacing""mm""-$resample_algo"
135 mask_dir_tmp="tmp."$mask_dir
138 echo "------------ Motion mask from create_midP_masks.sh ------------"
143 # the motion masks are first created in a tmp directory. this directory is
144 # later going to be renamed to the final motion mask directory. concurrent
145 # executions trying to create the same set of masks will be blocked until
146 # the first execution finishes. naturally, these other executions will not
147 # recreate the masks. so first we try to create the tmp directory.
148 # if the creation fails, it means that another execution is
149 # already creating the masks, so this execution will be blocked. the
150 # execution is unblocked only when the creation of masks is finished and
151 # the mask directory is renamed.
153 # ATTENTION: RP - 08/02/2011
154 # robustness issue: tmp directory may exist but may be empty or
155 # incomplete. the solution is to check per file, but I'll leave it like
156 # this for the moment.
158 if [ $(ls -d $mask_dir 2> /dev/null | wc -l) -eq 0 ]; then
159 mkdir $mask_dir_tmp 2> /dev/null
161 if [ $return_mkdir == 0 ]; then
164 while [[ $(ls -d $mask_dir 2> /dev/null | wc -l) -eq 0 ]]; do
165 echo "waiting creation of motion masks..."
168 echo "finished waiting"
177 # multi-threaded pre-processing for motion mask calcs
178 if [ $do_mm == 1 ]; then
179 mask_log_dir=$mask_dir_tmp/LOG
180 mkdir -p $mask_log_dir
184 image_name=`echo $phase | sed 's/raw/mhd/'`
185 afdb_name=`echo $phase | sed 's/raw/afdb/'`
186 check_threads $MAX_THREADS
190 # single-threaded motion mask calc
193 image_name=`echo $phase | sed 's/raw/mhd/'`
196 echo "$image_name -> Computing motion mask..."
197 compute_motion_mask >> $mask_log_dir/motion_mask_$image_name.log
201 # multi-threaded post-processing of motion mask calcs
204 image_name=`echo $phase | sed 's/raw/mhd/'`
205 if [ $do_mm = 1 ]; then
206 check_threads $MAX_THREADS
210 regmask_in_list="$regmask_in_list regmask_in_$image_name"
211 regmask_out_list="$regmask_out_list regmask_out_$image_name"
212 reg_in_list="$reg_in_list inside_$image_name"
213 reg_out_list="$reg_out_list outside_$image_name"
216 # rename tmp mask directory after mask creation
218 mv $mask_dir_tmp $mask_dir
223 echo "-------- Motion mask done ! ---------"
236 echo "Usage: create_midP_masks.sh 4D_CT.mhd resample_spacing resample_algorithm"
241 # variables exported in this scope
243 # mask_dir: directory where all mask are kept
244 # regmask_in_list: list of registration mask files (inside lungs)
245 # regmask_out_list: list of registration mask files (outised lungs)
246 # reg_in_list: list of registration image files (inside lungs)
247 # reg_out_list: list of registration image files (outside lungs)
250 # import variables specific to each patient
253 if [ $1 != "using-as-lib" ]; then