Skip to content
Snippets Groups Projects
siena_flow2std 2.70 KiB
#!/bin/sh

#   siena_flow2std - warp flow image into standard space
#
#   Stephen Smith, FMRIB Image Analysis Group
#
#   Copyright (C) 2002-2007 University of Oxford
#
#   SHCOPYRIGHT


Usage() {
    echo ""
    echo "Usage: siena_flow2std <fileroot2> <fileroot2> [options]"
    echo ""
    echo "-s <sigma> : spatial smoothing of standard-space edge-flow image, sigma (HWHM) in mm (default=5)"
    echo "-d         : debug (don't delete intermediate files)"
    echo ""
    exit 1
}

if [ _$FSLDIR = _ ] ; then
    FSLDIR=/usr/local/fsl
    export FSLDIR
fi

[ "$2" = "" ] && Usage
[ `${FSLDIR}/bin/imtest $1` = 0 ] && Usage
[ `${FSLDIR}/bin/imtest $2` = 0 ] && Usage
A=`${FSLDIR}/bin/remove_ext $1`
B=`${FSLDIR}/bin/remove_ext $2`
shift 2

debug=0
smooth=5
while [ _$1 != _ ] ; do
    if [ $1 = -d ] ; then
        debug=1
	shift
    elif [ $1 = -s ] ; then
        smooth=$2
        shift 2
    else
        Usage
    fi
done

# register to MNI152 if not already done, and create halfway2std transform
if [ ! -f ${A}_to_std.mat ] ; then
    if [ `${FSLDIR}/bin/imtest ${A}_brain` = 0 ] ; then
	${FSLDIR}/bin/bet $A ${A}_brain
    fi
    ${FSLDIR}/bin/flirt -ref ${FSLDIR}/data/standard/avg152T1_brain -in ${A}_brain -omat ${A}_to_std.mat -o ${A}_to_std
fi
${FSLDIR}/bin/convert_xfm -omat ${A}_halfwayto_${B}_inv.mat -inverse ${A}_halfwayto_${B}.mat
${FSLDIR}/bin/convert_xfm -omat ${A}_halfwayto_${B}_to_std.mat -concat ${A}_to_std.mat ${A}_halfwayto_${B}_inv.mat

# dilate flow image, -> standard space -> mask with ss edge image -> blur -> remask
${FSLDIR}/bin/fslmaths ${A}_to_${B}_flow -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM ${A}_to_${B}_flow_dil
${FSLDIR}/bin/fslmaths ${B}_to_${A}_flow -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM -dilM ${A}_to_${B}_flow_dilback
${FSLDIR}/bin/fslmaths ${A}_to_${B}_flow_dil -sub ${A}_to_${B}_flow_dilback -div 2 ${A}_to_${B}_flow_dil
${FSLDIR}/bin/imrm ${A}_to_${B}_flow_dilback
${FSLDIR}/bin/flirt -in ${A}_to_${B}_flow_dil -ref ${FSLDIR}/data/standard/avg152T1_brain -out ${A}_to_${B}_flow_to_std -applyxfm -init ${A}_halfwayto_${B}_to_std.mat
${FSLDIR}/bin/fslmaths ${A}_to_${B}_flow_to_std -mas ${FSLDIR}/data/standard/avg152T1_edges ${A}_to_${B}_flow_to_std

if [ $smooth != 0 ] ; then
    ${FSLDIR}/bin/fslmaths ${FSLDIR}/data/standard/avg152T1_edges -bin -s $smooth ${A}_masksmooth -odt float
    ${FSLDIR}/bin/fslmaths ${A}_to_${B}_flow_to_std -s $smooth -div ${A}_masksmooth -mas ${FSLDIR}/data/standard/avg152T1_edges ${A}_to_${B}_flow_to_std
fi

# cleanup
if [ $debug = 0 ] ; then
    /bin/rm -f ${A}_halfwayto_${B}_inv.mat `$FSLDIR/bin/imglob -oneperimage ${A}_masksmooth ${A}_brain.* ${A}_to_${B}_flow_dil.* ${A}_to_std.*`
fi