...
Code Block |
---|
#!/bin/bash # usage # save this file: example 'reg_scr.sh' # mark it as executable: # > chmod +x reg_scr.sh # To register a file (source.mnc) to another file (target.mnc) and save the transform (source_to_target.xfm). # The source and target files have masks (source_mask.mnc and target_mask.mnc) to speed up registrations and make them more accurate. # > ./reg_scr.sh source.mnc source_mask.mnc target.mnc target_mask.mnc source_to_target.xfm parse_arr=( "$@" ) srcfl=${parse_arr[0]} srcmsk=${parse_arr[1]} tgtfl=${parse_arr[32]} tgtmsk=${parse_arr[43]} xfmfl=${parse_arr[54]} srcfl_aff='source_affine.mnc' srcmsk_aff='source_affine_mask.mnc' xfm_aff='source_to_target_affine.xfm' xfm_warp='source_to_target_warp.xfm' # run affine registration antsRegistration -d 3 \ -o "${xfm_aff%.*}" \ -x [${srcmsk},${tgtmsk}] \ -a 1 -z 1 \ -t Affine[0.25] \ -m MI[${srcfl},${tgtfl},1,32,Regular,0.25] \ --convergence [1000,1e-6,10] --shrink-factors 1 --smoothing-sigmas 0mm \ --minc -v 1 --use-histogram-matching 1 # affine resample source and mask mincresample -quiet -like ${tgtfl} -transform ${xfm_aff} ${srcfl} ${srcfl_aff} mincresample -nearest -label -quiet -like ${tgtfl} -transform ${xfm_aff} ${srcmsk} ${srcmsk_aff} # run non-affine registration antsRegistration -d 3 \ -o "${xfm_warp%.*}" \ -x [${srcmsk_aff},${tgtmsk}] \ -a 1 -z 1 \ -t SyN[0.1,2,0] \ -m MI[${srcfl_aff},${tgtfl},1,32,Regular,0.25] \ --convergence [1000x1000x1000x1000,1e-6,10] \ --shrink-factors 8x4x2x1 \ --smoothing-sigmas 0.2x0.1x0.05x0mm \ --minc -v 1 --use-histogram-matching 1 # concatenate affine and non-affine transformations xfmconcat ${xfm_aff} ${xfm_warp} ${xfmfl} # remove temporary files rm ${srcfl_aff} ${srcmsk_aff} rm ${xfm_aff} ${xfm_aff%.*}_inverse.xfm rm ${xfm_warp} ${xfm_warp%.*}_inverse.xfm rm ${xfm_warp%.*}_grid_0.mnc ${xfm_warp%.*}_inverse_grid_0.mnc |
...