X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=scripts%2Fcreate_midP-2.0.sh;h=8830a1bc7dacf8cccc272103d4bddcd798b2caf6;hb=3fd15028ab81e6746d3af96695526d7d973a26c8;hp=3b943d38657eeef452294836b7cfbefa007093cd;hpb=0c74b91a2df4c56e7130589f1ede54650211db92;p=clitk.git diff --git a/scripts/create_midP-2.0.sh b/scripts/create_midP-2.0.sh index 3b943d3..8830a1b 100755 --- a/scripts/create_midP-2.0.sh +++ b/scripts/create_midP-2.0.sh @@ -19,7 +19,7 @@ ######################### includes -source `dirname $0`/create_midP_masks-2.0.sh using-as-lib 2 nn +source `dirname $0`/create_midP_masks-2.0.sh using-as-lib source `dirname $0`/registration.sh source `dirname $0`/midp_common.sh @@ -85,23 +85,26 @@ registration() registration_elastix $reference_out $target_out $mask_ref_out $mask_targ_out $vf_out $result_out $params $log_out fi - motion_mask=$mask_dir/mm_$phase_nb.mhd + motion_mask=$mask_dir/${mask_type}_$phase_nb.mhd # combine in and out results out_result=$output_dir/result_${ref_phase_nb}_$phase_nb.mhd - clitkCombineImage -i $result_in -j $result_out -m $motion_mask -o $out_result + # clitkCombineImage -i $result_in -j $result_out -m $motion_mask -o $out_result + combine_image $result_in $result_out $out_result $motion_mask abort_on_error registration $? clean_up_registration # combine in and out vf vf_result=$vf_dir/vf_${ref_phase_nb}_$phase_nb.mhd - clitkCombineImage -i $vf_in -j $vf_out -m $motion_mask -o $vf_result + #clitkCombineImage -i $vf_in -j $vf_out -m $motion_mask -o $vf_result + combine_image $vf_in $vf_out $vf_result $motion_mask abort_on_error registration $? clean_up_registration clitkZeroVF -i $vf_in -o vf_zero.mhd abort_on_error registration $? clean_up_registration patient_mask=$mask_dir/patient_mask_$phase_nb.mhd - clitkCombineImage -i $vf_result -j vf_zero.mhd -m $patient_mask -o $vf_result + #clitkCombineImage -i $vf_result -j vf_zero.mhd -m $patient_mask -o $vf_result + combine_image $vf_result vf_zero.mhd $vf_result $patient_mask abort_on_error registration $? clean_up_registration rm vf_zero.* @@ -119,11 +122,12 @@ registration() clitkZeroVF -i $vf_ref -o $vf_out abort_on_error registration $? clean_up_registration - motion_mask=$mask_dir/mm_${ref_phase_nb}.mhd + motion_mask=$mask_dir/${mask_type}_${ref_phase_nb}.mhd reference_in=$mask_dir/${banded}inside_${ref_phase_nb}.mhd reference_out=$mask_dir/${banded}outside_$ref_phase_nb.mhd out_result=$output_dir/result_${ref_phase_nb}_${ref_phase_nb}.mhd - clitkCombineImage -i $reference_in -j $reference_out -m $motion_mask -o $out_result + #clitkCombineImage -i $reference_in -j $reference_out -m $motion_mask -o $out_result + combine_image $reference_in $reference_out $out_result $motion_mask abort_on_error registration $? clean_up_registration # create 4D vf @@ -148,6 +152,77 @@ registration() echo } +registration_no_motion_mask() +{ + echo + echo "----------- Registration Without Motion Masks ------------" + start=`date` + echo "start: $start" + echo + + mkdir -p $vf_dir + mkdir -p $output_dir + + # banded images may be created as separate files, + # with the specified preffix, which is interesting for debugging. + # if blank, it means that the original images (those without bands) + # will be used (see create_midP_masks-2.0.sh for details). + banded="" + + # params read from conf file + use_coeffs=1 + params="$nb_iter $nb_samples $sampling_algo $nb_hist_bins $nb_levels $bspline_spacing $metric $optimizer $interpolator" + + # register all phases to the reference + for i in $( seq 0 $((${#phase_files[@]} - 1))); do + phase_file=${phase_files[$i]} + phase_nb=${phase_nbs[$i]} + + if [ "$phase_nb" != "$ref_phase_nb" ]; then + # params + reference=$mask_dir/patient_$ref_phase_nb.mhd + target=$mask_dir/patient_$phase_nb.mhd + mask_ref=$mask_dir/patient_mask_$ref_phase_nb.mhd + mask_targ=$mask_dir/patient_mask_$phase_nb.mhd + vf=$vf_dir/vf_${ref_phase_nb}_$phase_nb.mhd + result=$output_dir/result_${ref_phase_nb}_$phase_nb.mhd + log=$log_dir/log_${ref_phase_nb}_$phase_nb.log + if [ $use_coeffs = 1 ]; then + init_coeff=$coeff_in # empty at first iteration + coeff=$vf_dir/coeff_${ref_phase_nb}_$phase_nb.mhd + fi + + # registration + if [ "$method" == "blutdir" ]; then + registration_blutdir $reference $target $mask_ref $mask_targ $vf $result $params $log $coeff + elif [ "$method" == "elastix" ]; then + registration_elastix $reference $target $mask_ref $mask_targ $vf $result $params $log + fi + + # save for later... + vf_ref=$vf + fi + done + + clitkZeroVF -i $vf_ref -o $vf_dir/vf_${ref_phase_nb}_${ref_phase_nb}.mhd + + # create 4D vf + create_mhd_4D_pattern.sh $vf_dir/vf_${ref_phase_nb}_ + + # create 4D coeffs + create_mhd_4D_pattern.sh $vf_dir/coeff_${ref_phase_nb}_ _0 + + # create 4D result image + create_mhd_4D_pattern.sh $output_dir/result_${ref_phase_nb}_ + + echo + echo "-------- Registration done ! --------" + end=`date` + echo "start: $start" + echo "end: $end" + echo +} + midp() { echo @@ -164,7 +239,8 @@ midp() vf_midp=$midp_dir/vf_midp_$phase_nb.mhd midp=$midp_dir/midp_$phase_nb.mhd # average the vf's from reference phase to phase - clitkAverageTemporalDimension -i $vf_dir/vf_${ref_phase_nb}_4D.mhd -o $vf_midp + #clitkAverageTemporalDimension -i $vf_dir/vf_${ref_phase_nb}_4D.mhd -o $vf_midp + average_temporal_dimension $vf_dir/vf_${ref_phase_nb}_4D.mhd $vf_midp abort_on_error midp $? clean_up_midp # invert the vf (why?) @@ -207,7 +283,8 @@ midp() create_mhd_4D_pattern.sh $midp_dir/vf_midp_ echo "Calculating midp_avg.mhd..." - clitkAverageTemporalDimension -i $midp_dir/midp_4D.mhd -o $midp_dir/midp_avg.mhd + #clitkAverageTemporalDimension -i $midp_dir/midp_4D.mhd -o $midp_dir/midp_avg.mhd + average_temporal_dimension $midp_dir/midp_4D.mhd $midp_dir/midp_avg.mhd abort_on_error midp $? clean_up_midp echo "Calculating midp_med.mhd..." @@ -244,18 +321,14 @@ midp_in_out() coeff_midp_in=$midp_dir/coeff_inside_midp_$phase_nb.mhd coeff_midp_out=$midp_dir/coeff_outside_midp_$phase_nb.mhd # average the vf's from reference phase to phase - # clitkAverageTemporalDimension -i $vf_dir/vf_inside_${ref_phase_nb}_4D.mhd -o $vf_midp_in - clitkAverageTemporalDimension -i $vf_dir/coeff_inside_${ref_phase_nb}_4D_0.mhd -o $coeff_midp_in + average_temporal_dimension $vf_dir/coeff_inside_${ref_phase_nb}_4D_0.mhd $coeff_midp_in abort_on_error midp $? clean_up_midp - # clitkAverageTemporalDimension -i $vf_dir/vf_outside_${ref_phase_nb}_4D.mhd -o $vf_midp_out - clitkAverageTemporalDimension -i $vf_dir/coeff_outside_${ref_phase_nb}_4D_0.mhd -o $coeff_midp_out + average_temporal_dimension $vf_dir/coeff_outside_${ref_phase_nb}_4D_0.mhd $coeff_midp_out abort_on_error midp $? clean_up_midp # invert the vf - # clitkInvertVF -i $vf_midp_in -o $vf_midp_in clitkInvertVF -i $coeff_midp_in -o $vf_midp_in --type 1 --like $ref_phase_file abort_on_error midp $? clean_up_midp - # clitkInvertVF -i $vf_midp_out -o $vf_midp_out clitkInvertVF -i $coeff_midp_out -o $vf_midp_out --type 1 --like $ref_phase_file abort_on_error midp $? clean_up_midp @@ -263,9 +336,9 @@ midp_in_out() ref_vf_midp_in=$vf_midp_in ref_vf_midp_out=$vf_midp_out vf_midp=$midp_dir/vf_midp_$phase_nb.mhd - clitkCombineImage -i $vf_midp_in -j $vf_midp_out -o $vf_midp -m $mask_dir/mm_$phase_nb.mhd + combine_image $vf_midp_in $vf_midp_out $vf_midp $mask_dir/${mask_type}_$phase_nb.mhd clitkZeroVF -i $vf_midp -o vf_zero.mhd - clitkCombineImage -i $vf_midp -j vf_zero.mhd -o $vf_midp -m $mask_dir/patient_mask_$phase_nb.mhd + combine_image $vf_midp vf_zero.mhd $vf_midp $mask_dir/patient_mask_$phase_nb.mhd # create the midp by warping the reference phase with the reference vf midp=$midp_dir/midp_$phase_nb.mhd @@ -293,9 +366,9 @@ midp_in_out() # combine in and out VF's vf_midp=$midp_dir/vf_midp_$phase_nb.mhd - clitkCombineImage -i $vf_midp_in -j $vf_midp_out -o $vf_midp -m $mask_dir/mm_$phase_nb.mhd + combine_image $vf_midp_in $vf_midp_out $vf_midp $mask_dir/${mask_type}_$phase_nb.mhd clitkZeroVF -i $vf_midp -o vf_zero.mhd - clitkCombineImage -i $vf_midp -j vf_zero.mhd -o $vf_midp -m $mask_dir/patient_mask_$phase_nb.mhd + combine_image $vf_midp vf_zero.mhd $vf_midp $mask_dir/patient_mask_$phase_nb.mhd midp=$midp_dir/midp_$phase_nb.mhd clitkWarpImage -i $phase_file -o $midp --vf=$vf_midp -s 1 @@ -315,16 +388,13 @@ midp_in_out() create_mhd_4D_pattern.sh $midp_dir/vf_outside_midp_ echo "Calculating midp_avg.mhd..." - clitkAverageTemporalDimension -i $midp_dir/midp_4D.mhd -o $midp_dir/midp_avg.mhd + average_temporal_dimension $midp_dir/midp_4D.mhd $midp_dir/midp_avg.mhd abort_on_error midp $? clean_up_midp echo "Calculating midp_med.mhd..." clitkMedianTemporalDimension -i $midp_dir/midp_4D.mhd -o $midp_dir/midp_med.mhd abort_on_error midp $? clean_up_midp - # clean-up - #rm $midp_dir/vf_* - echo echo "-------- Mid-position done ! --------" end=`date` @@ -361,14 +431,20 @@ mask_dir="MASK-${mask_interpolation_spacing}mm-$mask_interpolation_algorithm" extract_4d_phases_ref $mhd4d $ref_phase if [ "$step" == "mask" -o "$step" == "all" ]; then - motion_mask $mhd4d $mask_interpolation_spacing $mask_interpolation_algorithm + motion_mask $mhd4d $mask_type $mask_interpolation_spacing $mask_interpolation_algorithm fi if [ "$step" == "registration" -o "$step" == "all" ]; then - registration + if [ "$mask_type" == "mm" ]; then + registration + elif [ "$mask_type" == "lungs" ]; then + registration + elif [ "$mask_type" == "patient" ]; then + registration_no_motion_mask + midp_combined_vf=1 + fi fi -midp_combined_vf=0 if [ "$step" == "midp" -o "$step" == "all" ]; then if [ $midp_combined_vf = 0 ]; then midp_in_out