Skip to content
Snippets Groups Projects
siena_flow2std 2.79 KiB
Newer Older
Mark Jenkinson's avatar
Mark Jenkinson committed
#!/bin/sh

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

Mark Jenkinson's avatar
Mark Jenkinson committed
Usage() {
Stephen Smith's avatar
Stephen Smith committed
    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 ""
Mark Jenkinson's avatar
Mark Jenkinson committed
}

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

[ "$2" = "" ] && Usage
[ `${FSLDIR}/bin/imtest $1` = 0 ] && Usage
[ `${FSLDIR}/bin/imtest $2` = 0 ] && Usage
Stephen Smith's avatar
Stephen Smith committed
A=`${FSLDIR}/bin/remove_ext $1`
B=`${FSLDIR}/bin/remove_ext $2`
Mark Jenkinson's avatar
Mark Jenkinson committed
debug=0
Stephen Smith's avatar
Stephen Smith committed
smooth=5
while [ _$1 != _ ] ; do
    if [ $1 = -d ] ; then
Mark Jenkinson's avatar
Mark Jenkinson committed
        debug=1
Stephen Smith's avatar
Stephen Smith committed
	shift
    elif [ $1 = -s ] ; then
        smooth=$2
        shift 2
    else
        Usage
Mark Jenkinson's avatar
Mark Jenkinson committed
    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
Mark Jenkinson's avatar
Mark Jenkinson committed
	${FSLDIR}/bin/bet $A ${A}_brain
    fi
Matthew Webster's avatar
Matthew Webster committed
    ${FSLDIR}/bin/flirt -ref ${FSLDIR}/data/standard/MNI152_T1_2mm_brain -in ${A}_brain -omat ${A}_to_std.mat -o ${A}_to_std
Mark Jenkinson's avatar
Mark Jenkinson committed
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
Mark Jenkinson's avatar
Mark Jenkinson committed

# dilate flow image, -> standard space -> mask with ss edge image -> blur -> remask
Matthew Webster's avatar
Matthew Webster committed
${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
Stephen Smith's avatar
Stephen Smith committed
${FSLDIR}/bin/flirt -in ${A}_to_${B}_flow_dil     -ref ${FSLDIR}/data/standard/MNI152_T1_2mm_brain -out ${A}_to_${B}_flow_dil     -applyxfm -init ${A}_halfwayto_${B}_to_std.mat
${FSLDIR}/bin/flirt -in ${A}_to_${B}_flow_dilback -ref ${FSLDIR}/data/standard/MNI152_T1_2mm_brain -out ${A}_to_${B}_flow_dilback -applyxfm -init ${A}_halfwayto_${B}_to_std.mat
${FSLDIR}/bin/fslmaths ${A}_to_${B}_flow_dil -sub ${A}_to_${B}_flow_dilback -div 2 -mas ${FSLDIR}/data/standard/MNI152_T1_2mm_edges ${A}_to_${B}_flow_to_std
Stephen Smith's avatar
Stephen Smith committed

if [ $smooth != 0 ] ; then
Matthew Webster's avatar
Matthew Webster committed
    ${FSLDIR}/bin/fslmaths ${FSLDIR}/data/standard/MNI152_T1_2mm_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/MNI152_T1_2mm_edges ${A}_to_${B}_flow_to_std
Mark Jenkinson's avatar
Mark Jenkinson committed

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