File: correct_dwi_distortion.in

package info (click to toggle)
cmtk 3.3.1p2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 10,492 kB
  • sloc: cpp: 87,098; ansic: 23,347; sh: 3,896; xml: 1,551; perl: 707; makefile: 332
file content (93 lines) | stat: -rwxr-xr-x 3,480 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/sh

##
##  Copyright 2012-2014 SRI International
##
##  This file is part of the Computational Morphometry Toolkit.
##
##  http://www.nitrc.org/projects/cmtk/
##
##  The Computational Morphometry Toolkit is free software: you can
##  redistribute it and/or modify it under the terms of the GNU General Public
##  License as published by the Free Software Foundation, either version 3 of
##  the License, or (at your option) any later version.
##
##  The Computational Morphometry Toolkit is distributed in the hope that it
##  will be useful, but WITHOUT ANY WARRANTY; without even the implied
##  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##  GNU General Public License for more details.
##
##  You should have received a copy of the GNU General Public License along
##  with the Computational Morphometry Toolkit.  If not, see
##  <http://www.gnu.org/licenses/>.
##
##  $Revision: 5337 $
##
##  $LastChangedDate: 2014-04-30 13:22:51 -0700 (Wed, 30 Apr 2014) $
##
##  $LastChangedBy: torstenrohlfing $
##

CMTK_BINARY_DIR=${CMTK_BINARY_DIR:-@CMTK_BINARY_DIR_CONFIG@}
 
# Get the cmtk_functions.sh script from the scripts/ directory in the CMTK source tree
. ${CMTK_BINARY_DIR}/cmtk_functions.sh
 
# Check for command line arguments, print help if none given
if test $# -lt 2; then
    echo "Correct distortion of diffusion-weighted MR images."
    echo
    echo "For this script to be applicable, the b=0 image must have been acquired twice, "
    echo "once with standard phase encoding direction and once with phase encoding reversed."
    echo
    echo "USAGE: $0 outdir b0Reverse b0Forward bX1 [bX2 ...]"
    exit 2
fi

outdir=$1
b0Rev=$2
b0Fwd=$3

if ! cmtk geomatch -v ${b0Rev} ${b0Fwd}; then
    echo "ERROR: the two b=0 images have mismatched geometries or spatial coordinates:"
    echo "  ${b0Rev}"
    echo "  ${b0Fwd}"
    exit 1
fi

shift 3
bXlist="$*"

#
# First, do eddy currents by registering all bX images to forward b=0 image
#
for bX in ${bXlist}; do
    base=`basename $bX`
    pref=`echo ${base} | sed 's/\..*//g'`

    xform=${outdir}/eddy/b0_${pref}.xform
    if CMTK_needs_update_and_lock ${xform} ${b0Fwd} ${bX}; then
	echo "Computing eddy current correction for ${base}..."
	cmtk registrationx --pad-flt -1 --restrict-in-plane xy --cubic --dofs 9,12 --auto-multi-levels 2 --nmi -o ${xform} ${b0Fwd} ${bX}
	CMTK_lockfile_delete ${xform}
    fi
done
 
b0FwdCorr=${outdir}/`basename ${b0Fwd}`
b0RevCorr=${outdir}/`basename ${b0Rev}`
if CMTK_needs_update_and_lock ${outdir}/dfield_fwd.nrrd ${b0Fwd} ${b0Rev}; then
    echo "Computing deformation..."
    cmtk epiunwarp --no-flip --write-jacobian-fwd ${outdir}/jacobian.nii --smooth-sigma-max 16 --smooth-sigma-min 0 --smooth-sigma-diff 0.25 --iterations 5 --smoothness-constraint-weight 1e4 --phase-encode-ap ${b0Fwd} ${b0Rev} ${b0FwdCorr} ${b0RevCorr} ${outdir}/dfield_fwd.nrrd
    CMTK_lockfile_delete ${outdir}/dfield_fwd.nrrd
fi

for bX in ${bXlist}; do
    base=`basename $bX`
    pref=`echo ${base} | sed 's/\..*//g'`
    xform=${outdir}/eddy/b0_${pref}.xform
    if CMTK_needs_update_and_lock ${outdir}/${base} ${bX} ${outdir}/dfield_fwd.nrrd ${xform}; then
	echo "Unwarping $bX"
	cmtk reformatx --sinc-cosine -o ${outdir}/${base} --pad-floating -1 --floating ${bX} ${b0FwdCorr} ${outdir}/dfield_fwd.nrrd ${xform} && cmtk imagemath --in ${outdir}/jacobian.nii ${outdir}/${base} --mul --out ${outdir}/${base}
	CMTK_lockfile_delete ${outdir}/${base}
    fi
done