Association of Lingual Myoarchitecture with Local Mechanics during Swallowing Determined by

advertisement
Association of Lingual Myoarchitecture with Local
Mechanics during Swallowing Determined by
Magnetic Resonance Imaging
by
Samuel M. Felton
Submitted to the Department of Mechanical Engineering and the
Department of Biological Engineering
in partial fulfillment of the requirements for the degrees of
Bachelors of Science in Mechanical Engineering
and
Master of Engineering in Biological Engineering
at the
MASSACHUSETTS INSTITUTE OF TECHNOLOGY
June 2007
c Massachusetts Institute of Technology 2007. All rights reserved.
Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Department of Mechanical Engineering and the Department of
Biological Engineering
May 11, 2007
Certified by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Richard Gilbert
Research scientist, Mechanical Engineering
Thesis Supervisor
Certified by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Roger Kamm
Professor, Mechanical and Biological Engineering
Thesis Supervisor
Accepted by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
John Lienhard
Chairman, Department Committee on Undergraduate Students
Accepted by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bevin Engelward
MEBE Program Director
2
Association of Lingual Myoarchitecture with Local
Mechanics during Swallowing Determined by Magnetic
Resonance Imaging
by
Samuel M. Felton
Submitted to the Department of Mechanical Engineering and the Department of
Biological Engineering
on May 11, 2007, in partial fulfillment of the
requirements for the degrees of
Bachelors of Science in Mechanical Engineering
and
Master of Engineering in Biological Engineering
Abstract
The tongue is an intricately configured muscular organ, which undergoes a series of
rapid shape changes intended to first configure and then transport the bolus from
the oral cavity to the pharynx during swallowing. In order to observe the synergistic interactions of the eight different muscles in the tongue, MRI techniques were
used to determine the three-dimensional fiber architecture, measure the mechanical
function of the tongue during swallow, and relate the two quantitatively to identify
fiber contraction. Diffusion Tensor Imaging was applied to the in vivo tongue of five
subjects at rest to image the tongue myoarchitecture. The data revealed the complex
relationships between extrinsic and intrinsic fibers. Phase Contrast MRI was applied
to ten subjects to assess the complex array of mechanical events occurring during the
propulsive phase of swallowing. Physiological strain rate data was acquired in 4 and
6 time point series during approximately 3 ml water bolus swallows. Data acquisition
was gated to pressure from the tip of the tongue against the hard palate, indicating
the beginning of the irreversible late accommodation. This method demonstrated
that the propulsive phase of swallowing is associated with a precisely organized series
of compressive and expansive strain rate events. Individual subject data sets from
both of these methods were then related. The alignment between local fiber direction
and the co-located strain rate tensor was quantified by the dot product between the
two vectors. Using this technique, the sagittal muscle activity was observed over the
course of the swallow. In the first 200 ms after gating, the verticalis and palatoglossus
contract in order to form the bolus. From 300-400 ms, the genioglossus contracts,
opening the bolus into the throat, while the verticalis and geniohyoid relax. at 500
ms, relaxation throughout the tongue occurs. These data support the concept that
propulsive lingual deformation is due to complex muscular interactions involving both
extrinsic and intrinsic muscles.
Thesis Supervisor: Richard Gilbert
Title: Research scientist, Mechanical Engineering
Thesis Supervisor: Roger Kamm
Title: Professor, Mechanical and Biological Engineering
3
4
Acknowledgments
I owe this thesis to a lot of people who’ve helped me reach the end of MIT. Dr. Richard
Gilbert for being an excellent advisor in my academic career, as well as mentor and
facilitator in my research. His constant enthusiasm helped me achieve more during my
time at MIT than I thought possible. Prof. Roger Kamm, for helping me even before
I became a graduate student in navigating the program, for his excellent teaching,
and sound advice on this thesis. Terry Gaige, my partner in tongue research, for
keeping me honest, watching my back, and letting me use his data. Dr. Tim Reese,
for putting up with my questions, assisting me repeatedly on the MRI machine, and
giving me scanning time so that I could complete this thesis. My brothers at Chi Phi,
and my friends at the fort for keeping me sane and lending me their tongues without
too many questions.
Finally, I thank my parents and my sister Anna. Without their love and support, I
would have never achieved this.
5
6
Contents
1 Introduction
11
1.1
Myoarchitecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.2
Physiology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2 Magnetic Resonance Imaging
15
3 Deriving Myoarchitecture
19
3.1
Diffusion Weighted Imaging . . . . . . . . . . . . . . . . . . . . . . .
19
3.2
Diffusion Tensor Imaging . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3
Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.4
Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.5
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4 Deriving Mechanical Strain
29
4.1
Strain Rate Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.2
Phase Contrast MRI . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2.1
Processing of Phase Contrast Data . . . . . . . . . . . . . . .
33
4.2.2
Validation of phase contrast MRI . . . . . . . . . . . . . . . .
37
4.2.3
Physiological Gating of MR Imaging . . . . . . . . . . . . . .
39
Traditional PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.3.1
Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.3.2
Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
SER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.3
4.4
7
4.5
4.4.1
Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.4.2
Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5 Relationship of Form and Function
61
5.1
Relating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5.2
Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.3
Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
6 Conclusion
6.1
69
Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
A Mathematica: Traditional PC Dicom File Sorting
73
B Mathematica: Traditional PC Processing
85
C Mathematica: SER PC Dicom File Sorting
95
D Mathematica: SER PC Processing
103
E Mathematica: Strain Rate Tracography Processing
115
F Mathematica: PC and DTI processing
121
8
List of Figures
1.1.1 Anatomy of lingual musculature.
. . . . . . . . . . . . . . . . . . . .
12
2.0.1 MRI T1 weighted image of the tongue . . . . . . . . . . . . . . . . . .
18
3.4.1 Example of raw DTI data . . . . . . . . . . . . . . . . . . . . . . . .
22
3.4.2 Complete DTI tractography of the human tongue . . . . . . . . . . .
23
3.4.3 DTI tractography of human tongue compared with anatomical drawing
(sagittal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.4 Vertical view of of DTI tractography of human tongue
25
. . . . . . . .
25
3.4.5 DTI tractography of the styloglossus within the human tongue . . . .
26
4.2.1 Raw phase data for generating a single set of unaveraged strain rate
tensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.2.2 Icon depicting 2D strain rate tensor . . . . . . . . . . . . . . . . . . .
36
4.2.3 Validation of phase contrast MRI as a method to derive local strain rate 40
4.2.4 Mechanism for gating phase contrast MR image acquisition . . . . . .
42
4.3.1 Demonstration of lingual pattern of deformation during bolus propulsion 43
4.3.2 Strain rate patterns exhibited by the tongue during bolus propulsion
(sagittal, 4 time points)
. . . . . . . . . . . . . . . . . . . . . . . . .
46
4.3.3 Combined lingual mechanical data (sagittal) . . . . . . . . . . . . . .
48
4.3.4 Strain rate patterns exhibited by the tongue during bolus propulsion
(coronal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.4.1 Strain rate patterns exhibited by the tongue during bolus propulsion
(sagittal, 6 time points)
. . . . . . . . . . . . . . . . . . . . . . . . .
9
51
4.4.2 Strain rate tractography of the tongue during bolus propulsion (sagittal) 53
5.2.1 Comparison of two-dimensional and three-dimensional DTI tractography of the human tongue . . . . . . . . . . . . . . . . . . . . . . . . .
63
5.2.2 Fiber-aligned strain rate within the human tongue during bolus propulsion (sagittal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
5.2.3 Combined fiber-aligned mechanical data (sagittal) . . . . . . . . . . .
65
10
Chapter 1
Introduction
The human tongue is a versatile and structurally complex muscular organ that is of
paramount importance for the performance of swallowing. During the oropharyngeal
swallow, a highly synchronized series of events results in the manipulation and transport of ingested food from the mouth to the esophagus. Following ingestion, food
is physically modified through a complex set of actions to constitute a shaped bolus
of semi-solid or fluid consistency [22, 38, 48] a process which incorporates tethered
motions of the tongue, hyoid bone, and jaw [16, 43, 49, 51, 50]. Once the bolus
has been configured, the tongue participates in the creation and optimization of the
accommodating cavity by patterned deformation, followed by retrograde propulsion
[12] On delivery of the bolus, the pharynx displaces in a superior direction, while the
laryngeal aperture occludes, producing a cylinder-like flow chamber [11] Propagating
pharyngeal contractions then combine with anterior pharyngeal displacement to produce an orderly flow of the bolus from the pharynx, past the occluded airway and
into the esophagus [26, 29, 39].
1.1
Myoarchitecture
The tongue consists of a complex three-dimensional network of skeletal muscle fibers
and fiber bundles, involving both intrinsic fibers, i.e. those fibers possessing no direct connection to bony surfaces, and extrinsic fibers, i.e. those fibers possessing
11
Figure 1.1.1: Anatomy of lingual musculature.
Anatomical drawings of the tongue derived from Grays Anatomy. (A) Mid-sagittal
plane demonstrating complex 3D network of interwoven skeletal muscle fibers involving the intrinsic muscles (transversus, verticalis, and longitudinalis) and the extrinsic
muscles (principally the styloglossus, genioglossus, and hyoglossus). (B) Coronal
plane (lateral half) obtained through the mid-portion of the tongue displays the core
of transversus and verticalis muscles, surrounded by the styloglossus and hyoglossus
(lateral) and the longitudinalis (superior and inferior).
connections to bony surfaces (1.1.1). The intrinsic musculature consists of a core
region of orthogonally-aligned fibers, contained within a sheath-like tract of longitudinally oriented fibers. The intrinsic fibers are delicately merged with extrinsic
muscles that modify shape and position from a superior (palatoglossus), posterior
(styloglossus), and inferior direction (genioglossus and hyoglossus). Considering the
tongue as a continuous material, we have previously used diffusion based MRI techniques to characterize both local (intravoxel) [14, 31, 35, 55]and regional (intervoxel)
[15, 13] variations in myofiber alignment.
1.2
Physiology
It is generally believed that the direction of skeletal muscle contraction is dictated by
the principal orientation of its fibers. While the determination of a muscles principal
fiber direction is straightforward in tissues where the fibers are aligned along a single
spatial axis, for example, the muscles of the extremities, the process is considerably
more complicated in tissues where fibers are aligned along multiple axes, for example,
12
the tongue, heart, and GI tract. The fact that the tongue is constituted by an
extensive array of interdigitating fibers contributes to the organ’s almost limitless
number of possible deformations.
During swallowing, the tongue acts in a series of synergistic configurations to
contain and propel the bolus of food, whereas in phonation, the tongue assumes
stereotyped conformations that determine vocal tract shape. The determination of
tongue mechanics associated with these physiological functions requires an analysis
of internal muscle dynamics. Previous studies of tongue mechanics have utilized photographic observation [1], videofluoroscopy [6, 8, 28], videoflouroscopy with ultrafast
CT [27], sonography [21, 45, 57], and magnetic resonance imaging. However, due
to the redundancy of conformational paths, the explicit muscle contractions of the
tongue through external imaging methods. This critical point was the motivation for
the current research effort.
From a mechanical perspective, the tongue is generally considered to be a variation of a muscular hydrostat, an organ whose musculature both creates motion and
supplies skeletal support for that motion [35]. As such, it capitalizes on its high
water content, and hence incompressibility, to modify its form, without change in
volume. Accordingly, our approach considers that lingual tissue mechanics can best
be conceived as a set of discretely coupled units of compression and expansion, whose
behavior is predicted by its underlying fiber organization. We have previously employed tagged magnetization MRI, a method analyzing the deforming patterns of an
arbitrarily defined set of intramural elements, to assess lingual strain during swallowing [33] and by these results created a model of lingual deformation based on the
presence of several fundamental synergisms [36] involving both the intrinsic and extrinsic muscle fibers. This model suggests, for example, that during bolus propulsion
the act of retrograde displacement of the tongue is due to contraction of the extrinsic styloglossus and hyoglossus muscles combined with hydrostatic expansion due to
bidirectional contraction of the intrinsic transversus and verticalis muscles. Muscular
hydrostats so conceived optimize speed and flexibility during deformation by such
synergistic activity, while sacrificing force production. By comparison, force produc13
tion may be maximized in non-hydrostatic systems by large moment arms about a
joint supported by a bony skeleton.
14
Chapter 2
Magnetic Resonance Imaging
Magnetic Resonance Imaging is an imaging technique utilizing the electromagnetic
properties of Hydrogen atoms. Protons, electrons and neutrons all possess a fundamental physical property known as spin. Each proton, electron and neutron has a
spin of 12 , and atomic nuclei have a spin equal to the sum of the spins of their protons
and neutrons. The nucleus of a hydrogen atom (1 H) has a spin of 21 . Because of
this, and the fact that heavier atoms are shielded by their electrons, hydrogen is the
principle substance imaged by MRI. A particle with a non-zero spin has an induced
nuclear magnetic moment µ.
~µ = γ J~
(2.0.1)
where γ is the gyromagnetic ratio, which is dependent on the particle. For hydrogen
atoms, γ = 42.58MHz/T . In the presence of a magnetic field B, the hydrogen nucleus
experiences an interaction energy E.
˙ 0
E = ~µ~B
(2.0.2)
For nuclei with spin 1/2, the magnetic moment aligns with the external magnetic
field parallel, or anti-parallel. The energy difference between these two alignments
increases proportional to the strength of the magnetic field. Because the universe
tends to lower energy states, more moments will align parallel than anti-parallel to
15
the field. Statistically, the ratio of the two alignments is a Boltzmann distribution.
∆E
N−
= exp(−
)
N+
kT
(2.0.3)
where k is the Boltzmann constant and T is the temperature, in Kelvin. The difference
between the two populations leads to NMR signal. For an observable signal, there
must be 1018 more parallel spins than anti-parallel spins. At room temperature and
in a 1.5 T field, there is one extra parallel spin for every 105 spins. In 1 ml of water
there are 6.7x1022 spins, equating to 6.7x1017 excess parallel spins. This concentration
allows for significant signal in human tissue. All of the magnetic dipoles are measured
~,
as a bulk magnetization vector M
~ =
M
X
~µ
(2.0.4)
which traverses a cone shape in space. The cone’s long axis represents the magnetic
field B0 , and the magnetization vector aims out diagonally from one end and precesses around this axis, forming a cone. The precession rate is given by the Larmor
frequency, ω0 .
ω0 = γH B0
(2.0.5)
NMR experiments require that energy input must be near the proton’s Larmor frequency. MRI machines enter energy via Radio Frequency (RF). Therefore, a 1.5 T
magnet must be used, since the RF band is 88 - 108 MHz, and the Larmor frequency
at that field strength is 63.9 MHz.
A pulse sequence is the actual time-dependent combination of magnetic and RF
inputs that sample the tissue. A typical pulse sequence consists of a series of RF pulses
that create an oscillating magnetic field, which tips the magnetization vector off of
the axis of the magnetic gradient. After the RF pulses, the transverse magnetization
returns to 0 at a decay rate of time constant T2 which is a property of the imaged
material. The longitudinal magnetization relaxes back to M0 at the same time, with
time constant T1 . Because T2 relates to a specific material, differences in this value
16
are used to contrast materials in an MR image. T2 must be less than T1 .
By applying a magnetic gradient, the larmor frequency varies directly to the gradient according to 2.0.5. Therefore, in a one-dimensional gradient, the signal measured
can be related to its position along the gradient by it’s Larmor frequency. The signal
is received by a current induced in a wire coil by the precession of the transverse
magnetization. These coils can be large, encompassing the entire head, or they can
be small, such as surface coils of 3-4 inches diameter, which can be laid on a specific
region of the body for greater signal.
Typical MR images are produced by applying two orthogonal magnetic gradients,
and applying a two-dimensional Fourier transform to the signal received. The magnitude of the signal at a particular frequency is proportional to the signal, and therefore
amount of water, at the equivalent point along the gradient. each gradient location
acts as one coordinate of a two-dimensional plane.
2.0.1 is a typical T1 weighted MR image of the human tongue. The brightness is
a function of signal intensity and the density of water. The tongue shows up as white
because of its high water content, while the oral cavity is black because it is filled
with air. The signal is much higher in the center of the image because surface coils
are being used, which accomplish a high sensitivity, but have a limited range.
Various other effects of magnetic fields and RF pulses can be applied in the pulse
sequence to sample different information from the tissue. Two of these methods will
be explored in the following sections: Diffusion Tensor Imaging, and Phase Contrast.
17
Figure 2.0.1: MRI T1 weighted image of the tongue
A typical T1 weighted image of the tongue aquired via MR imaging. Brightness
indicates the concentration of water within each voxel.
18
Chapter 3
Deriving Myoarchitecture
The myoarchitecture of any muscle is critical in understanding how the muscle functions. The tongue’s myoarchitecture is especially intriguing because it relies on crossing fibers to provide skeletal stability, and the complex interactions of the muscles
that allow large number of static and dynamic configurations. Diffusion Tensor Imaging was used to visualize these structures in three-dimensions. The bulk direction of a
local population of fibers can be determined by the direction in which local diffusion
is occurring. These diffusion vectors are then connected to adjacent, similarly aligned
vectors via tractography, to create tracts that represent mesoscale fiber populations.
3.1
Diffusion Weighted Imaging
Diffusion describes the random motion of molecules, and occurs in materials of all
phases. To visualize the complex myoarchitecture of the tongue this experiment
employed MRI sensitized to the directionality of water diffusion[44, 30]. Diffusion
weighted imaging has the capacity to resolve anisotropic particle movement, and thus
infer fiber organization at a voxel scale in biological tissue[3, 19, 20, 32, 58]. Because
water flows more freely within cells than through cell membranes, cylindrical cells will
exhibit more diffusion along the long axis than perpendicular to it. This diffusion
anisotropy can be measured. The anisotropy of water diffusion in skeletal muscle in
particular has been demonstrated and anatomically validated[5, 24, 25, 54, 7].
19
3.2
Diffusion Tensor Imaging
Diffusion Tensor Imaging (DTI) samples diffusion within a structure in several different directions to determine the direction of maximum diffusion, and therefore the
orientation of cylindrical fibers. DTI uses a diffusion sensitive spin echo pulse sequence. Diffusivity data is recovered by dephasing and then rephasing the transverse
magnetization within a magnetic field gradient. This causes an echo of the transverse
magnetization, so that only the T2 decay and any gross motion along the gradient
do not rephase completely. The loss of phase coherence results in the attenuation
of MRI signal, and the apparent diffusion coefficient. Aquiring this value in several
directions allows the calculation of a three-dimensional second-order tensor in each
voxel known as the apparent diffusion tensor. The largest principal eigenvector of
this tensor is reveals the direction of greatest diffusion. These diffusion vectors are
then connected via tractography[17, 18] into mesoscale structures. Tracts originate
at every voxel, and continue parallel to the diffusion vector of the voxel it is passing
through. A tract will continue to an adjacent voxel as long as the adjacent voxels’
diffusion vectors are similarly aligned (within 35◦ ).
3.3
Protocol
Diffusion weighted images used a twice-refocused spin echo DTI pulse sequence with
TR = 3 s, TE = 80 ms, field of view 192 mm x 192 mm, 24 slices, 3 mm slice
thickness, in 90 gradient directions with b-value 500 s/mm2 . Each voxel was 3x3x3
mm. The entire pulse sequence took approximately 5 minutes, during which the
subject was asked to remain as motionless as possible. Data was acquired using a 1.5
Tesla Siemens Avanto whole-body scanner equipped with two custom-built surface
coils, approximately 150mm2 in area, placed on each cheek and gently secured with
tape.
20
3.4
Results
Tractography images were created from the DTI dataset obtained for each subject.
The images in this paper are derived from a single subject, and are representative of
the data acquired for all 5 subjects. Partially transparent, low b-value, magnitude
images are displayed for anatomical reference and to distinguish between tracks closer
and further away from the point of view. The color-coding for the tracts is the same in
all images, regardless of the slice orientation, and is as follows: green indicates tracts
in the anterior-posterior direction, red indicates tracts in the transverse direction, and
blue indicates tracts in the superior-inferior direction.
The raw image data is displayed in 3.4.1. Panels A-C are sagittal and co-located.
Panels D-F are axial and co-located. A typical T1 weighted image is shown in panels
A and D. 0 b value EPI images are displayed in panels B and E. These are used
as comparisons for diffusion weighted images, and 15 are taken during the pulse
sequence. Diffusion weighted EPI miages are displayed in panels C and F. Regions
that are darker relative to he 0 b value images indicate higher level of diffusion along
the magnetic gradient.
The complete lingual muscle DTI tractography overlaid with three orthogonal low
b-value magnitude images is shown in 3.4.2 from an oblique perspective (A) and from
the superior (B) and left lateral (C) directions. Individual muscles were identified
primarily by their insertion points into the tongue. These muscles integrate complexly
inside the tongue. The thick green band running along the lateral edge of the tongue
and around the anterior tip, originates on either side from the styloid process, and
represents the styloglossus (sg). The blue verticalis (v) can be seen curving up and
in at the anterior-superior region of the tongue. The hyoglossus (hg) and part of the
genioglossus (gg) originate at the hyoid bone, inferior to the tongue. The genioglossus
is partially obscured by the other muscles, because of its interior location, but it is
the largest extrinsic muscle in the tongue. The palatoglossus (pg) originates superior
to the tongue in the soft palate and curves laterally and anteriorly where it blends
with the superior longitudinalis. The inferior longitudinalis (il) is visible, but difficult
21
Figure 3.4.1: Example of raw DTI data
Sagittal and Axial images are displayed of a typical anatomical pulse sequence (A
and D), a 0 b value EPI (B and E), and a diffusion weighted EPI (C and F). In
the diffusion weighted EPI, darker regions within the tongue body indicate greater
diffusion along the diffusion gradient.
to discern because it merges with the extrinsic muscles at the surface.
In order to demonstrate the ability of DTI to discern muscles within the tongue,
an anatomical drawing of the tongue is compared to a three-dimensional DTI tractography reconstruction from the same viewpoint. The genioglossus (gg), styloglossus
(sg), hyoglossus (hg), geniohyoid (gh), and inferior-longitudinalis (il) are all recognizable on the DTI from the drawing. The genioglossus can be seen fanning out from
the mandible. Near that point, the geniohyoid is also anchored, and extends in the
posterior direction. Not shown on the anatomical drawing are the verticalis (v) and
the palatoglossus (pg). The styloglossus approaches from the rear and merges with
the inferior longitudinalis as it passes the hyoglossus. 6 vertical images of a 3-D DTI
tractography reconstruction are displayed in descending order in 3.4.4. The verticalis
(v) is visible curving in from the lateral edges and up in the upper half of the tongue.
The palatoglossus (pg) can be seen in the posterior lateral edges, curving out and
around in the top two slices. The superior longitudinalis (sl) can be seen in the mid22
Figure 3.4.2: Complete DTI tractography of the human tongue
Diffusion Tensor Imaging was used to sample the tongue architecture, and the resulting vectors were connected via tractography. The three-dimensional result was
visualized and colored so that longitudinal fibers were green, transverse fibers were
red, and vertical fibers were blue. A) displays an oblique view of the tongue. B)
displays a superior view of the tongue. C) displays a left sagittal view of the tongue.
Distinct and visible muscle groups were labeled: genioglossus (gg), hyoglossus (hg),
inferior longitudinalis (il), palatoglossus (pg), styloglossus (sg), and verticalis (v).
Dimensions [64,64,24].
23
sagittal plane oriented axially in the top slice, and the inferior longitudinalis (il) at
the tip of the tongue, curving upwards. The genioglossus fans through slices B-E,
and can be seen oriented axially in these slices. The hyoglossus (hg) arcs around the
inferior of the tongue transversely in slices D-F, and the geniohyoid (gh) arcs from the
lateral edge of the mouth around the anterior tip of the tongue. Both the hyoglossus
and geniohyoid appear to merge at the point where they join to the hyoid bone.
3.4.5 illustrates how the styloglossus inserts into the tongue and merges with adjacent muscles by isolating the associated tracts. Symmetric tract groups originating in
the lateral edges of the lingual core bundle together and pass adjacent to each other as
they leave the body of the tongue. The greener tracts within the body of the tongue,
which appear to represent the inferior longitudinalis (il), progressively merge with the
bluer tracts of the verticalis (v) forming a continuous spectrum within the tongue but
separate into distinct muscles as they exit. Previous anatomical descriptions have not
made this observation. The most posterior of the verticalis (v) plunge medially of the
styloglossus (sg) where, in some subjects, the fibers then merge with the hyoglossus.
Finally, notice how the palatoglossus (pg) sweeps in from above where it aligns with
the superior longitudinalis and ensheaths the lingual core.
3.5
Discussion
The tongue is an interesting subject for three-dimensional structural analysis because
of the complex relationships shared by both extrinsic and intrinsic fibers. The utility
of diffusion based MRI for resolving structure-function relationships for the human
tongue during physiological motion is based largely on its ability to resolve these
intricate fiber relationships. In order to apply diffusion based anatomical imaging
in vivo, we elected to use an approach combining multiple gradient direction DTI
with tractography. While lacking the ability to resolve intravoxel crossing fibers[53],
complete DTI tractography scans can generally be completed in a small fraction of
the time required for DSI with equivalent voxel size and max b-value settings. The
use of multiple gradient directions lengthens scan time, but necessarily improves SNR.
24
Figure 3.4.3: DTI tractography of human tongue compared with anatomical drawing
(sagittal)
Comparison of an anatomical drawing of the tongue with a DTI image taken in vivo.
Both images are taken from a left sagittal viewpoint. A) displays a Grey’s anatomy
image of the tongue, labeling the genioglossus, geniohyoid, hyoglossus, inferior longitudinalis, styloglossus, and verticalis. B) displays the DTI tractrography visualization
of the tongue, labeling the genioglossus (gg), geniohyoid (gh), hyoglossus (hg), inferior
longitudinalis (il), palatoglossus (pg), styloglossus (sg), and verticalis (v).
Figure 3.4.4: Vertical view of of DTI tractography of human tongue
Six 12 mm thick vertical slices of the tongue are displayed from a DTI tractography
visualization, from superior (A) to inferior (F). Dimensions [64,64,24].
25
Figure 3.4.5: DTI tractography of the styloglossus within the human tongue
An oblique view of the styloglossus and adjacent muscle tracts are displayed. The
tracts of the styloglossus were isolated within a three-dimensional reconstruction of
the DTI tractography visualization of the tongue in vivo. The verticalis (v) fibers
plunge medially of the green styloglossus (sg), though the muscles appear to form
a continuous spectrum along with the inferior longitudinalis (il) in the body of the
tongue. Dimensions [64,64,24], selected ROI [center at x = 37, y = 21, and z = 17,
radius 4.25], track length thresholds [15 mm 140mm].
26
Furthermore, DTI tractography should have the capacity to resolve intervoxel crossing
in offset planes and non-crossing fibers at a scale that coincides with the practical
dimensions of physiological shape changes, such as occur during swallowing.
The current results display for the first time the use of DTI tractography in vivo
to visualize the complete structural anatomy of the human tongue. These results validate DTI tractography as an effective means for observing tongue anatomy, as they
confirm that the tongue is a core of orthogonally crossing intrinsic fibers, which merge
with extrinsic fibers. DTI tractography also reveals details about the architecture, as
follows:
1. The genioglossus distributes in a fan-like manner throughout the body of the
tongue and merges with the intrinsic verticalis muscles in the anterior tongue. The
transverse distribution of the genioglossus is notably wider in the posterior tongue as
compared with the anterior tongue, suggesting perhaps a greater role in the formation
of the accommodating concavity necessary for bolus formation during the swallow and
for promoting lingual rotation during propulsion.
2. The prominent styloglossus fibers merge specifically with the inferior longitudinalis
fibers while coursing long the lateral edges and finally encircling the anterior tip of the
tongue. This suggests a very important role of the styloglossus not only for promoting
gross retrograde displacement during bolus propulsion, but for controlling the more
subtle variations of tongue shape needed for some aspects of early accommodation
and speech.
3. The styloglossus rotates at the point of its insertion into the tongue, forming a
spectrum within the tongue of variably oriented fibers involving the extrinsic fibers
originating both posterior and inferior to the body of the tongue, and the longitudinally and vertically aligned intrinsic fibers. The functional implications of this
relationship are not known.
In conclusion, DTI tractography is capable of measuring the complex internal architecture of the tongue, including the integration of extrinsic and intrinsic fibers.
27
28
Chapter 4
Deriving Mechanical Strain
The mechanical function defines the motion of the tongue, and is critical to understanding the swallow, a complex and reflexive series of precise shape changes. In
order to observe these movements, The local material strain rate of the tongue tissue was measured using Phase Contrast (PC) MRI. This data was interpreted into
a time-series of two-dimensional strain rate tensor fields, and overlaid on a tongue
image to determine the locations of the activities.
4.1
Strain Rate Theory
Strain is the displacement of a material relative to its initial length. Typically, static
strain in a two-dimensional plane is expressed as a symmetric two-by-two array consisting of axial and shear strain components

ǫij = 
ǫxx ǫxy
ǫyx ǫyy


It can also be expressed as a field of rank 2 tensors; each tensor containing the
two principal strain vectors ǫprincipal . The principal strain vectors represent the axial
strains in the orthogonal coordinate plane in which the shear strain is 0. This plane
29
can be determined using Mohr’s circle:
ǫxx + ǫyy
+
ǫ1 =
2
ǫxx + ǫyy
2
ǫ12 = ǫxy cos2θ −
cos2θ + ǫxy sin2θ
ǫxx + ǫyy
2
cos2θ
(4.1.2)
(4.1.3)
where x and y represent the initial Cartesian axes, ǫ1 is axial strain in a Cartesian
coordinate frame arbitrarily rotated θradians, andǫ1 is the shear strain in that same
system. In the coordinate frame where ǫ12 = 0
ǫprincipal
ǫx + ǫy
±
=
2
s
ǫx − ǫy
2
2
+ (ǫxy )2
(4.1.4)
These principal vectors are also the same as the eigenvectors of the Cartesian strain
matrix.
Within an isovolemic material such as the tongue, strain has an additional constraint. Because the material cannot change volume, for every strain in one direction,
there must be a reactionary strain in one or two transverse directions to maintain a
constant volume. For small values of strain
ǫ1 + ǫ2 + ǫ3 ≈ 0
(4.1.5)
where 1,2, and 3 designate any three orthogonal vectors. This means that for every
principal strain, there is at least one other co-located principal strain that has the
opposite sign. It should be noted that in our experiments, only two-dimensions are
measured, so that while orthogonal, opposite-signed strains are common, it is also
possible that the reactionary strain is occurring transverse to the image and cannot
be measured.
The isovolemia allows intelligent assumptions about three-dimensional strain rate
based off of two-dimensional measurements. Because the tongue is symmetric about
the mid-sagittal plane, it can be assumed that z-plane shear stress is 0, and the third
30
principal eigenvector is perpendicular to the sagittal plane.

ǫ
ǫ
0
 xx xy

ǫij =  ǫyx ǫyy 0

0
0 ǫzz





Therefore, ǫz can be assumed to be equal to −(ǫ1 + ǫ2 ). Strain within the sagittal
plane can be caused by transverse contractile events, as well as in-plane events. This
relationship must be kept in mind when analyzing two-dimensional mid-sagittal strain
rates. (4.1.6)
4.2
Phase Contrast MRI
Phase contrast (PC) MRI determines the local (single voxel) velocity function by
applying a phase gradient followed by a canceling (decoding) phase gradient, then
deriving local motion by phase shift exhibited by the resulting MR images along the
gradient vector [9, 40, 56]. PC MRI then uses echo planar imaging (EPI) as a fast
imaging sequence to capture the data. An example of raw magnitude and phase data
is displayed in 4.2.1. In the top row are shown the four individual magnitude images
taken with the four encoding gradients (at the same spatial resolution as the phase
images below). The bottom row displays the corresponding phase images, with white
representing a phase shift of +180◦ and black representing a phase shift of −180◦ .
The shading gradient is proportional to the change in strain in the direction of the
phase gradient. The tongue exhibits varying levels of phase contrast, consistent with
varying strain rates, whereas the relatively small gradient within the brain indicates
minimal to no strain rate. The snowy pattern around the head is indicative of random
phase data and is consistent with a low signal area. It should be noted that the region
of the middle tongue in which black borders on white does not indicate a steep phase
gradient, but suggests that the phase has rolled over from +180◦ to −180◦ a condition
assumed by the strain rate algorithm to possess the smallest possible phase difference.
31
During PC MRI, velocity encoding is typically applied in 4 quadrilateral directions:(x, y, z), (-x,-y, z), (x,-y,-z), (-x, y,-z) and strain rate determined by the difference in velocities between adjacent voxels distributed throughout the sampled slices
of tissue. The strain rate tensor is over specified by taking measurements in four
quadrilateral directions, thus canceling out artifacts and other effects on the phase
unrelated to velocity. During deformation, strains near each point in the material
can be linearly approximated by the strain tensor, given by a 3 3 matrix. There
are several advantages to the use of phase contrast methods to assay material strain
during rapid physiological motions: 1) PC MRI provides motion sensitivity that can
be set to high values by adjusting the gradient pulse intensities. Thus phase contrast data have near perfect motion specificity and may be analyzed by automated
schemas. Combining phase contrast with single-shot image acquisition significantly
strengthens the quality, sensitivity, and specificity of phase contrast data by excluding
the influence of variable motion across multi-shot acquisitions that otherwise would
be amplified by strain calculation. 2) In contrast to tagged magnetization, PC MRI
provides a basis for the acquisition and analysis of 3D strain. This, however, requires an increase in the number of strain encoding axes and thus requires slightly
longer acquisition times (due to reduced sensitivity) and exhibits some algorithmic
fragility. While magnetic susceptibility artifacts resulting in spatial distortions may
occur during the course of oral cavity imaging due to the fact that acquisitions must
be performed at air-tissue interfaces [41], these effects appear to be relatively small
at the edges of the lingual tissue [12] imaged in vivo and are not detectable in the
interior of the tissue [33, 34, 35] where strain rate measures are performed. Individual
phase-contrast images were determined to have a signal-to-noise ratio (SNR) of 48.5.
Simultaneous Echo Refocusing (SER) PC imaging allows multiple slices to be
imaged simultaneously by sampling voxels from alternating slices. In normal MR
images, the imaged plane is chosen by a single-slice selective RF pulse. SER uses a
sequence of selective RF pulses, separated by defocusing pulses so that each slice has
a different phase history. In this way the data is multiplexed. The signal from the
different slices are refocused simultaneously, to reduce the gradient duty cycle and
32
Figure 4.2.1: Raw phase data for generating a single set of unaveraged strain rate
tensors
Shown are a set of 4 magnitude (upper row) and associated 4 phase images (lower
row) specific for each gradient direction in the case of a single time point (0 ms, trigger
point). Each strain rate tensor image requires four scans, encoded with four different
gradient vectors, embodying a magnitude image and a phase image. The four 1-D
strain rate arrays are combined into one 2-D strain-rate array. Note the contrast
between the high strain phase images of the tongue, characterized by gradual shade
gradients, the low strain phase images of the brain, characterized by little or no shade
gradients, and the low signal areas outside of the head, characterized by the random,
snowy phase.
dead time.
4.2.1
Processing of Phase Contrast Data
Strain was calculated employing an unsupervised and objective algorithm (Appendices A-B) developed in Mathematica. In this paper all strains are represented as
Lagrangian. To determine strain rate per voxel, the difference of phase between voxels
at location (i, j) was calculated:
(ai+1,j+1 − ai,j+1 ) + (ai+1,j − ai,j )
δai,j
=
δx
2
(4.2.1)
δai,j
(ai+1,j+1 − ai+1,j ) + (ai,j+1 − ai,j )
=
δy
2
(4.2.2)
33
where ai,j is the phase at voxel (i,j) and x and y are the principle orthogonal directions
oriented longitudinally and vertically, respectively. Four voxels were used instead of
two so that x-strain tensors and y-strain tensors would be calculated for the same
location. The SNR was improved by averaging over 10 data sets, and weighting the
strain-rate data by the strength of the magnitude in the following manner:
s
X
k=1
Min(mi,j,k , mi+1,j,k , mi,j+1,k , mi+1,j+1,k ) ×
δai,j
δx
=
k
δai,j
δx
(4.2.3)
where mi,j is the magnitude at voxel (i,j), n is the number of sets being averaged, and
k is the designator for one of the n sets being averaged. Weighted averaging ensured
that noise from images with weak signals was removed from the data. To determine
the difference in velocity, the phase difference must be processed with the velocity
encoding (VENC). VENC determines the phase gradient applied during the pulse
sequence, and has units cm/sec/cycle. A smaller VENC provides greater sensitivity,
but is incapable of measuring larger velocities due to rollover. Rollover occurs when
the accumulated phase shift of a moving material is greater than 180◦ , and cannot be
distinguished from a smaller velocity in the opposite direction.
The difference in velocity over the length of the voxels, L defines the strain rate,
δǫ
.
δt
δǫap
=
δt
δa
V
δp
ENC
(4.2.4)
L
where p represents any principle vector x, y, or z, ǫap =
ua
,
p
and ua is the material dis-
placement along vector a. The relation between the four equilateral gradient vectors,
a, b, c, and d, and the two principle vectors, x and y, is:
δǫxp
=
δt
δǫap δǫbp δǫcp δǫdp
+
−
−
δt
δt
δt
δt
δǫyp
=
δt
δǫap δǫbp δǫcp δǫdp
−
+
−
δt
δt
δt
δt
×
×
√
3
4
√
3
4
(4.2.5)
(4.2.6)
The orthogonal dimensions were translated into principle strain vectors with no shear
strain. First, rotational strain was removed by separating the symmetric and asym34
metric strain tensors, as follows [60]:
δǫpq
δVp
=
δq
δt
(4.2.7)
T = ▽V
(4.2.8)
where V is the local velocity vector field of the material, and p and q represent any
principle vectors. The strain rate tensor field, T, can be separated into symmetric, S,
and anti-symmetric, A, components:
T =S+A=

T − TT
T + TT
+
2
2
δVx
δx
1
S = [▽V + (▽V )T ] = 
1 δVx
2
(
+
2 δy
δVy
)
δx
(4.2.9)
y
1 δVx
(
+ δV
)
2 δy
δx
δVy
δy


(4.2.10)
The symmetric tensor represents stress and strain, while the anti-symmetric tensor
represents local rigid body rotation. The principle strain vectors were then found
using Mohrs circle.
In order to represent the local strain rate tensor for each voxel, the principle strain
rates for the tissue contained in each voxel were rendered as 2D icons (4.2.2). For this
study, strain rate was represented graphically using rhombi with their long dimension
parallel to a strain rate eigenvector and the length proportional to its magnitude.
The width of each rhombus was arbitrarily set proportional to the length for the
purpose of visualization. For each voxel, two orthogonally aligned rhombi were generated representing the primary strain rate vector,
δǫ1
,
δt
defined as that vector with
the greatest magnitude, and the secondary strain rate vector,
δǫ2
,
δt
whose magnitude
was smaller and aligned orthogonal to the primary strain rate vector. In the current study, we employed the convention that blue indicates a positive principle strain
rate, consistent with expansion, and that red indicates a negative principle strain
rate, consistent with compression. It should be noted that compressive and expansive principle strain rates present in a given voxel may or may not be equivalent in
magnitude, although the hydrostatic condition requires that their sum be zero if there
35
Figure 4.2.2: Icon depicting 2D strain rate tensor
The orthogonal principle strain rates, reflective of the material strain in each voxel,
are displayed in the form of 2 orthogonal rhombi. In each instance, the length and
orientation of the larger rhombus is defined by the magnitude and direction of the
primary strain rate δǫδt1 (width is arbitrarily displayed proportional to the length for
improved visualization). The smaller rhombus is overlaid orthogonal to the larger
rhombus and possesses length and orientation defined by the secondary strain rate
δǫ2
. By convention, if a rhombus is blue, the strain rate represented is positive
δt
(expansion) and if a rhombus is red the strain rate is negative (compression). In
the example shown in this figure, the primary strain rate tensor is compressive and
represented as a red rhombus whereas the secondary strain rate tensor is expansive
and represented as a blue rhombus possessing a magnitude of 60% as large as the
primary strain rate tensor.
is no strain in through plane direction. Each rhombus was overlaid in the correct position on the magnitude images of the tongue during the propulsive image sequence.
While each voxel constitutes a unique strain rate tensor, mechanical analysis of mean
deformation of voxel arrays was also performed. This approach provides adequate
signal-to-noise to allow quantitative comparisons to be made between subjects as a
function of location and temporal position in the swallow. Regions of the tongue
were delineated from sagittal phase contrast images and comparisons made of mean
magnitude of compressive and expansive strain rates. The regions consisted of the
following: Region 1: Superior-posterior tongue, comprising the distributions of the
36
posterior genioglossus, verticalis, and transversus muscles, and points of insertion for
the styloglossus and hyoglossus, Region 2: Superior-middle tongue, comprising the
middle genioglossus, verticalis, and transversus muscles, Region 3: Superior- anterior
tongue, comprising the anterior genioglossus and verticalis and transversus muscles,
and Region 4: Inferior-middle tongue, comprising ;largely the distributions of the
inferior genioglossus and hyoglossus muscles. The image sizes defined by regions 1,
2, and 3 were approximately 100 voxels, whereas the image size defined by region
4 was approximately 50 voxels. The explicit boundaries of these regions were arbitrarily defined, acknowledging the continuous nature of lingual fiber myoarchitecture.
Comparisons were made of the mean ± standard deviation of strain rate amplitude
between regions within each time point of duration 54 ms (0, 200, 400, and 600
ms following application of the lingual trigger) and between time points for a single
region. Statistical comparisons were obtained employing the students T test, with
significance assigned at p ¡ 0.05.
4.2.2
Validation of phase contrast MRI
In order to validate the method for deriving local strain rate from PC MRI, we
tested the current MRI pulse sequence and method of analysis during deformation
induced by a synchronized mechanical plunger apparatus (24) in a phantom gelatinous
material (4% Agar). This system assays local compression and expansion in the
phantom following forced compression of the material by the plunger at varying rates
of displacement. Similar to the case of the tongue, the gel density is constant, i.e.
the material is incompressible, and thus the trace of the strain tensor must always be
zero. However, the gelatinous material is different from the tongue since it is a purely
isotropic material, and thus all local compression will be balanced by expansion in the
case of each voxel. The deformation of a hydrostatic muscle, such as the tongue, is
controlled by local anisotropic elements, i.e. muscle fibers and fiber arrays, which by
their combined contraction and relaxation produce local compression and expansion.
Nonetheless, this method provides a way to verify the basic tenets by which local phase
shifts are translated into material properties, i.e. local compression and expansion.
37
The experiment was run on a 1.5 Tesla Siemens Avanto magnet with an echo time
(TE) of 80 ms, a repetition time (TR) of 650 ms, and VENC of 10 cm/sec. Voxels
were 5x5x5 cm3 . The plunger apparatus has a sinusoidal period of 750 ms, and a
stroke length of 0.6 cm.
xp = 0.6 ∗ sin(2πt/0.75)
(4.2.11)
The motor sends a 5 V trigger impulse to at a single, arbitrary point during its cycle.
Single acquisitions are taken in 25 ms intervals for a total of 30 strain rate images.
The data in ?? displays the localized strain rate of the gel at three times during
the plungers cycle. When the plunger is not in contact with the gel, no significant
strain rate patterns are measured. This is consistent with the assumptions of a static
system. The line of vertical compression on the right side of the plunger is probably due to edge effects between the gel and the air. During the downward-moving
portion of the cycle, a consistent strain pattern of vertically oriented compression
underneath the plunger, along with orthogonal expansion due to the isovolemic properties of the gel. During the upward-moving portion, an equal but opposite pattern of
vertically oriented expansion occurs under the plunger, accompanied by orthogonal
compression.
Vertical local strain rates were measured through the axial center of the gel. Theoretically, the sum of the strain rates below the plunger should be equivalent to the
velocity of the plunger, vp .
vp −v0 = (v1 −v0 )+(v2 −v1 )+. . .+(vp −vp−1 ) =
δǫp
δǫ1 δǫ2
∗L (4.2.12)
+
+ ...+
δt
δt
δt
Where vn is the velocity at the nth voxel from the bottom of the gel, ǫn is the strain
at the nth voxel from the bottom of the gel, and L is the distance between adjacent
voxels. The expected value of vp is
vp =
∆xp
0.6 ∗ sin(2π(0.08)/0.75)
=
= 4.66cm/sec.
∆t
0.08
(4.2.13)
The plunger velocity measured by PC MRI (vm ) was 4.23cm/sec, resulting in an error
38
percentage of 7%. Sources of error in this measurement include an imprecise gating
mechanism, so that the plunger was not measured at the point of maximum strain
rate, and noise at the surface of the material, due to air [12, 41]. Since the strain
is largest in the gel at the plunger surface, the discontinuity of the medium could
contribute significant error to the results.
These observations substantiate that the strain rate derived from phase contrast
MRI, as defined above, is representative of the local compressive and expansive events
associated with local material deformation.
4.2.3
Physiological Gating of MR Imaging
Given the spatial and temporal complexity of the mechanical events associated with
swallowing and the one-dimensional nature of conventional phase contrast data, gating is needed to temporally align the resulting mechanical information. While superior temporal precision would result from cine MR image acquisition [46], obtaining
multiple phase contrast MR images following a single gating pulse was not feasible.
Owing to the fact that propulsion is principally reflexive once initiated we elected to
tether MR image acquisition to lingual pressure applied to the hard palate through a
pressure-sending bulb at the approximate outset of the propulsive phase [37, 42]. The
device configuration is portrayed in 4.2.4. A small (3 cm length) tongue bulb (Iowa
Oral Performance Instrument, [28] Blaise Medical) was placed immediately behind
the front teeth and on the tip of the subjects tongue. The bulb was connected via
15 m of 1/16 ID tubing to a pressure sensor, from which output was acquired and
analyzed by Labview software. The peak pressure occurring secondary to tongue pressure against the bulb was recorded and a 5V output signal triggered when a threshold
pressure (approximately 0.35 PSI) was achieved. Acknowledging that there is likely
to be variation between subjects in the pressure applied by the tongue during swallow
initiation, the exact pressure threshold was derived for each subject by determining
the voltage threshold immediately preceding the swallow in 4-8 test swallows, then
setting the voltage threshold to 0.01 V below the smallest peak achieved in the test
swallows. While the interval between the time of initial tongue contact with the sen39
Figure 4.2.3: Validation of phase contrast MRI as a method to derive local strain rate
In order to validate the method by which local strain rate tensors are derived from
PC MRI, we employed a mechanical plunger apparatus to induce compressive or
expansive deformation in a gelatinous phantom material. The plunger consists of
hemispherical plastic device whose position is controlled by a stepper motor, and
which can be lowered or raised relative to the gel at a rate of 1 Hz and a stroke
length of 1.2 cm. Strain rate was derived from local phase contrast as described in
the Methods and the resulting primary and secondary strain rate tensors are depicted
as rhomboid icons for each voxel. The diagrams displayed in the upper row depict
the plungers position relative to the gel before contact (A), during a downward stroke
(compression) (B), and during an upward stroke (expansion) (C). The images displayed in the lower row depict the strain rate vectors within the gel before contact
(D), during the downward stroke (E), and during the upward stroke (F). A consistent field of vertical compression can be seen below the plunger during the downward
stroke, accompanied by orthogonal expansion due to the gel’s isovolemic nature. An
analogous field of vertical expansion can be seen below the plunger during the upward
stroke, accompanied by orthogonal compression. The strain rate icon displayed for
scale in the lower left of each image represents 0.20 s−1 .
40
sor and the achievement of threshold pressure varied slightly between subjects, the
interval between the time at which threshold pressure was obtained and the initiation
of lingual displacement (and the coordinated initiation of MR scanning) was ¡ 0.1
second and highly reproducible. It is conceivable that the presence of the bulb in the
oral cavity may cause a deviation from the natural positioning of the tongue, and thus
induce compensatory mechanical actions. In addition, the resistance provided by the
bulb may modify the natural strain patterns exhibited by the tissue during the course
of swallowing. While in preliminary experiments, the bulb was easily positioned by
subjects by placing one edge of the bulb against the teeth resulting in tongue tip
displacement, there was a small amount of accommodative lingual deformation and
superior hyoid displacement as a function of bulb positioning in the anterior oral
cavity ( 4.2.4 C). The effect of this pre-swallow accommodative effect could not be
systematically assessed in the current protocol since the presence of the intra-oral
device was essential to the acquisition of MR data.
4.3
4.3.1
Traditional PC
Protocol
Each subject swallowed 2.5 ml of water 4 times to compile a complete set of strain data
at one time interval in two slices. The water was delivered via a subject-controlled
syringe attached to rubber tubing that inserted into the side of the subjects mouth.10
sets of strain data were then averaged together in each image, and 4 different time
intervals were sampled, resulting in a total of 160 swallows per subject to create complete data set of 4 time intervals and two adjacent slices. We also point out that
our method incorporates an internal control for subject fatigue, that is, the magnitude of the pressure applied to the intra-oral bulb during the course of the swallow.
Interestingly, by this measure, our subjects did not demonstrate any evidence of fatigue during the course of these trials. In these experiments, the volume observed
was comprised by 2 slices; each is made up of a set of 3x3x3 mm3 voxels, located
41
Figure 4.2.4: Mechanism for gating phase contrast MR image acquisition
A swallow based MR acquisition gating system was developed to provide a basis for
precise temporal sequencing and spatial registration, based on the pressure applied
by the tongue to a sensing bulb (Blaise Medical) situated against the hard palate at
the outset of late accommodation. Upon achieving threshold pressure, a 5 V signal
is elicited which triggers MR acquisition. A) Photograph of system components,
consisting of a small (3 cm length) tongue bulb in series via 1/16 ID tubing with a
pressure transducer whose output is directed to Labview hardware/software and a
pressure driven 5 V trigger signal elicited. B) Block diagram of system components,
C) Magnitude MR images of the tongue in the absence of (a) and the presence of the
gating bulb (b) indicating accommodative lingual deformation and hyoid displacement
as a function of bulb position. D) Pressure tracing (upper) induced by the tongue
applied to the hard palate via the sensing bulb and the threshold for eliciting an
electrical trigger pulse (lower tracing).
42
Figure 4.3.1: Demonstration of lingual pattern of deformation during bolus propulsion
Sequence of magnitude MR images intended to demonstrate the characteristic pattern of lingual deformation associated with propulsion of the liquid bolus from the
oral cavity to the pharynx. 80 magnitude images were acquired per time point, and
averaged together to create an image of the tongue at four time points during swallowing, 0, 200, 400, and 600 ms following trigger pulse application. The pocket of
low signal located in the anterior-superior oral cavity is the tongue bulb employed
for recording lingual pressure applied to the hard palate, whereas the pocket of low
signal in the posterior-superior oral cavity represents the approximate position of the
liquid bolus (shown with an asterisk in each image).
adjacent to and on the left and right of the mid-sagittal plane. The application of
each velocity encoding pulse was elicited by a 5 V electrical signal triggered by tongue
pressure on the hard palate. Acquisitions occurred at 0, 200, 400, and 600 ms from
the elicitation of the trigger point. The pulse sequence is similar to the one used by
Tseng et al [52]. Specific imaging parameters included: echo time 54 ms, repetition
time 274 ms, and VENC 0.67 cm/s/cycle. One acquisition was performed in each
slice per swallow, and acquisitions alternated between the two slices. The effective
repetition time for a particular slice was never less than 3 seconds, and determined by
the speed at which the subject could comfortably swallow repeatedly. The technique
was validated over 13 subjects, whereas quantitative gated phase contrast data was
obtained in 5 subjects (3 males, 2 females). Data was acquired using a 1.5 Tesla
Siemens Avanto whole-body scanner equipped with two custom-built surface coils,
approximately 150mm2 in area, placed on each cheek and gently secured with tape.
43
4.3.2
Results
Experiments were performed to assess the local strain rate function occurring in the
tongue musculature during the propulsive phase of swallowing. Strain rate was derived from the phase differences recorded within temporally sequenced MR images,
and the resulting strain rate tensors superimposed in the form of quantifiable icons
on the magnitude images of the tongue during deformation. Inasmuch as strain rate
values are provided in Lagrangian terms, they have units of s−1 . Thus zero defines an
absence of strain, while a strain rate that would increase the length of the material
by 100% per second may be represented as 1 s−1 . We demonstrate in 4.3.1 the prototypical bulk motion of the tongue during the propulsive phase of a 2.5 ml water bolus
swallow. The image sequence shown depicts the magnitude images acquired during
a period of time sufficient to complete the propulsive action (generally 600 ms). The
images display the averaged intensity of the complete set of magnitude images at
each time point for a representative subject, with brightness proportional to signal
intensity. The position of the pressure sensing bulb is shown as a signal void in the
anterior oral cavity, whereas the approximate position of the water bolus is detected
as a signal void in the posterior oral cavity. The strain rate tensors were calculated
from the phase contrast data and overlaid on the magnitude images as icons during a
2.5 ml water bolus swallow. We display in 4.3.2 (single subject) and 4.3.3 (all sagittal
subjects combined) the strain rate sequence at 0, 200, 400, and 600 ms following
the application of the gating pulse. The data at each time point was measured in
54 ms, but acquisitions were limited to 4 time points and 200 ms resolution to allow sufficient averaging without overexerting the subject. We employ throughout a
convention of blue icons representing expansive strain and red icons representing compressive strain (see Methods), with the orientation of each strain rate icon aligned
with the primary and secondary strain rate vectors and the length of each strain
rate icon proportional to the magnitude. This approach allows us to quantify strain
rate per voxel and for designated voxel arrays. Acknowledging the continuous nature
of the tongue musculature, individual strain rate icons are displayed, although the
44
association of the icons with the distribution of known muscles, i.e. genioglossus, styloglossus, etc. is also noted when appropriate. The pattern of strain rates occurring
during lingual propulsion exhibited a combination of compressive and orthogonally
commensurate expansive events distributed throughout the tissue. At the point of
gating pulse elicitation, there were 4 prominent strain rates observed: 1) Compressive
strain (maximum measured compression was 0.33 s−1 ) aligned obliquely between the
anterior-inferior and the posterior-superior regions of the tongue, with commensurate
expansion in the same orientation limited to the posterior-superior region of tissue.
These strain rate vectors were coincidental with the alignment of the anterior and
posterior distributions of the genioglossus muscle. 2) Compressive strain (maximum
measured compression was 0.40 s−1 ) aligned obliquely between the anterior-superior
to the posterior-inferior regions (exactly orthogonal to the above noted compressive
strains), with commensurate expansion in the posterior superior region of the lingual
tissue. 3) Vertically aligned compressive strain (maximum measured compression was
0.45 s−1 ) located in the approximate distribution of the palatoglossus and orthogonal
to the surface of the bolus, combined with expansive strain (maximum measured expansion was 0.45 s−1 ) tangent to the bolus. These latter effects are likely to represent
commensurate expansion orthogonal to the palatoglossus and passive effects of the
bolus itself. The net effect of these events is the containment and positioning of the
bolus in the posterior oral cavity. 4) Compressive strain (maximum measured compression was 0.36 s−1 ) in the posterior-inferior region of the tissue directed obliquely
to the styloid process, which is likely to represent passive compression due to contraction of the contractions of the laterally-inserted styloglossus. At 200 ms, there were
considerably more modest amounts of compressive (maximum measured compression
was 0.41 s−1 ) strain aligned obliquely between the anterior-superior and the posterior
inferior regions of the tissue, with commensurate orthogonal expansion (maximum
measured expansion was 0.30 s−1 ) in the posterior region, along with vertically and
obliquely aligned compressive strain (maximum measured compression was 0.29 s−1 )
in the posterior-superior tissue. At 400 ms, there was prominent compressive strain
(maximum measured compression was 0.63 s−1 ) occurring in the middle and posterior
45
Figure 4.3.2: Strain rate patterns exhibited by the tongue during bolus propulsion
(sagittal, 4 time points)
Strain rate tensors were derived in a sagittal image slice using PC MRI for a set
of voxels comprising the tongue during the propulsive phase of swallowing of a 2.5
ml water bolus. Each image was compiled by averaging two slices, comprising ten
sets of strain rate data each, acquired from 80 swallows total. Principle strain rates
within each voxel are shown graphically as rhombi with a long axis parallel to the
principle strain vector, and length proportional to the magnitude of the strain rate.
For each voxel, 2 orthogonally aligned rhombi may be represented for the primary
and secondary strain rate. Shown in this figure is a sequence of 4 images obtained
from a single subject at A) 0, B) 200, C) 400, and D) 600 ms from the application
of the gating pulse. The strain rate icon displayed for scale in the lower left of each
image represents 0.33 s−1 .
46
tissue regions and aligned obliquely between the anterior-inferior and the posteriorsuperior regions of the tongue (consistent with contraction of the genioglossus and
styloglossus) with commensurate orthogonal expansion (maximum measured expansion was 0.38 s−1 ) and vertically aligned expansion (maximum measured expansion
was 0.48 s−1 ). At 600 ms, there was expansive strain aligned in three identifiable
orientations (maximum measured expansion was 0.38 s−1 ), obliquely between the
anterior-inferior and the posterior-superior regions, obliquely between the anteriorsuperior and posterior-inferior regions, and vertically in the mid and posterior regions
of the tissue.
In order to resolve the mechanical events associated with transverse directed
strain, we acquired 2 coronal images (anterior and posterior tongue) at 0 and 400 ms
following the gating pulse (4.3.4). The exact location of the slice in each instance is
shown in the magnitude images (insert). In general, the strain events showed sagittal
symmetry and a predominance of strain (compressive and expansive) in the posterior
tongue at the 400 ms time point. At this time point, in the anterior tongue image, the following was observed: 1) prominent mid-line compressive strain (maximum
strain rate 0.29 s−1 ) in the inferior portion of the tissue along with commensurate
expansion in the superior portion of the tissue, 2) oblique and transverse compression (maximum strain rate 0.39 s−1 ) consistent with bi-directional contraction of the
core intrinsic muscles and commensurate orthogonal tissue expansion. At this same
time point, in the posterior tongue, the following was observed: 1) obliquely aligned
compressive strain in the lateral and inferior portion of the tissue (maximum strain
rate 0.23 s−1 ), consistent with contraction of the hyoglossus, 2) oblique, vertical, and
transversely aligned compression in the middle and superior portions of the tissue
(maximum strain rate 0.24 s−1 ) with orthogonal expansion, consistent with contraction of the transversus and verticalis fibers.
47
Figure 4.3.3: Combined lingual mechanical data (sagittal)
The mean expansion (blue) and compression (red) for 3 subjects, comprising 30 acquisitions total, in the x and y-directions (sagittal orientation) in four different regions
of the tongue were graphed separately, as displayed in the reference image. The regions consisted of the superior-posterior (1), superior-middle (2), superior -anterior
(3), and inferior-middle (4) and were empirically selected based on patterns of strain
rate observed. Comparisons were made of the mean ± standard deviation of strain
rate amplitude between regions at a single time point which was 0, 200, 400, and
600 ms following application of the lingual trigger pulse (displayed as †) and between
different time point for a single region (displayed as ).
48
Figure 4.3.4: Strain rate patterns exhibited by the tongue during bolus propulsion
(coronal)
Strain rate tensors from a single subject were derived by PC MRI during a 2.5 ml
water bolus swallow, and displayed at 0 and 400 ms in 2 coronal image slices from
the anterior and posterior tongue. Each image was compiled by averaging two slices,
comprising ten sets of strain rate data each, acquired from 80 swallows total. Upper
row: mid-sagittal image slice. Middle row: anterior coronal slice. Lower row: posterior coronal slice. The slice location for each strain tensor images is shown in the
left column. These results demonstrate that the early posterior directed compressive
strains (0-200 ms) are followed at 400 ms by compressive strains directed along the
direction of the tranversus and the vertically aligned genioglossus and verticalis fibers.
The latter mechanical events possess close temporal correlation with the major component of retrograde expansion characteristic of the propulsive phase. The strain rate
icon displayed for scale in the lower left of each image represents 0.33s−1 .
49
4.4
SER
Based on the results of our traditional PC experiments, the next step was identified as
enhancing the temporal scale of our imaging. Patients were demonstrating significant
strain rate events. However, the temporal placement and relative magnitude of these
events was variable, suggesting that the sequence of these events occurred on a scale
less than 200 ms. In addition, the number of swallows was exhausting to our subjects.
Simultaneous Echo Refocusing (SER) PC imaging allows multiple slices to be imaged
simultaneously by sampling voxels from alternating slices. This, in addition to other
changes to the protocol, was done in order to improve on our previous experiments.
The Mathematica code was slightly modified, and can be seen in Appendices C-D.
4.4.1
Protocol
6 time points (0, 100, 200, 300, 400, and 500 ms after gating) were sampled, and time
point was averaged from 5 data sets of 4 swallows each, for a total of 120 swallows.
The gating system used was the one outlined above. The TE/TR was 80/1000 ms,
and the VENC=1 cm/sec/cycle. 4 subjects (3 male, 1 female), ages 21-24, in good
health and with no complications, were measured.
4.4.2
Results
4.4.1 displays the strain rate events at 6 time points, overlaid on the corresponding
averaged magnitude images. Each strain rate vector is displayed as a rhombi with
long axis aligned to the vector, and length proportional to its magnitude. Blue
means expansion, and red means contraction. Each time point was sampled over
80 ms. The figure demonstrates a series of interacting strain rate events through
the approximately 600 ms imaged. At 0 ms (A), there is compression occurring
obliquely, radiating from the bolus to the lower left and lower right. These events are
consistent with contraction of the palatoglossus and verticalis. In addition, there is
expansion oriented superior-posterior, which could be due to orthogonal expansion of
the palatoglossus tissue, or pulling of the styloglossus. At 100 ms (B) These events
50
Figure 4.4.1: Strain rate patterns exhibited by the tongue during bolus propulsion
(sagittal, 6 time points)
Strain rate tensors were derived in a sagittal image slice using PC MRI for a set of
voxels comprising the tongue during the propulsive phase of swallowing of a 3 ml water
bolus. Each image was compiled by averaging two simultaneous slices, comprising five
sets of strain rate data each, acquired from 20 swallows total. Principle strain rates
within each voxel are shown graphically as rhombi with a long axis parallel to the
principle strain vector, length and hue proportional to the magnitude of the strain
rate, and color indicating expansion (blue) or compression (red). For each voxel, 2
orthogonally aligned rhombi are representative for the primary and secondary strain
rate. Shown in this figure is a sequence of 6 images obtained from a single subject
at A) 0, B) 100, C) 200, D) 300, E) 400, and F)500 ms from the application of the
gating pulse. The strain rate icon displayed for scale in the lower left of each image
represents 0.33s−1 .
51
are ongoing, but their magnitude is smaller. At 200 ms (C), most of these events have
disappeared, but there is still small compressive events in the anterior-superior area,
along the verticalis, and in the posterior-inferior area, consistent with the hyoglossus.
300 ms (D) displays large oblique compression consistent with contraction of the
genioglossus, as well as orthogonal expansion. There is also compression consistent
with hyoglossus contraction. 400 ms (E) shows a similar compression consistent with
the genioglossus, as well as expansion along the verticalis. The bulk structure shows
the bolus opening into the throat. 500 ms (F) shows expansion throughout the tongue,
including along the genioglossus, hyoglossus, and verticalis.
To quantitatively relate the local strain tensors into continuous mechanical events,
tractography was applied to the compressive and expansive strain rate vectors to create strain rate tracts (Appendix E). These tracts were visualized and overlaid on their
corresponding magnitude images at 6 time points (4.4.2). At 0 ms (A) strain rate
tracts extend from the bolus obliquely to the anterior of the tongue, and inferior,
along the general path of the verticalis and palatoglossus, respectively. In addition,
there are orthogonal expansion tracts throughout the tongue. At 100 ms (B) There
are similar tracts emanating from the bolus, but the anterior fibers are have moved
up to a longitudinal orientation, and the posterior tracts extend farther to the inferior tongue. 200 ms (C) shows similar tracts again, but the vertical tracts have more
variation, possibly as the intrinsic muscles begin to reconfigure, and the tip of the
tongue is contracting vertically as well as horizontally. At 300 ms, obliquely-aligned
strain rate tracts originate in the anterior-inferior portion of the tongue where the
mandibular attachment of the genioglossus is located, and fan out in the posterior
and superior directions, consistent with contraction of the genioglossus. There are
additional compressive tracts consistent with geniohyoid (anterior inferior, obliquely
aligned), the hyoglossus (posterior inferior, obliquely aligned) and palatoglossus (posterior superior, vertically aligned). 400 ms (E) shows similar tracts as at 300 ms,
including compressive tracts aligned with the genioglossus, geniohyoid, and hyoglossus. The bolus can be seen opening into the throat. 500 ms (F) shows expansive
strain tracts through most of the tongue, as well as obliquely oriented strain in the
52
Figure 4.4.2: Strain rate tractography of the tongue during bolus propulsion (sagittal)
Strain rate tensors were derived in a sagittal image slice using PC MRI for a set
of voxels comprising the tongue during the propulsive phase of swallowing of a 3
ml water bolus. Each image was compiled by averaging two simultaneous slices,
comprising five sets of strain rate data each, acquired from 20 swallows total.Adjacent
and similarly aligned (angle difference less than 35◦ ) strain rate vectors are connected
via tractography. Any strain rate line reaching a connected voxel continues through
that voxel, along the new voxels vector direction.
anterior of the tongue (possibly verticalis contraction) and the inferior of the tongue
(possibly hyoglossus contraction).
4.5
Discussion
The tongue is a structurally complex muscular organ, which is responsible for the
manipulation and transport of food in the oral cavity during swallowing. Through a
series of precisely timed shape changes, the tongue first configures and then propels
the ingested bolus of food from the oral cavity to the pharynx. Conceiving the basis
for lingual deformation during swallowing requires an understanding of how the organ
53
moves in relation to extrinsic structures, such as the jaw and hyoid bone, as well as
the underlying relationship between intramural structure and function. In order to
conceptualize the vast array of mechanical operations associated with lingual deformation, we have considered the tongue as a muscular hydrostat, a muscular structure
defined by its ability both to create motion (via tissue displacement) and provide the
skeletal support for that motion (via elongation and stiffening) [43, 42]. The mammalian tongue is a particularly interesting form of hydrostat since its deformations
are predicated on the contractions of both intrinsic and extrinsic muscle fibers merged
structurally and functionally within the body of the tongue. The designation of the
tongue as a muscular hydrostat infers several important properties, namely the coexistence of orthogonally aligned muscle fiber populations which contract synergistically
to generate physiological motion and the conceptualization of the tissue as an array
of contiguous elements producing varying degrees of compressive or expansive strain.
We have previously studied lingual mechanics during prototypical deformations,
i.e. protrusion and bending, and during swallowing with tagged magnetization MRI
[33, 34]. This method quantifies local strain by tracking the deformation of a 2D grid
of saturated magnetic bands superimposed on the MR image. By this approach we
assayed the lingual musculature during each of the cardinal phases of the swallow,
namely early accommodation (bolus held in the anterior oral cavity), late accommodation (bolus transferred to the posterior oral cavity), and propulsion (bolus propelled
retrograde from the oral cavity to the pharynx). These experiments, combined with
the results of our previous work [12, 29], allowed us to consider several postulates
regarding lingual deformation during the swallow: 1) The containment of the bolus
during early accommodation results from a synergistic contraction of the anterior genioglossus, combined with the contractions of the hyoglossus, verticalis, and transversus muscles. 2) The posterior shifting of the bolus during late accommodation results
from an increase in inferior directed strain located in the posterior tongue and is related principally to contractions of the hyoglossus and genioglossus muscles. 3) The
prototypical deformation of the tongue occurring during propulsion results from the
effects of posterior directed contraction of the styloglossus and possibly bidirectional
54
contraction of the transversus and verticalis muscles [47]. It should be noted that
contraction of the styloglossus alone could not generate expansive strain above its
insertion point, in the mid-portion of the tongue’s lateral surfaces since the tongue is
constrained from below.
These results illustrate an important limitation in the use of tagged magnetization
in the study of lingual mechanics, namely the inability to resolve spatially complex
and dynamic 3D strain fields. To address this issue, we modified a technique previously applied to the study of cardiac mechanics, gated phase contrast MRI, or PC
MRI [9, 10, 23, 56] to characterize lingual mechanical function. From a practical
perspective, velocity encoding is applied in 4 directions and strain rate derived from
the difference in velocity between adjacent voxels for each gradient direction. This
latter requirement, in combination with the relatively low MR signal intensity resulting from velocity encoding, provides the rationale for image gating to achieve
temporal reconstruction. In contrast to prior approaches for temporal reconstruction
of the swallow employing superficial EMG recordings [39], we employed in this study
a novel method to gate MR acquisition based on the signal resulting from peak lingual tip pressure applied to the hard palate through an intra-oral pressure-sensing
bulb during early propulsion. We demonstrated in preliminary studies that the interval between the achievement of threshold lingual pressure and the initiation of the
propulsive deformation is quite short (¡ 0.1 sec) and highly reproducible. This form
of MR gating provides both timed MR acquisitions as well as a method for accurate
retrospective sequencing of the images acquired. It should be acknowledged however
that lingual pressure-gated swallows may differ from physiological swallows due to
the presence of the bulb in the anterior oral cavity and the effects of the bulb on
pre-swallow lingual mechanics. These effects include a small, but significant, effect
on lingual shape and superior hyoid displacement, which may itself be accentuated
by the fact that subjects were required to maintain a supine position in the MRI
scanner apparatus. While important, these effects were largely mitigated by the facts
that the pressure exerted by the bulb on the surface of the tongue was negligible, as
indicated by the relatively small amount of air displaced from the bulb relative to
55
the air within the tubing, and the space occupied by the bulb was largely eliminated
by the pressure applied by the tongue to the hard palate through the intra-oral bulb.
Lastly, our previous studies have demonstrated the capacity of subjects to swallow
repeatedly in this position. Thus, while effects of bulb presence and subject position
on swallow mechanics are unavoidable, these effects should be relatively small during
the active phases of deformation.
Through the application of gated phase contrast MRI, we studied the mechanisms
involved in the genesis of rapid lingual reconfiguration during propulsion. Our traditional results demonstrate that: the propulsive phase of swallowing is associated
with a tightly organized series of compressive and expansive events occurring within
a period of approximately 600 ms. In the initial portion of the propulsive phase
(images obtained at the time of gating pulse application and 200 ms from the gating pulse). we observed the following events: 1) obliquely aligned compressive and
expansive strain in the approximate fan-like distribution of the genioglossus, 2) vertically aligned compressive strain consistent with passive compression secondary to
palatoglossus contraction and active compression secondary to verticalis contractions
combined with orthogonal expansion, 3) compressive strain aligned obliquely between
the anterior-superior to the posterior-inferior regions with commensurate expansion
in the posterior superior region, effects possibly related to passive compression due
to laterally inserted contraction of the hyoglossus, and 4) compressive strain aligned
obliquely and directed to the styloid process. The latter may reflect passive compression due to the laterally inserted fibers of the styloglossus or active compression
secondary to more medially inserted fibers. The combined effect of these mechanical
events is the effective re-configuration of the tongue prior to posterior displacement.
Lingual deformation during the latter portion of the propulsive phase (images obtained at 400 and 600 ms from the gating pulse) appeared to involve prominent
compressive strain occurring in the mid and posterior region of the tissue obliquely
aligned between the anterior inferior and posterior superior regions of the tissue, suggestive as well of the distribution of the genioglossus with commensurate orthogonal
expansion, along with bidirectional contraction in the approximate distribution of the
56
intrinsic core fibers and expansion in the anterior-posterior orientation. Interestingly,
this expansive phase coincided precisely with the delivery of the flattening of boluscontaining concavity and the apparent delivery of the bolus to the pharynx. Despite
some intersubject variation in the precise timing of compressive and expansive strain
rates, these general patterns were exhibited by all subjects, thus substantiating the
postulate that the cardinal lingual motions are a due to mechanical interactions of
the intrinsic and extrinsic muscles.
The SER results confirm the validity and conclusions of the traditional PC technique, while revealing new details. The swallow beyond tongue tip pressure on the
hard palate consists of three phases: a bolus formation phase, during which there is
compression surrounding the bolus, in the region of the verticalis and palatoglossus,
consistent with pulling of the tongue surface downwards to create an indentation. This
lasts for 100-200 ms, depending on the subject. There is then oblique compression
along the genioglossus, and expansion in the verticalis and palatoglossus. During this
period, the bolus opens into the throat. This phase lasts 100-200 ms as well. After
the bolus moves into the throat, expansion occurs throughout the tongue, suggesting
that the tongue is relaxing after delivery of the bolus. The bulk configuration of the
tongue at this point is approximately 20 mm shorter. The strain tracts indicate that
strain rate patterns are coordinated mesoscale events throughout the tongue. Compression surrounding the bolus during the formation phase continues along aligned
strain rates through the depth of the tongue. Compression in the verticalis curves
vertically from the mid-anterior of the tongue to a posterior direction in the superior
tongue. Compression in the genioglossus connects in strain rate tracts to a concentrated posterior point mandible, and extends outward in a fan-like pattern, merging
with compressive events occurring in the hyoglossus and palatoglossus. Strain rate
events occur through the tongue in synergistic relationships.
This approach constitutes a significant advance over previous techniques since it
provides a method to assay simultaneously the rates of compression and expansion
during physiological motion. This technique may potentially be combined with measures of underlying lingual myoarchitecture, thus constituting a method by which the
57
rate and direction of fiber shortening can be determined. We previously considered the
proposition that propulsive lingual deformation is associated with a combination of
internal stiffening and hydrostatic elongation resulting from the bidirectional contraction of the transversus and verticalis muscles combined with retracting force applied
by the laterally inserted styloglossus [33]. We have now extended this conceptualization of tongue deformation to include a more complex sequence of material strains
(compression and expansion) involving the various segments of the genioglossus muscle, tight integration of extrinsic and intrinsic strain behavior, and passive elements
of compressive and expansive strain related to contractions not included in the particular imaging slice i.e. styloglossus and hyoglossus, and secondary mechanical events
imposed by the tongues inherently isovolemic conditions. It should be recognized that
the exact timing of the events described may vary somewhat with prior descriptions
of lingual deformation due to the presence of the bulb in the oral cavity and changes
in lingual shape and mechanics before the initiation of the observed sequence.
The extension of phase contrast MRI, previously applied to determine cardiac
strain, to imaging the mechanical function of the tongue during swallowing contained
several technical challenges, owing to the fact that the tongue is both structurally and
mechanically more complex than the heart. By establishing a method of MRI gating associated with threshold lingual pressure applied to the hard palate during late
accommodation, and by adopting a velocity encoding for the highly variable strain
rates exhibited by the tongue with minimal artifact attributable to the air-tissue interface in the oral cavity, we were able to achieve reliable strain rates involving the
tongue during swallowing. However, several limitations of this approach should be
acknowledged. While generally consistent mechanical patterns were exhibited, some
of the events shown were quite variable. By our analysis of this variability, it may be
that precise time where certain mechanical events occurred varied subtly but significantly between subjects, an issue which could become even more important in the
case of pathological tongue motion. We anticipate accordingly that future studies
may thus require considerably greater temporal resolution. A second limitation was
the need to resolve transverse planar strain separate from anterior-posterior planar
58
strain. While the high degree of mechanical symmetry and coherent strain rate patterns exhibited by the tongue indicate that we are accurately measuring strain rate
in the tongue, there are theoretical limitations for resolving complex intravoxel strain
patterns, which would be helped through the use of techniques capable of acquiring
3D strain rate directly. We should also acknowledge that since our current approach
is directed to resolving internal tissue strains, it does not have sufficient resolution
to accurately determine surface deformation or possess appropriate contrast to visualize bolus displacement [2, 4, 39, 59]. Thus the relationship between internal strain
and physiological bolus manipulation can not be measured directly with the current
techniques.
We conclude that gated phase contrast magnetic resonance imaging can be adapted
with appropriate gating to assay the tongues internal strain events associated with
bolus propulsion. Our results demonstrate that bolus propulsion may be attributed
to a synergistic sequence of compressive and expansive mechanical events involving
both the intrinsic and extrinsic muscles, whose net effect is the orderly delivery of the
ingested bolus from the oral cavity to the pharynx.
59
60
Chapter 5
Relationship of Form and Function
The myoarchitecture of the tongue has been thoroughly explored, and the mechanical
function of the tongue during swallowing has been extensively measured. However,
the form and function have not been quantitatively related. In order to determine
the key physiological interactions between the muscles explicitly, the time-dependent
contraction functions are derived by relating local fiber direction and the co-located
strain rate tensor.
5.1
Relating Data
Contraction or relaxation of a uni-directional fiber population in an isotropic material
will result in a parallel compressive or expansive strain rate. While the tongue is
significantly more complex, and strain rates can be due to co-located or adjacent
fiber populations acting on the tissue indirectly, significant muscle activity will often
result in co-located strain rates parallel to the active fibers. To solve quantitatively
for these parallel strain rates, the DTI and PC images were first lined up visually,
in reference to their magnitude images, so that each DTI voxel had a corresponding
co-located PC voxel. The aligned strain rate is computed as the dot product between
the diffusion vector and each principal strain rate vector.
~
ǫ˙ · ~
v = ǫ̇aligned
61
(5.1.1)
The full Mathematica code used is in Appendix F.
5.2
Results
Two-dimensional DTI tractography images were created by finding the component
of each diffusion vector within the mid-sagittal (x-z) plane. These vectors were then
connected via the tractography methods described earlier (maximum angle connection 35◦ ). In 5.2.1, A three-dimensional DTI tractography image (A) is compared
to a two-dimensional interpretation of DTI tractography (B), created by finding the
mid-sagittal component of the diffusion vectors. In both images, green indicates longitudinal tracts, blue indicates vertical tracts, and red indicates transverse tracts
(nonexistent in the two-dimensional interpretation). The major mid-sagittal muscles
are similar in both images. Both contain a verticalis in the interior of the tongue, a
fan-like genioglossus beginning at the mandibular connection and expanding posteriorly, and a geniohyoid.
In 5.2.2 two-dimensional tractography for one subject is
shown at 0 ms - 500 ms after the gating signal. The fibers are colored according to
the dot product of the unit diffusion tensor and the co-located strain rate vector. At
0 ms (A), Compression can be seen in the fibers representing the verticalis and the
palatoglossus, as well as expansion in the genioglossus. This expansion could be due
to the contraction of the styloglossus in the superior-posterior of the tongue, pulling
on the genioglossus, or orthogonal expansion related to contraction of the palatoglossus. 100 (B) and 200 (C) ms show similar strain rate events, but in slowly decreasing
magnitude. At 300 ms (D) compression in the palatoglossus continues. Compression also occurs throughout the genioglossus and expansion in the geniohyoid and
verticalis, likely relaxation of contraction. 400 ms (E) shows continued compression
in the genioglossus and expansion in the geniohyoid and verticalis, as well as a bulk
longitudinal shortening of the tongue, as the bolus opens into the throat. 500 ms (F)
shows expansion throughout the tracts, along with isolated voxels of compression in
the verticalis and the genioglossus.
In 5.2.3, the fiber-aligned strain rates within the genioglossus and the verticalis
62
Figure 5.2.1: Comparison of two-dimensional and three-dimensional DTI tractography of the human tongue
Two-dimensional diffusion vectors were measured via DTI MRI and connected into
mesoscale structures via tractography. These tracts represent the mid-sagittal fiber
architecture of the tongue. The hue of these tracts represents the magnitude of the
co-located strain rate tensors and their alignment with the diffusion vectors. Strain
rate tensors were derived in a sagittal image slice using PC MRI for a set of voxels
comprising the tongue during the propulsive phase of swallowing of a 3 ml water
bolus. Each image was compiled by averaging two simultaneous slices, comprising
five sets of strain rate data each, acquired from 20 swallows total.
63
Figure 5.2.2: Fiber-aligned strain rate within the human tongue during bolus propulsion (sagittal)
Two-dimensional diffusion vectors were measured via DTI MRI and connected into
mesoscale structures via tractography. These tracts represent the mid-sagittal fiber
architecture of the tongue. The hue of these tracts represents the magnitude of the
co-located strain rate tensors and their alignment with the diffusion vectors. Strain
rate tensors were derived in a sagittal image slice using PC MRI for a set of voxels
comprising the tongue during the propulsive phase of swallowing of a 3 ml water
bolus. Each image was compiled by averaging two simultaneous slices, comprising
five sets of strain rate data each, acquired from 20 swallows total.
64
Figure 5.2.3: Combined fiber-aligned mechanical data (sagittal)
The average fiber-aligned strain rates within the fiber groups identified as the genioglossus and the verticalis were graphed over the 6 time points. Data represents
measurements of 5 data sets from each of two subjects, for a total of 10 data sets. The
genioglossus shows a trend of 0.05 s−1 expansion at 0-100 ms to a maximum compression of -0.25 s−1 at 300 ms. The verticalis starts with a maximum compression
of -0.15 s−1 , and reaches a maximum expansion of 0.3 s−1 at 400 ms.
of two subjects are graphed over 6 time points of the swallow. The strain rate in the
genioglossus starts with an expansion of 0.05 s−1 for 0-100 ms during the swallow,
and then switches to compression, with a maximum of -0.25 s−1 at 300 ms. This
compression coincides with propulsion of the bolus and opening of the throat. at 500
ms, it returns to an expansion of 0.05 s−1 . The difference between the strains at
100 ms and 300 ms was statistically significant (p<0.07). The strain rate within the
verticalis is compressive for 0-200 ms, starting at -0.15 s−1 . This period is concurrent
with formation of the bolus and pressure of the tongue tip on the hard palate. From
300-500 ms, the verticalis exhibits expansion, with a peak of 0.3 s−1 at 400 ms.
The difference between the strains at 200 ms and 400 ms was statistically significant
(p<0.05).
5.3
Discussion
The tongue’s structural complexity gives rise to several interactions between different
fiber groups. By observing the strain rate function of the tongue related to the
underlying architecture, the interplay of these muscles can be observed explicitly.
65
The quantitative fiber-aligned strain rate data provides significant advantages over
the DTI tractography data standing alone. Because the tongue has at least 8 different
muscles, there is significant redundancy in how the muscles could activate to achieve
particular deformations. A static image of the tongue architecture reveals the many
ways in which the tongue could form itself, but does not show how it actually happens.
The fiber-aligned strain rate data reveals the time-sensitive interactions of the fiber
tract populations during swallowing.
In addition, the fiber-aligned strain rate data provides information that is unavailable to the strain rate functions via Phase Contrast alone. Strain rates reveals how the
tongue deforms when shaping and then propelling the bolus. However, the contractile
events causing the deformations can only be assumed. By measuring how these strain
events align with the architecture, the contractile events can be determined.
The results reveal that bolus formation and propulsion is the result of synchronized
contraction among several fiber populations within the tongue. The observations include three significant activities within the tongue:
1. Formation of the bolus occurs within the first 200 ms after the gating pulse, and
is due to contraction of the verticalis and palatoglossus. During this time, the genioglossus extends, due to pulling from the styloglossus, or orthogonal contraction of
the verticalis and palatoglossus.
2. The bolus is propelled to the throat, and opens into the throat 300-400 ms after
the gating pulse. This is due to contraction of the entire genioglossus. During this
time, there is expansion in the verticalis and palatoglossus, due to both relaxation
and orthogonal compression.
3. At 500 ms, there is expansion along all fiber tracts, with isolated voxels of compression. The bolus has already entered the throat, suggesting that the tongue is
relaxing from it’s deformed state.
Limitations still exist within this technique. Without an EMG or similar measurement technique to monitor within the individual fibers, it is impossible to prove
whether each aligned compressive event is the result of contraction, or a passive effect from some other mechanical action. In addition, the DTI tractography data
66
used as a template for the mechanical events is captured when the tongue is at rest.
During the swallow, the architecture will change its conformation. The technique
also has limited range: Currently only the mid-sagittal slice can be imaged, with
two-dimensional strain rate tensors. To capture the complete contractile events, full,
three-dimensional strain rate functions must be measured. However, the technique
as it stands is capable of revealing contractile events within the field of view.
In conclusion, the technique of quantitatively relating PC strain rate data with
DTI fiber tractography is capable of observing and measuring contractile events within
the tongue and other muscles. The data has shown that the human swallow comprises
several synchronous muscle contractions to form and propel the bolus, which alter
the shape of the tongue to achieve bolus delivery.
67
68
Chapter 6
Conclusion
The initial purpose of this work was to establish the validity of fiber tracts as a
mesoscale structure within the tongue. Tracts are an artificial grouping of adjacent
and similarly-aligned fibers, but are effective in separating muscles in a complex structure such as the tongue. It was determined that muscle function must be measured
in order to observe if, and how tracts functioned as units. Phase Contrast was chosen
because of its high sensitivity and capacity for three-dimensional measurement, but
as a relatively new MR technique, it required a large amount of effort to bring it to
bear on the tongue. While there were limitations, the technique was successful in
capturing complex two-dimensional strain rate events within the tongue. By observation, they appeared to have a relationship to certain muscles within the tongue,
but these were only observations. In addition, inter-subject variability was high, even
while intra-subject variability was relatively low. This suggests that the mechanical
events are more complex than the current protocol is capable of discerning.
In order to quantitatively relate the data, the dot product between diffusion vectors and co-located strain rate vectors provide both a means for observing function
and form at the same time, and also an indication of which muscle fibers are acting. This method does not prove which muscles are activating, because the complex
architecture provides many redundancies for motion. It does, however, provide valuable insight into how this complex muscular architecture operates, as well as a strong
indication about which muscle groups take part in swallowing, and when.
69
6.1
Future Work
The work within this thesis represents a novel medical imaging methodology. The
results were achieved by combing two relatively new imaging methods (DTI and PC
MRI) in a geometrically rigorous way to achieve a new level of interrogation within
the anatomy and physiology of the tongue. Because of its immaturity, several aspects
of the technique are still in development. There are three aspects of this work which
should be pursued to realize its full potential: Improvement of the MRI techniques,
application on other muscles, and use in clinical analysis.
Diffusion Tensor Imaging revealed the largest muscle groups, and several aspects of
their complex integration. However, DTI can only identify the direction of the largest
fiber population within each voxel. Significant regions of the tongue have two or more
locally crossing fiber populations. Diffusion Spectrum Imaging (DSI) is a technique
similar to DTI in that it measures diffusion along several gradients to determine
local structure. DSI, however, can identify multiple crossing fiber populations by
measuring several local diffusion maxima within a voxel. A structural model with colocated crossing fibers would give greater understanding of how a complex muscular
hydrostat like the tongue stiffens and moves.
Our Phase Contrast techniques could also be improved with respect to temporal
resolution and spatial range. Temporally, 80 ms is needed for a single data acquisition
using PC SER. However, based on the variations between subjects, it appears that
a smaller acquisition window is needed to fully determine the mechanical function of
the tongue. Spatially, three-dimensional phase contrast is possible, but could not be
harnessed within the tongue by us at this time. An improvement of this technique,
combined with more slices to capture the entire tongue, would allow us to measure
the strain rates along every fiber population of the tongue.
While the tongue is structurally the most complex muscle, this technique could
reveal information about several others. Both DTI and PC MRI have been applied
to the heart; the data from the two techniques has not, however, been related as
thoroughly as in this thesis. The esophagus is another muscle with structural and
70
mechanical complexity that our lab plans on investigating with this technique.
When these improvements have been completed, the technique could be used
to clinically analyze adverse muscular conditions in patients. Muscular dystrophy,
strokes, and heart attacks could be observed using this technique to determine the
extent of the effect, and develop solutions such as medical devices.
71
72
Appendix A
Mathematica: Traditional PC
Dicom File Sorting
(*AMathematicaDicomIdownloadedforfree.
http : //bmia.bmt.tue.nl/Software/Mathematica/AddOns/Packages/index.html*)
<< MathDCM`MathDCM`
(*The variables for where I put the files*)
TimDir = "Gilbert33"
filenumber = "07021325"
(*I suggest finding these numbers using the DICOM image viewer that comes with the*)
(*data.Rememberthatregularscanslikelocalizerare1set, butPCdataistwosets.Amagset, *)
(*andaphaseset.Ideclarethenumberofthemagsets.Thisprogramwillextractonepairof*)
(*timepoints, forinstance0and200ms, ifyoutaketwotimepointsandslicestogether.*)
goodsets = {69, 71, 73, 75, 77, 79, 81, 83, 85, 87};
(*Declaring where I put the files*)
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
thenames = FileNames[];
tot = Length[thenames];
j = 1;
(*Find Magnitude Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
73
i++]
(*Separate Magnitude Files*)
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
(*Find Phase Files*)
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
(*Separate Phase Files*)
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
(*Sort Magnitude Files*)
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
(*Sort Phase Files*)
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
74
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 2;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
75
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 3;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
76
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 4;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
77
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 5;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
78
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 6;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
79
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 7;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
80
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 8;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
81
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 9;
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
82
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
j = 10;
n = 1;
83
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
CreateDirectory["setm" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
n
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++]
n
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++]
SetDirectory["setm" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
SetDirectory[ParentDirectory[]]
SetDirectory["setp" <> ToString[j]]
setnames = FileNames[];
For[i = 1, i < 17,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++]
84
Appendix B
Mathematica: Traditional PC
Processing
Off[General::spell1]
(*Dicom File Location*)
TimDir = "Gilbert29 0"
(*physical relationship to data*)
VENC = 2/3;
vox = .3;
(*declaring variables*)
onea = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
oneb = onea;
onec = onea;
oned = onea;
twoa = onea;
twob = onea;
twoc = onea;
twod = onea;
oneam = onea;
onebm = onea;
onecm = onea;
onedm = onea;
twoam = onea;
twobm = onea;
twocm = onea;
twodm = onea;
doneadx = onea;
doneady = onea;
donebdx = oneb;
donebdy = oneb;
donecdx = onec;
donecdy = onec;
85
doneddx = oned;
doneddy = oned;
dtwoadx = twoa;
dtwoady = twoa;
dtwobdx = twob;
dtwobdy = twob;
dtwocdx = twoc;
dtwocdy = twoc;
dtwoddx = twod;
dtwoddy = twod;
ComplexoneA = onea;
ComplexoneB = onea;
ComplexoneC = onea;
ComplexoneD = onea;
ComplextwoA = onea;
ComplextwoB = onea;
ComplextwoC = onea;
ComplextwoD = onea;
(*This part is all to grab the*)(*imagesandturnthemintoasimplematrix, *)
(*from0to256.Idon′ tknowquitehowitworks, butitdoes*)
(*Note that this code works for the 0 and 400 ms points*)
(*only.200and600msmustbecalledfromdifferentfiles*)
For[n = 1, n < 11,
SetDirectory[$InitialDirectory];
SetDirectory[TimDir];
SetDirectory["setp" <> ToString[n]];
setonea = Import["setp" <> ToString[n] <> "img1", "DICOM"];
setoneb = Import["setp" <> ToString[n] <> "img3", "DICOM"];
setonec = Import["setp" <> ToString[n] <> "img5", "DICOM"];
setoned = Import["setp" <> ToString[n] <> "img7", "DICOM"];
setonea = setonea/.Graphics → List;
setoneb = setoneb/.Graphics → List;
setonec = setonec/.Graphics → List;
setoned = setoned/.Graphics → List;
setonea = setonea[[1, 1]];
onea[[n]] = setonea[[1]];
setoneb = setoneb[[1, 1]];
oneb[[n]] = setoneb[[1]];
setonec = setonec[[1, 1]];
onec[[n]] = setonec[[1]];
setoned = setoned[[1, 1]];
oned[[n]] = setoned[[1]];
86
settwoa = Import["setp" <> ToString[n] <> "img10", "DICOM"];
settwob = Import["setp" <> ToString[n] <> "img12", "DICOM"];
settwoc = Import["setp" <> ToString[n] <> "img14", "DICOM"];
settwod = Import["setp" <> ToString[n] <> "img16", "DICOM"];
settwoa = settwoa/.Graphics → List;
settwob = settwob/.Graphics → List;
settwoc = settwoc/.Graphics → List;
settwod = settwod/.Graphics → List;
settwoa = settwoa[[1, 1]];
twoa[[n]] = settwoa[[1]];
settwob = settwob[[1, 1]];
twob[[n]] = settwob[[1]];
settwoc = settwoc[[1, 1]];
twoc[[n]] = settwoc[[1]];
settwod = settwod[[1, 1]];
twod[[n]] = settwod[[1]];
SetDirectory[$InitialDirectory];
SetDirectory[TimDir];
SetDirectory["setm" <> ToString[n]];
setoneam = Import["setm" <> ToString[n] <> "img1", "DICOM"];
setonebm = Import["setm" <> ToString[n] <> "img3", "DICOM"];
setonecm = Import["setm" <> ToString[n] <> "img5", "DICOM"];
setonedm = Import["setm" <> ToString[n] <> "img7", "DICOM"];
setoneam = setoneam/.Graphics → List;
setonebm = setonebm/.Graphics → List;
setonecm = setonecm/.Graphics → List;
setonedm = setonedm/.Graphics → List;
setoneam = setoneam[[1, 1]];
oneam[[n]] = setoneam[[1]];
setonebm = setonebm[[1, 1]];
onebm[[n]] = setonebm[[1]];
setonecm = setonecm[[1, 1]];
onecm[[n]] = setonecm[[1]];
setonedm = setonedm[[1, 1]];
onedm[[n]] = setonedm[[1]];
settwoam = Import["setm" <> ToString[n] <> "img10", "DICOM"];
settwobm = Import["setm" <> ToString[n] <> "img12", "DICOM"];
settwocm = Import["setm" <> ToString[n] <> "img14", "DICOM"];
settwodm = Import["setm" <> ToString[n] <> "img16", "DICOM"];
settwoam = settwoam/.Graphics → List;
settwobm = settwobm/.Graphics → List;
settwocm = settwocm/.Graphics → List;
87
settwodm = settwodm/.Graphics → List;
settwoam = settwoam[[1, 1]];
twoam[[n]] = settwoam[[1]];
settwobm = settwobm[[1, 1]];
twobm[[n]] = settwobm[[1]];
settwocm = settwocm[[1, 1]];
twocm[[n]] = settwocm[[1]];
settwodm = settwodm[[1, 1]];
twodm[[n]] = settwodm[[1]];
(*Converting to complex numbers with magnitude equal to*)
(*themagnitudeoftheData, andangleequaltothephase*)
(*ofthedata.Itmakesdealingwithrollovereasier*)
ComplexoneA[[n]] = Table[oneam[[n]][[i, j]] ∗ Cos[onea[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ oneam[[n]][[i, j]] ∗ Sin[onea[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplexoneB[[n]] = Table[onebm[[n]][[i, j]] ∗ Cos[oneb[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ onebm[[n]][[i, j]] ∗ Sin[oneb[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplexoneC[[n]] = Table[onecm[[n]][[i, j]] ∗ Cos[onec[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ onecm[[n]][[i, j]] ∗ Sin[onec[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplexoneD[[n]] = Table[onedm[[n]][[i, j]] ∗ Cos[oned[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ onedm[[n]][[i, j]] ∗ Sin[oned[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoA[[n]] = Table[twoam[[n]][[i, j]] ∗ Cos[twoa[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twoam[[n]][[i, j]] ∗ Sin[twoa[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoB[[n]] = Table[twobm[[n]][[i, j]] ∗ Cos[twob[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twobm[[n]][[i, j]] ∗ Sin[twob[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoC[[n]] = Table[twocm[[n]][[i, j]] ∗ Cos[twoc[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twocm[[n]][[i, j]] ∗ Sin[twoc[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoD[[n]] = Table[twodm[[n]][[i, j]] ∗ Cos[twod[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twodm[[n]][[i, j]] ∗ Sin[twod[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
; n++]
(*This part finds the change in velocity over the distance of two*)
(*voxels.Thecentervoxelis(i + 1, j + 1).Thisissothecenter, *)
(*whatismostlikelydn/dm, isatthecenterofavoxel.*)
(*Otherwise, thematriceswouldn′ tberepresentingthesame*)
(*physicalpoints, insteadbeingondifferentedgesofeachvoxel*)
(*This finds the difference between the phases using complex math*)
doneadx = Table[Table[Arg[ComplexoneA[[k]][[i + 1, j]]/ComplexoneA[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
doneady = Table[Table[Arg[ComplexoneA[[k]][[i, j + 1]]/ComplexoneA[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
donebdx = Table[Table[Arg[ComplexoneB[[k]][[i + 1, j]]/ComplexoneB[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
88
donebdy = Table[Table[Arg[ComplexoneB[[k]][[i, j + 1]]/ComplexoneB[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
donecdx = Table[Table[Arg[ComplexoneC[[k]][[i + 1, j]]/ComplexoneC[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
donecdy = Table[Table[Arg[ComplexoneC[[k]][[i, j + 1]]/ComplexoneC[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
doneddx = Table[Table[Arg[ComplexoneD[[k]][[i + 1, j]]/ComplexoneD[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
doneddy = Table[Table[Arg[ComplexoneD[[k]][[i, j + 1]]/ComplexoneD[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
dtwoadx = Table[Table[Arg[ComplextwoA[[k]][[i + 1, j]]/ComplextwoA[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
dtwoady = Table[Table[Arg[ComplextwoA[[k]][[i, j + 1]]/ComplextwoA[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
dtwobdx = Table[Table[Arg[ComplextwoB[[k]][[i + 1, j]]/ComplextwoB[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
dtwobdy = Table[Table[Arg[ComplextwoB[[k]][[i, j + 1]]/ComplextwoB[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
dtwocdx = Table[Table[Arg[ComplextwoC[[k]][[i + 1, j]]/ComplextwoC[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
dtwocdy = Table[Table[Arg[ComplextwoC[[k]][[i, j + 1]]/ComplextwoC[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
dtwoddx = Table[Table[Arg[ComplextwoD[[k]][[i + 1, j]]/ComplextwoD[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 10}];
dtwoddy = Table[Table[Arg[ComplextwoD[[k]][[i, j + 1]]/ComplextwoD[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 10}];
(*Weightedaveragethetenimages, toreducenoise*)
weightoneax = Table[Table[Min[oneam[[k]][[i, j]], oneam[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weightonebx = Table[Table[Min[onebm[[k]][[i, j]], onebm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weightonecx = Table[Table[Min[onecm[[k]][[i, j]], onecm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weightonedx = Table[Table[Min[onedm[[k]][[i, j]], onedm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weighttwoax = Table[Table[Min[twoam[[k]][[i, j]], twoam[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weighttwobx = Table[Table[Min[twobm[[k]][[i, j]], twobm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weighttwocx = Table[Table[Min[twocm[[k]][[i, j]], twocm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weighttwodx = Table[Table[Min[twodm[[k]][[i, j]], twodm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 10}];
weightoneay = Table[Table[Min[oneam[[k]][[i, j]], oneam[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weightoneby = Table[Table[Min[onebm[[k]][[i, j]], onebm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weightonecy = Table[Table[Min[onecm[[k]][[i, j]], onecm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weightonedy = Table[Table[Min[onedm[[k]][[i, j]], onedm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weighttwoay = Table[Table[Min[twoam[[k]][[i, j]], twoam[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weighttwoby = Table[Table[Min[twobm[[k]][[i, j]], twobm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weighttwocy = Table[Table[Min[twocm[[k]][[i, j]], twocm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
weighttwody = Table[Table[Min[twodm[[k]][[i, j]], twodm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 10}];
dadx = Table[
Sum[doneadx[[k]][[i, j]] ∗ weightoneax[[k]][[i, j]] + doneadx[[k]][[i, j + 1]] ∗ weightoneax[[k]][[i, j + 1]]+
dtwoadx[[k]][[i, j]] ∗ weighttwoax[[k]][[i, j]] + dtwoadx[[k]][[i, j + 1]] ∗ weighttwoax[[k]][[i, j + 1]],
{k, 10}]/Sum[weightoneax[[k]][[i, j]] + weightoneax[[k]][[i, j + 1]]+
weighttwoax[[k]][[i, j]] + weighttwoax[[k]][[i, j + 1]], {k, 10}], {i, 63}, {j, 63}];
dady = Table[Sum[doneady[[k]][[i, j]] ∗ weightoneay[[k]][[i, j]]+
doneady[[k]][[i + 1, j]] ∗ weightoneay[[k]][[i + 1, j]] + dtwoady[[k]][[i, j]] ∗ weighttwoay[[k]][[i, j]]+
89
dtwoady[[k]][[i + 1, j]] ∗ weighttwoay[[k]][[i + 1, j]], {k, 10}]/
Sum[weightoneay[[k]][[i, j]] + weightoneay[[k]][[i + 1, j]] + weighttwoay[[k]][[i, j]]+
weighttwoay[[k]][[i + 1, j]], {k, 10}], {i, 63}, {j, 63}];
dbdx = Table[Sum[donebdx[[k]][[i, j]] ∗ weightonebx[[k]][[i, j]]+
donebdx[[k]][[i, j + 1]] ∗ weightonebx[[k]][[i, j + 1]] + dtwobdx[[k]][[i, j]] ∗ weighttwobx[[k]][[i, j]]+
dtwobdx[[k]][[i, j + 1]] ∗ weighttwobx[[k]][[i, j + 1]], {k, 10}]/
Sum[weightonebx[[k]][[i, j]] + weightonebx[[k]][[i, j + 1]] + weighttwobx[[k]][[i, j]]+
weighttwobx[[k]][[i, j + 1]], {k, 10}], {i, 63}, {j, 63}];
dbdy = Table[Sum[donebdy[[k]][[i, j]] ∗ weightoneby[[k]][[i, j]]+
donebdy[[k]][[i + 1, j]] ∗ weightoneby[[k]][[i + 1, j]] + dtwobdy[[k]][[i, j]] ∗ weighttwoby[[k]][[i, j]]+
dtwobdy[[k]][[i + 1, j]] ∗ weighttwoby[[k]][[i + 1, j]], {k, 10}]/
Sum[weightoneby[[k]][[i, j]] + weightoneby[[k]][[i + 1, j]] + weighttwoby[[k]][[i, j]]+
weighttwoby[[k]][[i + 1, j]], {k, 10}], {i, 63}, {j, 63}];
dcdx = Table[Sum[donecdx[[k]][[i, j]] ∗ weightonecx[[k]][[i, j]]+
donecdx[[k]][[i, j + 1]] ∗ weightonecx[[k]][[i, j + 1]] + dtwocdx[[k]][[i, j]] ∗ weighttwocx[[k]][[i, j]]+
dtwocdx[[k]][[i, j + 1]] ∗ weighttwocx[[k]][[i, j + 1]], {k, 10}]/
Sum[weightonecx[[k]][[i, j]] + weightonecx[[k]][[i, j + 1]] + weighttwocx[[k]][[i, j]]+
weighttwocx[[k]][[i, j + 1]], {k, 10}], {i, 63}, {j, 63}];
dcdy = Table[Sum[donecdy[[k]][[i, j]] ∗ weightonecy[[k]][[i, j]]+
donecdy[[k]][[i + 1, j]] ∗ weightonecy[[k]][[i + 1, j]] + dtwocdy[[k]][[i, j]] ∗ weighttwocy[[k]][[i, j]]+
dtwocdy[[k]][[i + 1, j]] ∗ weighttwocy[[k]][[i + 1, j]], {k, 10}]/
Sum[weightonecy[[k]][[i, j]] + weightonecy[[k]][[i + 1, j]] + weighttwocy[[k]][[i, j]]+
weighttwocy[[k]][[i + 1, j]], {k, 10}], {i, 63}, {j, 63}];
dddx = Table[Sum[doneddx[[k]][[i, j]] ∗ weightonedx[[k]][[i, j]]+
doneddx[[k]][[i, j + 1]] ∗ weightonedx[[k]][[i, j + 1]] + dtwoddx[[k]][[i, j]] ∗ weighttwodx[[k]][[i, j]]+
dtwoddx[[k]][[i, j + 1]] ∗ weighttwodx[[k]][[i, j + 1]], {k, 10}]/
Sum[weightonedx[[k]][[i, j]] + weightonedx[[k]][[i, j + 1]] + weighttwodx[[k]][[i, j]]+
weighttwodx[[k]][[i, j + 1]], {k, 10}], {i, 63}, {j, 63}];
dddy = Table[Sum[doneddy[[k]][[i, j]] ∗ weightonedy[[k]][[i, j]]+
doneddy[[k]][[i + 1, j]] ∗ weightonedy[[k]][[i + 1, j]] + dtwoddy[[k]][[i, j]] ∗ weighttwody[[k]][[i, j]]+
dtwoddy[[k]][[i + 1, j]] ∗ weighttwody[[k]][[i + 1, j]], {k, 10}]/
Sum[weightonedy[[k]][[i, j]] + weightonedy[[k]][[i + 1, j]] + weighttwody[[k]][[i, j]]+
weighttwody[[k]][[i + 1, j]], {k, 10}], {i, 63}, {j, 63}];
(*Converting the 4 quadrilateral vectors into orthogonal vectors*)
c=
√ .
3 4 ∗ (VENC/vox)/(2 ∗ Pi);
dxdx = c ∗ (dadx − dbdx + dcdx − dddx);
dxdy = c ∗ (dady − dbdy + dcdy − dddy);
dydx = c ∗ (dadx − dbdx − dcdx + dddx);
dydy = c ∗ (dady − dbdy − dcdy + dddy);
90
(*Mohr′ sCircle*)
txy = (dxdy + dydx)/2;
dsigavg = (dxdx + dydy)/2;
R = Sqrt[(dxdx − dsigavg)∧ 2 + txy∧ 2];
StrainTheta = −(ArcTan[(dxdx − dsigavg), txy])/2;
PStrain1org = (dsigavg + R);
(*CorrelatestoStrainTheta[[i, j]]*)
PStrain2org = (dsigavg − R);
(*CorrelatestoStrainTheta[[i, j]] + Pi/2*)
mag = Sum[oneam[[i]] + twoam[[i]] + onebm[[i]]+
twobm[[i]] + onecm[[i]] + twocm[[i]] + onedm[[i]] + twodm[[i]], {i, 10}]/80;
PStrain1 = Table[If[mag[[i, j]] < 64, 0, PStrain1org[[i, j]]], {i, 1, 63}, {j, 1, 63}];
PStrain2 = Table[If[mag[[i, j]] < 64, 0, PStrain2org[[i, j]]], {i, 1, 63}, {j, 1, 63}];
(*graphics constants*)
l = 3;
h = 1.5;
t = .2;
th = .05;
(*For setting the boundaries*)(*of the strain tensors that are displayed*)
xrangemin = 17;
xrangemax = 42;
yrangemin = 17;
yrangemax = 42;
(*Making the icons*)
g1 = Table[If[PStrain1[[i, j]]==0,
Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − .05, j − .05}, {i + .05, j + .05}]}],
If[PStrain1[[i, j]] < 0, Graphics[{RGBColor[−h ∗ (PStrain1[[i, j]]), 0, 0], Polygon[
{{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3}}]}],
Graphics[{RGBColor[0, 0, h ∗ (PStrain1[[i, j]])], Polygon[
{{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
91
j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3}}]}]]],
{i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
g2 = Table[If[PStrain2[[i, j]]==0,
Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − .05, j − .05}, {i + .05, j + .05}]}],
If[PStrain2[[i, j]] < 0, Graphics[
{RGBColor[−h ∗ (PStrain2[[i, j]]), 0, 0], Polygon[{{i − l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2],
j − l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2]}, {i − l ∗ PStrain2[[i, j]]∗
Cos[StrainTheta[[i, j]]] ∗ .3, j − l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]]] ∗ .3},
{i + l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2], j + l ∗ PStrain2[[i, j]]∗
Sin[StrainTheta[[i, j]] + Pi/2]}, {i + l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]]] ∗ .3,
j + l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]]] ∗ .3}}]}], Graphics[
{RGBColor[0, 0, h ∗ (PStrain2[[i, j]])], Polygon[{{i − l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2],
j − l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2]},
{i − l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]]] ∗ .3, j − l ∗ PStrain2[[i, j]]∗
Sin[StrainTheta[[i, j]]] ∗ .3}, {i + l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2],
j + l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2]}, {i + l ∗ PStrain2[[i, j]]∗
Cos[StrainTheta[[i, j]]] ∗ .3, j + l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]]] ∗ .3}}]}]]],
{i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
(*Sorting the icons so that the*)(*smaller icon is never covered by the larger*)
gMin = Table[If[Abs[PStrain1[[i, j]]] < Abs[PStrain2[[i, j]]], g1[[i + 1 − xrangemin, j + 1 − yrangemin]],
g2[[i + 1 − xrangemin, j + 1 − yrangemin]]], {i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
gMax = Table[If[Abs[PStrain1[[i, j]]] < Abs[PStrain2[[i, j]]], g2[[i + 1 − xrangemin, j + 1 − yrangemin]],
g1[[i + 1 − xrangemin, j + 1 − yrangemin]]], {i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
(*mag2D and maglt are background images*)
mag2D = Table[
Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − .5, j − .5}, {i + .5, j + .5}]}], {i, 63}, {j, 63}];
maglt = Table[Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − .5, j − .5}, {i + .5, j + .5}]}],
{i, xrangemin − 5, xrangemax + 5}, {j, yrangemin − 5, yrangemax + 5}];
(*This creates a scale bar for the graphics*)
scale =
Graphics[{GrayLevel[1], Rectangle[{xrangemin − 3.5, yrangemin − 2.5}, {xrangemin − 5.5, yrangemin − 5.5}]}];
bar = Graphics[
{RGBColor[0, 0, h ∗ (2/3)], Polygon[{{xrangemin − 4.5, (yrangemin − 3)}, {(xrangemin − 4.2), (yrangemin − 4)},
{(xrangemin − 4.5), (yrangemin − 5)}, {(xrangemin − 4.8), (yrangemin − 4)}}]}]
(*Regional analysis*)
reg1xmin = xrangemax − 15;
reg1xmax = xrangemax − 4;
reg1ymin = yrangemax − 8;
92
reg1ymax = yrangemax;
region1 = Table[{i, j}, {i, reg1xmin, reg1xmax}, {j, reg1ymin, reg1ymax}];
"The total strain in Region 1:"
"Expansion is:"
region1totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg1xmin, reg1xmax}],
{j, reg1ymin, reg1ymax}]
"Compression is:"
region1totcom = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg1xmin, reg1xmax}],
{j, reg1ymin, reg1ymax}]
region1g = Table[Graphics[{Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg1xmin, reg1xmax}, {j, reg1ymin, reg1ymax}];
region1box = {Graphics[{Thickness[.01], Line[{{reg1xmin − .5, reg1ymin − .5}, {reg1xmin − .5, reg1ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg1xmin − .5, reg1ymax + .5}, {reg1xmax + .5, reg1ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg1xmax + .5, reg1ymax + .5}, {reg1xmax + .5, reg1ymin − .5}}]}],
Graphics[{Thickness[.01], Line[{{reg1xmax + .5, reg1ymin − .5}, {reg1xmin − .5, reg1ymin − .5}}]}]};
reg2xmin = xrangemax − 15;
reg2xmax = xrangemax − 4;
reg2ymin = yrangemax − 16;
reg2ymax = yrangemax − 9;
region2 = Table[{i, j}, {i, xrangemax − 15, xrangemax − 4}, {j, yrangemax − 16, yrangemax − 9}];
"The total strain in Region 2:"
"Expansion is:"
region2totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg2xmin, reg2xmax}],
{j, reg2ymin, reg2ymax}]
"Compression is:"
region2totexp = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg2xmin, reg2xmax}],
{j, reg2ymin, reg2ymax}]
region2g = Table[Graphics[{RGBColor[1, 0, 0], Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg2xmin, reg2xmax}, {j, reg2ymin, reg2ymax}];
region2box = {Graphics[{Thickness[.01], Line[{{reg2xmin − .5, reg2ymin − .5}, {reg2xmin − .5, reg2ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg2xmin − .5, reg2ymax + .5}, {reg2xmax + .5, reg2ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg2xmax + .5, reg2ymax + .5}, {reg2xmax + .5, reg2ymin − .5}}]}],
Graphics[{Thickness[.01], Line[{{reg2xmax + .5, reg2ymin − .5}, {reg2xmin − .5, reg2ymin − .5}}]}]};
reg3xmin = xrangemax − 15;
reg3xmax = xrangemax − 4;
reg3ymin = yrangemax − 26;
reg3ymax = yrangemax − 17;
region3 = Table[{i, j}, {i, reg3xmin, reg3xmax}, {j, reg3ymin, reg3ymax}];
"The total strain in Region 3:"
"Expansion is:"
93
region3totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg3xmin, reg3xmax}],
{j, reg3ymin, reg3ymax}]
"Compression is:"
region3totcom = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg3xmin, reg3xmax}],
{j, reg3ymin, reg3ymax}]
region3g = Table[Graphics[{RGBColor[0, 1, 0], Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg3xmin, reg3xmax}, {j, reg3ymin, reg3ymax}];
region3box = {Graphics[{Thickness[.01], Line[{{reg3xmin − .5, reg3ymin − .5}, {reg3xmin − .5, reg3ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg3xmin − .5, reg3ymax + .5}, {reg3xmax + .5, reg3ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg3xmax + .5, reg3ymax + .5}, {reg3xmax + .5, reg3ymin − .5}}]}],
Graphics[{Thickness[.01], Line[{{reg3xmax + .5, reg3ymin − .5}, {reg3xmin − .5, reg3ymin − .5}}]}]};
reg4xmin = xrangemax − 21;
reg4xmax = xrangemax − 16;
reg4ymin = yrangemax − 21;
reg4ymax = yrangemax − 14;
region4 = Table[{i, j}, {i, reg4xmin, reg4xmax}, {j, reg4ymin, reg4ymax}];
"The total strain in Region 4:"
"Expansion is:"
region4totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg4xmin, reg4xmax}],
{j, reg4ymin, reg4ymax}]
"Compression is:"
region4totcom = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg4xmin, reg4xmax}],
{j, reg4ymin, reg4ymax}]
region4g = Table[Graphics[{RGBColor[0, 0, 1], Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg4xmin, reg4xmax}, {j, reg4ymin, reg4ymax}];
region4box = {Graphics[{Thickness[.01], Line[{{reg4xmin − .5, reg4ymin − .5}, {reg4xmin − .5, reg4ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg4xmin − .5, reg4ymax + .5}, {reg4xmax + .5, reg4ymax + .5}}]}],
Graphics[{Thickness[.01], Line[{{reg4xmax + .5, reg4ymax + .5}, {reg4xmax + .5, reg4ymin − .5}}]}],
Graphics[{Thickness[.01], Line[{{reg4xmax + .5, reg4ymin − .5}, {reg4xmin − .5, reg4ymin − .5}}]}]};
Show[mag2D, {AspectRatio → Automatic}, {ImageSize → {600, 600}}];
Show[mag2D, g1, g2, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
Show[mag2D, region1box, region2box, region3box,
region4box, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
Show[maglt, gMax, gMin, scale, bar, {AspectRatio → Automatic}, {ImageSize → {500, 500}}];
94
Appendix C
Mathematica: SER PC Dicom File
Sorting
(*AMathematicaDicomIdownloadedforfree.*)
(*http : //bmia.bmt.tue.nl/Software/Mathematica/AddOns/Packages/index.html*)
<< MathDCM`MathDCM`
(*setting variables for file location*)
TimDir = "GilbertP2"
filenumber = "11301054"
goodsets = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
(*IsuggestfindingthesenumbersusingtheDICOMimageviewerthatcomeswiththedata.Remember*)
(*thatregularscanslikelocalizerare1set, butPCdataistwosets.Amagset, andaphaseset.*)
goodsets[[1]] = {2, 4, 6, 8, 10};
goodsets[[2]] = {12, 14, 16, 18, 20};
goodsets[[3]] = {22, 24, 26, 28, 30};
goodsets[[4]] = {32, 34, 36, 38, 40};
goodsets[[5]] = {42, 44, 46, 48, 50};
goodsets[[6]] = {52, 54, 56, 58, 60};
goodsets[[7]] = {62, 64, 66, 68, 70};
goodsets[[8]] = {72, 74, 76, 78, 80};
goodsets[[9]] = {82, 84, 86, 88, 90};
goodsets[[10]] = {92, 94, 96, 98, 100};
goodsets[[11]] = {102, 104, 106, 108, 110};
goodsets[[12]] = {112, 114, 116, 118, 120};
(*locating files*)
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
thenames = FileNames[];
95
tot = Length[thenames]
For[q = 1, q < 13, {
j = 1;
(*Find Magnitude Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Magnitude Files*)
CreateDirectory["setm" <> ToString[j]];
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Find Phase Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Phase Files*)
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Sort Magnitude Files*)
SetDirectory["setm" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
(*Sort Phase Files*)
96
SetDirectory[ParentDirectory[]];
SetDirectory["setp" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
SetDirectory["F:\Research"];
SetDirectory[TimDir];
SetDirectory[filenumber];
j = 2;
(*Find Magnitude Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Magnitude Files*)
CreateDirectory["setm" <> ToString[j]];
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Find Phase Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Phase Files*)
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Sort Magnitude Files*)
97
SetDirectory["setm" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
(*Sort Phase Files*)
SetDirectory[ParentDirectory[]];
SetDirectory["setp" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
SetDirectory["F:\Research"];
SetDirectory[TimDir];
SetDirectory[filenumber];
j = 3;
(*Find Magnitude Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Magnitude Files*)
CreateDirectory["setm" <> ToString[j]];
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Find Phase Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Phase Files*)
98
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Sort Magnitude Files*)
SetDirectory["setm" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
(*Sort Phase Files*)
SetDirectory[ParentDirectory[]];
SetDirectory["setp" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
SetDirectory["F:\Research"];
SetDirectory[TimDir];
SetDirectory[filenumber];
j = 4;
(*Find Magnitude Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Magnitude Files*)
CreateDirectory["setm" <> ToString[j]];
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Find Phase Files*)
99
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Phase Files*)
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Sort Magnitude Files*)
SetDirectory["setm" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
(*Sort Phase Files*)
SetDirectory[ParentDirectory[]];
SetDirectory["setp" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
SetDirectory["F:\Research"];
SetDirectory[TimDir];
SetDirectory[filenumber];
j = 5;
(*Find Magnitude Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]]],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
100
(*Separate Magnitude Files*)
CreateDirectory["setm" <> ToString[j]];
For[i = 1, i < n,
CopyFile[filenames[i], "setm" <> ToString[j] <> "/set" <>
ToString[j] <> "m" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Find Phase Files*)
n = 1;
For[i = 1, i < tot + 1, If[DicomGetTagValue[thenames[[i]], "0020,0011"]==ToString[goodsets[[q]][[j]] + 1],
{filenames[n] = thenames[[i]], n = n + 1}];
i++];
(*Separate Phase Files*)
CreateDirectory["setp" <> ToString[j]]
For[i = 1, i < n,
CopyFile[filenames[i], "setp" <> ToString[j] <> "/set" <>
ToString[j] <> "p" <> ToString[DicomGetTagValue[filenames[i], "0020,0013"]] <> ".dcm"];
i++];
(*Sort Magnitude Files*)
SetDirectory["setm" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setm" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
(*Sort Phase Files*)
SetDirectory[ParentDirectory[]];
SetDirectory["setp" <> ToString[j]];
setnames = FileNames[];
For[i = 1, i < 9,
RenameFile[setnames[[i]],
"setp" <> ToString[j] <> "img" <> ToString[DicomGetTagValue[setnames[[i]], "0020,0013"]]]
i++];
SetDirectory["F:\Research"];
SetDirectory[TimDir];
SetDirectory[filenumber];
101
CreateDirectory["TimePoint" <> ToString[q]];
For[j = 1, j < 6, {CopyDirectory["setm" <> ToString[j], "TimePoint" <> ToString[q] <> "/setm" <> ToString[j]],
CopyDirectory["setp" <> ToString[j], "TimePoint" <> ToString[q] <> "/setp" <> ToString[j]]}; j++];
For[j = 1, j < 6, {DeleteDirectory["setm" <> ToString[j], DeleteContents → True],
DeleteDirectory["setp" <> ToString[j], DeleteContents → True]}; j++];
SetDirectory["F:\Research"]
SetDirectory[TimDir]
SetDirectory[filenumber]
q
}; q++]
102
Appendix D
Mathematica: SER PC Processing
Off[General::spell1]
(*Designates what folder the dicom files are in*)
TimDir = "Gilbert37(3) 1"
(*VENC and Voxel side length*)
VENC = 1;
vox = .3;
(*For setting the boundaries of the strain tensors that are displayed*)
(*for 3ml bolus*)
xrangemin = 18;
xrangemax = 41;
yrangemin = 11;
yrangemax = 39;
(*for 10ml bolus*)
(*
xrangemin = 17;
xrangemax = 47;
yrangemin = 12;
yrangemax = 42;
*)
(*Declaration of Variables*)
onea = {0, 0, 0, 0, 0};
oneb = onea;
onec = onea;
oned = onea;
twoa = onea;
103
twob = onea;
twoc = onea;
twod = onea;
oneam = onea;
onebm = onea;
onecm = onea;
onedm = onea;
twoam = onea;
twobm = onea;
twocm = onea;
twodm = onea;
doneadx = onea;
doneady = onea;
dadz = onea;
donebdx = oneb;
donebdy = oneb;
dbdz = oneb;
donecdx = onec;
donecdy = onec;
dcdz = onec;
doneddx = oned;
doneddy = oned;
dddz = oned;
dtwoadx = twoa;
dtwoady = twoa;
dtwobdx = twob;
dtwobdy = twob;
dtwocdx = twoc;
dtwocdy = twoc;
dtwoddx = twod;
dtwoddy = twod;
ComplexoneA = onea;
ComplexoneB = onea;
ComplexoneC = onea;
ComplexoneD = onea;
ComplextwoA = onea;
ComplextwoB = onea;
ComplextwoC = onea;
ComplextwoD = onea;
(*lineInBoxisafunctionforfindingalinestartingatstartpointthatisboundedbya1x1square, *)
(* with a center at centerpoint*)
lineInBox = Function[{startpoint, centerpoint, t},
xstart = startpoint[[1]];
104
ystart = startpoint[[2]];
xcenter = centerpoint[[1]];
ycenter = centerpoint[[2]];
If[xstart==xcenter − 0.5&&ystart == ycenter − 0.5&&t < 0, {xstart, ystart},
If[xstart==xcenter − 0.5&&ystart == ycenter − 0.5&&Pi/4 > t > 0, {i + 0.5, Tan[t] + ystart},
If[xstart==xcenter − 0.5&&ystart == ycenter − 0.5&&t ≥ Pi/4, {Cot[t] + xstart, j + 0.5},
If[xstart==xcenter + 0.5&&ystart == ycenter − 0.5&&t > 0, {xstart, ystart},
If[xstart==xcenter + 0.5&&ystart == ycenter − 0.5&& − Pi/4 < t < 0, {xcenter − 0.5, −Tan[t] + ystart},
If[xstart==xcenter + 0.5&&ystart == ycenter − 0.5&&t ≤ −Pi/4, {Cot[t] + xstart, ycenter + 0.5},
If[xstart==xcenter − 0.5&&ystart == ycenter + 0.5&&t > 0, {xstart, ystart},
If[xstart==xcenter − 0.5&&ystart == ycenter + 0.5&& − Pi/4 < t < 0, {xcenter + 0.5, Tan[t] + ystart},
If[xstart==xcenter − 0.5&&ystart == ycenter + 0.5&&t ≤ −Pi/4, {−Cot[t] + xstart, ycenter − 0.5},
If[xstart==xcenter + 0.5&&ystart == ycenter + 0.5&&t < 0, {xstart, ystart},
If[xstart==xcenter + 0.5&&ystart == ycenter + 0.5&&Pi/4 > t > 0, {xcenter − 0.5, −Tan[t] + ystart},
If[xstart==xcenter + 0.5&&ystart == ycenter + 0.5&&t ≥ Pi/4, {−Cot[t] + xstart, ycenter − 0.5},
If[xstart == xcenter − 0.5&&
ycenter + 0.5 > Tan[t] + ystart > ycenter − 0.5, {xcenter + 0.5, Tan[t] + ystart},
If[xstart == xcenter − 0.5&&t > 0, {Cot[t] ∗ (ycenter + 0.5 − ystart) + xstart, ycenter + 0.5},
If[xstart == xcenter − 0.5&&t < 0, {Cot[t] ∗ (ycenter − 0.5 − ystart) + xstart, ycenter − 0.5},
If[xstart == xcenter + 0.5&&
ycenter + 0.5 > ystart − Tan[t] > ycenter − 0.5, {xcenter − 0.5, ystart − Tan[t]},
If[xstart == xcenter + 0.5&&t > 0, {Cot[t] ∗ (ycenter − 0.5 − ystart) + xstart, ycenter − 0.5},
If[xstart == xcenter + 0.5&&t < 0, {Cot[t] ∗ (ycenter + 0.5 − ystart) + xstart, ycenter + 0.5},
If[ystart == ycenter − 0.5&&
xcenter + 0.5 > xstart + Cot[t] > xcenter − 0.5, {xstart + Cot[t], ycenter + 0.5},
If[ystart == ycenter − 0.5&&t > 0, {xcenter + 0.5, ystart + Tan[t] ∗ (xcenter + 0.5 − xstart)},
If[ystart == ycenter − 0.5&&t < 0, {xcenter − 0.5, ystart + Tan[t] ∗ (xcenter − 0.5 − xstart)},
If[ystart == ycenter + 0.5&&
xcenter + 0.5 > xstart − Cot[t] > xcenter − 0.5, {xstart − Cot[t], ycenter − 0.5},
If[ystart == ycenter + 0.5&&t < 0, {xcenter + 0.5, ystart + Tan[t]∗
(xcenter + 0.5 − xstart)},
If[ystart == ycenter + 0.5&&t > 0, {xcenter − 0.5, ystart + Tan[t]∗
(xcenter − 0.5 − xstart)}]
]]]]]]]]]]]]]]]]]]]]]]]];
(*nextBoxisafunctionthatfindstheadjacentboxtotheboxcenteredatstartpoint, *)
(* sharing the boundary point point*)
nextBox = Function[{startpoint, point},
xstart = startpoint[[1]];
ystart = startpoint[[2]];
xpoint = point[[1]];
ypoint = point[[2]];
If[xpoint − xstart == −0.5&&ypoint − ystart == −0.5, {xstart − 1, ystart − 1},
If[xpoint − xstart == 0.5&&ypoint − ystart == −0.5, {xstart + 1, ystart + 1},
105
If[xpoint − xstart == −0.5&&ypoint − ystart == 0.5, {xstart − 1, ystart + 1},
If[xpoint − xstart == 0.5&&ypoint − ystart == 0.5, {xstart + 1, ystart + 1},
If[xpoint − xstart == −0.5, {xstart − 1, ystart},
If[xpoint − xstart == 0.5, {xstart + 1, ystart},
If[ypoint − ystart == −0.5, {xstart, ystart − 1},
If[ypoint − ystart == 0.5, {xstart, ystart + 1}
]]]]]]]]];
(*Thispartisalltograbtheimagesandturnthemintoasimplematrix, *)
(*from0to256.Idon′ tknowquitehowitworks, butitdoes*)
For[n = 1, n < 6,
SetDirectory[$InitialDirectory];
SetDirectory[TimDir];
SetDirectory["setp" <> ToString[n]];
setonea = Import["setp" <> ToString[n] <> "img1", "DICOM"];
setoneb = Import["setp" <> ToString[n] <> "img3", "DICOM"];
setonec = Import["setp" <> ToString[n] <> "img5", "DICOM"];
setoned = Import["setp" <> ToString[n] <> "img7", "DICOM"];
setonea = setonea/.Graphics → List;
setoneb = setoneb/.Graphics → List;
setonec = setonec/.Graphics → List;
setoned = setoned/.Graphics → List;
setonea = setonea[[1, 1]];
onea[[n]] = setonea[[1]];
setoneb = setoneb[[1, 1]];
oneb[[n]] = setoneb[[1]];
setonec = setonec[[1, 1]];
onec[[n]] = setonec[[1]];
setoned = setoned[[1, 1]];
oned[[n]] = setoned[[1]];
settwoa = Import["setp" <> ToString[n] <> "img2", "DICOM"];
settwob = Import["setp" <> ToString[n] <> "img4", "DICOM"];
settwoc = Import["setp" <> ToString[n] <> "img6", "DICOM"];
settwod = Import["setp" <> ToString[n] <> "img8", "DICOM"];
settwoa = settwoa/.Graphics → List;
settwob = settwob/.Graphics → List;
settwoc = settwoc/.Graphics → List;
settwod = settwod/.Graphics → List;
settwoa = settwoa[[1, 1]];
twoa[[n]] = settwoa[[1]];
settwob = settwob[[1, 1]];
twob[[n]] = settwob[[1]];
settwoc = settwoc[[1, 1]];
twoc[[n]] = settwoc[[1]];
106
settwod = settwod[[1, 1]];
twod[[n]] = settwod[[1]];
SetDirectory[$InitialDirectory];
SetDirectory[TimDir];
SetDirectory["setm" <> ToString[n]];
setoneam = Import["setm" <> ToString[n] <> "img1", "DICOM"];
setonebm = Import["setm" <> ToString[n] <> "img3", "DICOM"];
setonecm = Import["setm" <> ToString[n] <> "img5", "DICOM"];
setonedm = Import["setm" <> ToString[n] <> "img7", "DICOM"];
setoneam = setoneam/.Graphics → List;
setonebm = setonebm/.Graphics → List;
setonecm = setonecm/.Graphics → List;
setonedm = setonedm/.Graphics → List;
setoneam = setoneam[[1, 1]];
oneam[[n]] = setoneam[[1]];
setonebm = setonebm[[1, 1]];
onebm[[n]] = setonebm[[1]];
setonecm = setonecm[[1, 1]];
onecm[[n]] = setonecm[[1]];
setonedm = setonedm[[1, 1]];
onedm[[n]] = setonedm[[1]];
settwoam = Import["setm" <> ToString[n] <> "img2", "DICOM"];
settwobm = Import["setm" <> ToString[n] <> "img4", "DICOM"];
settwocm = Import["setm" <> ToString[n] <> "img6", "DICOM"];
settwodm = Import["setm" <> ToString[n] <> "img8", "DICOM"];
settwoam = settwoam/.Graphics → List;
settwobm = settwobm/.Graphics → List;
settwocm = settwocm/.Graphics → List;
settwodm = settwodm/.Graphics → List;
settwoam = settwoam[[1, 1]];
twoam[[n]] = settwoam[[1]];
settwobm = settwobm[[1, 1]];
twobm[[n]] = settwobm[[1]];
settwocm = settwocm[[1, 1]];
twocm[[n]] = settwocm[[1]];
settwodm = settwodm[[1, 1]];
twodm[[n]] = settwodm[[1]];
(*ConvertingtocomplexnumberswithmagnitudeequaltothemagnitudeoftheData, *)
(*andangleequaltothephaseofthedata.Itmakesdealingwithrollovereasier*)
ComplexoneA[[n]] = Table[oneam[[n]][[i, j]] ∗ Cos[onea[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ oneam[[n]][[i, j]] ∗ Sin[onea[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
107
ComplexoneB[[n]] = Table[onebm[[n]][[i, j]] ∗ Cos[oneb[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ onebm[[n]][[i, j]] ∗ Sin[oneb[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplexoneC[[n]] = Table[onecm[[n]][[i, j]] ∗ Cos[onec[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ onecm[[n]][[i, j]] ∗ Sin[onec[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplexoneD[[n]] = Table[onedm[[n]][[i, j]] ∗ Cos[oned[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ onedm[[n]][[i, j]] ∗ Sin[oned[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoA[[n]] = Table[twoam[[n]][[i, j]] ∗ Cos[twoa[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twoam[[n]][[i, j]] ∗ Sin[twoa[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoB[[n]] = Table[twobm[[n]][[i, j]] ∗ Cos[twob[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twobm[[n]][[i, j]] ∗ Sin[twob[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoC[[n]] = Table[twocm[[n]][[i, j]] ∗ Cos[twoc[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twocm[[n]][[i, j]] ∗ Sin[twoc[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
ComplextwoD[[n]] = Table[twodm[[n]][[i, j]] ∗ Cos[twod[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi]+
I ∗ twodm[[n]][[i, j]] ∗ Sin[twod[[n]][[i, j]]/256. ∗ 2 ∗ Pi − Pi], {i, 64}, {j, 64}];
; n++]
(*Thispartfindsthechangeinvelocityoverthedistanceoftwovoxels.The*)
(*centervoxelis(i + 1, j + 1).Thisissothecenter, whatismostlikelydn/dm, *)
(*isatthecenterofavoxel.Otherwise, thematriceswouldn′ tberepresenting*)
(*thesamephysicalpoints, insteadbeingondifferentedgesofeachvoxel*)
(*This finds the difference between the phases using complex math*)
doneadx = Table[Table[Arg[ComplexoneA[[k]][[i + 1, j]]/ComplexoneA[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
doneady = Table[Table[Arg[ComplexoneA[[k]][[i, j + 1]]/ComplexoneA[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
donebdx = Table[Table[Arg[ComplexoneB[[k]][[i + 1, j]]/ComplexoneB[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
donebdy = Table[Table[Arg[ComplexoneB[[k]][[i, j + 1]]/ComplexoneB[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
donecdx = Table[Table[Arg[ComplexoneC[[k]][[i + 1, j]]/ComplexoneC[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
donecdy = Table[Table[Arg[ComplexoneC[[k]][[i, j + 1]]/ComplexoneC[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
doneddx = Table[Table[Arg[ComplexoneD[[k]][[i + 1, j]]/ComplexoneD[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
doneddy = Table[Table[Arg[ComplexoneD[[k]][[i, j + 1]]/ComplexoneD[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
dtwoadx = Table[Table[Arg[ComplextwoA[[k]][[i + 1, j]]/ComplextwoA[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
dtwoady = Table[Table[Arg[ComplextwoA[[k]][[i, j + 1]]/ComplextwoA[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
dtwobdx = Table[Table[Arg[ComplextwoB[[k]][[i + 1, j]]/ComplextwoB[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
dtwobdy = Table[Table[Arg[ComplextwoB[[k]][[i, j + 1]]/ComplextwoB[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
dtwocdx = Table[Table[Arg[ComplextwoC[[k]][[i + 1, j]]/ComplextwoC[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
dtwocdy = Table[Table[Arg[ComplextwoC[[k]][[i, j + 1]]/ComplextwoC[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
dtwoddx = Table[Table[Arg[ComplextwoD[[k]][[i + 1, j]]/ComplextwoD[[k]][[i, j]]], {i, 63}, {j, 64}], {k, 5}];
dtwoddy = Table[Table[Arg[ComplextwoD[[k]][[i, j + 1]]/ComplextwoD[[k]][[i, j]]], {i, 64}, {j, 63}], {k, 5}];
(*Weightedaveragethefiveimages, toreducenoise*)
weightoneax = Table[Table[Min[oneam[[k]][[i, j]], oneam[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
108
weightonebx = Table[Table[Min[onebm[[k]][[i, j]], onebm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weightonecx = Table[Table[Min[onecm[[k]][[i, j]], onecm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weightonedx = Table[Table[Min[onedm[[k]][[i, j]], onedm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weighttwoax = Table[Table[Min[twoam[[k]][[i, j]], twoam[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weighttwobx = Table[Table[Min[twobm[[k]][[i, j]], twobm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weighttwocx = Table[Table[Min[twocm[[k]][[i, j]], twocm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weighttwodx = Table[Table[Min[twodm[[k]][[i, j]], twodm[[k]][[i + 1, j]]], {i, 63}, {j, 64}], {k, 5}];
weightoneay = Table[Table[Min[oneam[[k]][[i, j]], oneam[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weightoneby = Table[Table[Min[onebm[[k]][[i, j]], onebm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weightonecy = Table[Table[Min[onecm[[k]][[i, j]], onecm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weightonedy = Table[Table[Min[onedm[[k]][[i, j]], onedm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weighttwoay = Table[Table[Min[twoam[[k]][[i, j]], twoam[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weighttwoby = Table[Table[Min[twobm[[k]][[i, j]], twobm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weighttwocy = Table[Table[Min[twocm[[k]][[i, j]], twocm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
weighttwody = Table[Table[Min[twodm[[k]][[i, j]], twodm[[k]][[i, j + 1]]], {i, 64}, {j, 63}], {k, 5}];
dadx = Table[
Sum[doneadx[[k]][[i, j]] ∗ weightoneax[[k]][[i, j]] + doneadx[[k]][[i, j + 1]] ∗ weightoneax[[k]][[i, j + 1]]+
dtwoadx[[k]][[i, j]] ∗ weighttwoax[[k]][[i, j]] + dtwoadx[[k]][[i, j + 1]] ∗ weighttwoax[[k]][[i, j + 1]],
{k, 5}]/Sum[weightoneax[[k]][[i, j]] + weightoneax[[k]][[i, j + 1]]+
weighttwoax[[k]][[i, j]] + weighttwoax[[k]][[i, j + 1]], {k, 5}], {i, 63}, {j, 63}];
dady = Table[Sum[doneady[[k]][[i, j]] ∗ weightoneay[[k]][[i, j]]+
doneady[[k]][[i + 1, j]] ∗ weightoneay[[k]][[i + 1, j]] + dtwoady[[k]][[i, j]] ∗ weighttwoay[[k]][[i, j]]+
dtwoady[[k]][[i + 1, j]] ∗ weighttwoay[[k]][[i + 1, j]], {k, 5}]/
Sum[weightoneay[[k]][[i, j]] + weightoneay[[k]][[i + 1, j]] + weighttwoay[[k]][[i, j]]+
weighttwoay[[k]][[i + 1, j]], {k, 5}], {i, 63}, {j, 63}];
dbdx = Table[Sum[donebdx[[k]][[i, j]] ∗ weightonebx[[k]][[i, j]]+
donebdx[[k]][[i, j + 1]] ∗ weightonebx[[k]][[i, j + 1]] + dtwobdx[[k]][[i, j]] ∗ weighttwobx[[k]][[i, j]]+
dtwobdx[[k]][[i, j + 1]] ∗ weighttwobx[[k]][[i, j + 1]], {k, 5}]/
Sum[weightonebx[[k]][[i, j]] + weightonebx[[k]][[i, j + 1]] + weighttwobx[[k]][[i, j]]+
weighttwobx[[k]][[i, j + 1]], {k, 5}], {i, 63}, {j, 63}];
dbdy = Table[Sum[donebdy[[k]][[i, j]] ∗ weightoneby[[k]][[i, j]]+
donebdy[[k]][[i + 1, j]] ∗ weightoneby[[k]][[i + 1, j]] + dtwobdy[[k]][[i, j]] ∗ weighttwoby[[k]][[i, j]]+
dtwobdy[[k]][[i + 1, j]] ∗ weighttwoby[[k]][[i + 1, j]], {k, 5}]/
Sum[weightoneby[[k]][[i, j]] + weightoneby[[k]][[i + 1, j]] + weighttwoby[[k]][[i, j]]+
weighttwoby[[k]][[i + 1, j]], {k, 5}], {i, 63}, {j, 63}];
dcdx = Table[Sum[donecdx[[k]][[i, j]] ∗ weightonecx[[k]][[i, j]]+
donecdx[[k]][[i, j + 1]] ∗ weightonecx[[k]][[i, j + 1]] + dtwocdx[[k]][[i, j]] ∗ weighttwocx[[k]][[i, j]]+
dtwocdx[[k]][[i, j + 1]] ∗ weighttwocx[[k]][[i, j + 1]], {k, 5}]/
Sum[weightonecx[[k]][[i, j]] + weightonecx[[k]][[i, j + 1]] + weighttwocx[[k]][[i, j]]+
weighttwocx[[k]][[i, j + 1]], {k, 5}], {i, 63}, {j, 63}];
dcdy = Table[Sum[donecdy[[k]][[i, j]] ∗ weightonecy[[k]][[i, j]]+
109
donecdy[[k]][[i + 1, j]] ∗ weightonecy[[k]][[i + 1, j]] + dtwocdy[[k]][[i, j]] ∗ weighttwocy[[k]][[i, j]]+
dtwocdy[[k]][[i + 1, j]] ∗ weighttwocy[[k]][[i + 1, j]], {k, 5}]/
Sum[weightonecy[[k]][[i, j]] + weightonecy[[k]][[i + 1, j]] + weighttwocy[[k]][[i, j]]+
weighttwocy[[k]][[i + 1, j]], {k, 5}], {i, 63}, {j, 63}];
dddx = Table[Sum[doneddx[[k]][[i, j]] ∗ weightonedx[[k]][[i, j]]+
doneddx[[k]][[i, j + 1]] ∗ weightonedx[[k]][[i, j + 1]] + dtwoddx[[k]][[i, j]] ∗ weighttwodx[[k]][[i, j]]+
dtwoddx[[k]][[i, j + 1]] ∗ weighttwodx[[k]][[i, j + 1]], {k, 5}]/
Sum[weightonedx[[k]][[i, j]] + weightonedx[[k]][[i, j + 1]] + weighttwodx[[k]][[i, j]]+
weighttwodx[[k]][[i, j + 1]], {k, 5}], {i, 63}, {j, 63}];
dddy = Table[Sum[doneddy[[k]][[i, j]] ∗ weightonedy[[k]][[i, j]]+
doneddy[[k]][[i + 1, j]] ∗ weightonedy[[k]][[i + 1, j]] + dtwoddy[[k]][[i, j]] ∗ weighttwody[[k]][[i, j]]+
dtwoddy[[k]][[i + 1, j]] ∗ weighttwody[[k]][[i + 1, j]], {k, 5}]/
Sum[weightonedy[[k]][[i, j]] + weightonedy[[k]][[i + 1, j]] + weighttwody[[k]][[i, j]]+
weighttwody[[k]][[i + 1, j]], {k, 5}], {i, 63}, {j, 63}];
(*Conversion of the four gradient vectors into the three axis vectors*)
c=
√ .
3 4 ∗ (VENC/vox)/(2 ∗ Pi);
dxdx = c ∗ (dadx − dbdx + dcdx − dddx);
dxdy = c ∗ (dady − dbdy + dcdy − dddy);
dydx = c ∗ (dadx − dbdx − dcdx + dddx);
dydy = c ∗ (dady − dbdy − dcdy + dddy);
(*Mohr′ sCircle*)
txy = (dxdy + dydx)/2;
dsigavg = (dxdx + dydy)/2;
R = Sqrt[(dxdx − dsigavg)∧ 2 + txy∧ 2];
StrainTheta = −(ArcTan[(dxdx − dsigavg), txy])/2;
PStrain1org = (dsigavg + R);
(*CorrelatestoStrainTheta[[i, j]]*)
PStrain2org = (dsigavg − R);
(*CorrelatestoStrainTheta[[i, j]] + Pi/2*)
(*This averages the 40 magnitude images that go into a timepoint*)
mag = Sum[oneam[[i]] + twoam[[i]] + onebm[[i]]+
twobm[[i]] + onecm[[i]] + twocm[[i]] + onedm[[i]] + twodm[[i]], {i, 5}]/40;
(*Thisfiltersoutstraindatafromlowsignalareas.Themagnitudeisindicativeofthesignal*)
PStrain1 = Table[If[Min[mag[[i, j]], mag[[i + 1, j]], mag[[i + 1, j + 1]], mag[[i, j + 1]]] < 64,
0, PStrain1org[[i, j]]], {i, 1, 63}, {j, 1, 63}];
110
PStrain2 = Table[If[Min[mag[[i, j]], mag[[i + 1, j]], mag[[i + 1, j + 1]], mag[[i, j + 1]]] < 64,
0, PStrain2org[[i, j]]], {i, 1, 63}, {j, 1, 63}];
(*Graphical constants*)
l = 3;
h = 1.5;
t = .2;
th = .05;
(*g1 and g2 are the icons representing the strain data in the figures*)
g1 = Table[If[PStrain1[[i, j]]==0,
Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − .05, j − .05}, {i + .05, j + .05}]}],
If[PStrain1[[i, j]] < 0, Graphics[{RGBColor[−h ∗ (PStrain1[[i, j]]), 0, 0], Polygon[
{{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3}}]}],
Graphics[{RGBColor[0, 0, h ∗ (PStrain1[[i, j]])], Polygon[
{{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i − l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j − l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]]], j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]]]},
{i + l ∗ PStrain1[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2] ∗ .3,
j + l ∗ PStrain1[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2] ∗ .3}}]}]]],
{i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
g2 = Table[If[PStrain2[[i, j]]==0,
Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − .05, j − .05}, {i + .05, j + .05}]}],
If[PStrain2[[i, j]] < 0, Graphics[
{RGBColor[−h ∗ (PStrain2[[i, j]]), 0, 0], Polygon[{{i − l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2],
j − l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2]}, {i − l ∗ PStrain2[[i, j]]∗
Cos[StrainTheta[[i, j]]] ∗ .3, j − l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]]] ∗ .3},
{i + l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2], j + l ∗ PStrain2[[i, j]]∗
Sin[StrainTheta[[i, j]] + Pi/2]}, {i + l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]]] ∗ .3,
j + l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]]] ∗ .3}}]}], Graphics[
{RGBColor[0, 0, h ∗ (PStrain2[[i, j]])], Polygon[{{i − l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2],
j − l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2]},
{i − l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]]] ∗ .3, j − l ∗ PStrain2[[i, j]]∗
Sin[StrainTheta[[i, j]]] ∗ .3}, {i + l ∗ PStrain2[[i, j]] ∗ Cos[StrainTheta[[i, j]] + Pi/2],
j + l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]] + Pi/2]}, {i + l ∗ PStrain2[[i, j]]∗
Cos[StrainTheta[[i, j]]] ∗ .3, j + l ∗ PStrain2[[i, j]] ∗ Sin[StrainTheta[[i, j]]] ∗ .3}}]}]]],
{i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
111
(*Thissortsthevectorsintoprimary(larger, gMax)andsecondary*)
(*(smaller, gMin)sothatthesmallerwillneverbecoveredbythelarger*)
gMin = Table[If[Abs[PStrain1[[i, j]]] < Abs[PStrain2[[i, j]]], g1[[i + 1 − xrangemin, j + 1 − yrangemin]],
g2[[i + 1 − xrangemin, j + 1 − yrangemin]]], {i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
gMax = Table[If[Abs[PStrain1[[i, j]]] < Abs[PStrain2[[i, j]]], g2[[i + 1 − xrangemin, j + 1 − yrangemin]],
g1[[i + 1 − xrangemin, j + 1 − yrangemin]]], {i, xrangemin, xrangemax}, {j, yrangemin, yrangemax}];
(*the background image of the averaged magnitude images*)
mag2D = Table[Graphics[{GrayLevel[N [mag[[i, j]]/256]], Rectangle[{i − 1, j − 1}, {i, j}]}], {i, 63}, {j, 63}];
(*This is stuff necessary for making the figures*)
magxcenter = Floor[(xrangemax + xrangemin)/2];
magycenter = Floor[(yrangemax + yrangemin)/2];
scale =
Graphics[{GrayLevel[1], Rectangle[{xrangemin − 2 − 3.5, yrangemin − 2.5}, {xrangemin − 2 − 5.5, yrangemin − 5.5}]}];
examplestrain = 1/3;
bar = Graphics[
{RGBColor[0, 0, h ∗ (examplestrain)], Polygon[{{xrangemin − 2 − 4.5 + l ∗ .3 ∗ examplestrain, (yrangemin − 4)},
{(xrangemin − 2 − 4.5), (yrangemin − 4 + l ∗ examplestrain)}, {(xrangemin − 2 − 4.5 − l ∗ .3 ∗ examplestrain),
(yrangemin − 4)}, {(xrangemin − 2 − 4.5), (yrangemin − 4 − l ∗ examplestrain)}}]}];
(*Regional analysis*)
reg1xmin = xrangemax − 17;
reg1xmax = xrangemax − 4;
reg1ymin = yrangemax − 13;
reg1ymax = yrangemax − 6;
region1 = Table[{i, j}, {i, reg1xmin, reg1xmax}, {j, reg1ymin, reg1ymax}];
"The total strain in Region 1:"
"Expansion is:"
region1totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg1xmin, reg1xmax}],
{j, reg1ymin, reg1ymax}]
"Compression is:"
region1totcom = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg1xmin, reg1xmax}],
{j, reg1ymin, reg1ymax}]
region1g = Table[Graphics[{Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg1xmin, reg1xmax}, {j, reg1ymin, reg1ymax}];
region1box = {Graphics[{Thickness[.004], Line[{{reg1xmin − .5, reg1ymin − .5}, {reg1xmin − .5, reg1ymax + .5}}]}],
112
Graphics[{Thickness[.004], Line[{{reg1xmin − .5, reg1ymax + .5}, {reg1xmax + .5, reg1ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg1xmax + .5, reg1ymax + .5}, {reg1xmax + .5, reg1ymin − .5}}]}],
Graphics[{Thickness[.004], Line[{{reg1xmax + .5, reg1ymin − .5}, {reg1xmin − .5, reg1ymin − .5}}]}]};
reg2xmin = xrangemax − 17;
reg2xmax = xrangemax − 4;
reg2ymin = yrangemax − 21;
reg2ymax = yrangemax − 14;
region2 = Table[{i, j}, {i, xrangemax − 15, xrangemax − 4}, {j, yrangemax − 16, yrangemax − 9}];
"The total strain in Region 2:"
"Expansion is:"
region2totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg2xmin, reg2xmax}],
{j, reg2ymin, reg2ymax}]
"Compression is:"
region2totexp = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg2xmin, reg2xmax}],
{j, reg2ymin, reg2ymax}]
region2g = Table[Graphics[{RGBColor[1, 0, 0], Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg2xmin, reg2xmax}, {j, reg2ymin, reg2ymax}];
region2box = {Graphics[{Thickness[.004], Line[{{reg2xmin − .5, reg2ymin − .5}, {reg2xmin − .5, reg2ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg2xmin − .5, reg2ymax + .5}, {reg2xmax + .5, reg2ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg2xmax + .5, reg2ymax + .5}, {reg2xmax + .5, reg2ymin − .5}}]}],
Graphics[{Thickness[.004], Line[{{reg2xmax + .5, reg2ymin − .5}, {reg2xmin − .5, reg2ymin − .5}}]}]};
reg3xmin = xrangemax − 17;
reg3xmax = xrangemax − 7;
reg3ymin = yrangemax − 30;
reg3ymax = yrangemax − 22;
region3 = Table[{i, j}, {i, reg3xmin, reg3xmax}, {j, reg3ymin, reg3ymax}];
"The total strain in Region 3:"
"Expansion is:"
region3totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg3xmin, reg3xmax}],
{j, reg3ymin, reg3ymax}]
"Compression is:"
region3totcom = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg3xmin, reg3xmax}],
{j, reg3ymin, reg3ymax}]
region3g = Table[Graphics[{RGBColor[0, 1, 0], Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg3xmin, reg3xmax}, {j, reg3ymin, reg3ymax}];
region3box = {Graphics[{Thickness[.004], Line[{{reg3xmin − .5, reg3ymin − .5}, {reg3xmin − .5, reg3ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg3xmin − .5, reg3ymax + .5}, {reg3xmax + .5, reg3ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg3xmax + .5, reg3ymax + .5}, {reg3xmax + .5, reg3ymin − .5}}]}],
Graphics[{Thickness[.004], Line[{{reg3xmax + .5, reg3ymin − .5}, {reg3xmin − .5, reg3ymin − .5}}]}]};
reg4xmin = xrangemax − 26;
113
reg4xmax = xrangemax − 18;
reg4ymin = yrangemax − 26;
reg4ymax = yrangemax − 12;
region4 = Table[{i, j}, {i, reg4xmin, reg4xmax}, {j, reg4ymin, reg4ymax}];
"The total strain in Region 4:"
"Expansion is:"
region4totexp = Sum[Sum[Clip[dxdx[[i, j]], {0, 10}] + Clip[dydy[[i, j]], {0, 10}], {i, reg4xmin, reg4xmax}],
{j, reg4ymin, reg4ymax}]
"Compression is:"
region4totcom = Sum[Sum[Clip[dxdx[[i, j]], {−10, 0}] + Clip[dydy[[i, j]], {−10, 0}], {i, reg4xmin, reg4xmax}],
{j, reg4ymin, reg4ymax}]
region4g = Table[Graphics[{RGBColor[0, 0, 1], Thickness[.01], Line[{{i, j}, {i, j}}]}],
{i, reg4xmin, reg4xmax}, {j, reg4ymin, reg4ymax}];
region4box = {Graphics[{Thickness[.004], Line[{{reg4xmin − .5, reg4ymin − .5}, {reg4xmin − .5, reg4ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg4xmin − .5, reg4ymax + .5}, {reg4xmax + .5, reg4ymax + .5}}]}],
Graphics[{Thickness[.004], Line[{{reg4xmax + .5, reg4ymax + .5}, {reg4xmax + .5, reg4ymin − .5}}]}],
Graphics[{Thickness[.004], Line[{{reg4xmax + .5, reg4ymin − .5}, {reg4xmin − .5, reg4ymin − .5}}]}]};
Show[mag2D, g1, g2, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
Show[mag2D, region1box, region2box, region3box,
region4box, g1, g2, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
Show[mag2D, gMax, gMin, scale, bar, {AspectRatio → Automatic}, {ImageSize → {600, 600}},
PlotRange → {{xrangemin − 7, xrangemax + 8}, {yrangemin − 5, yrangemax + 5}}];
114
Appendix E
Mathematica: Strain Rate
Tracography Processing
(*The Strain tractography code*)
eigens = Table[{{StrainTheta[[i, j]], Sign[PStrain1[[i, j]]]},
{ArcTan[Tan[StrainTheta[[i, j]] + Pi/2]], Sign[PStrain2[[i, j]]]}}, {i, 63}, {j, 63}];
(*Tract Numbers*)
tractwid = .003;
anglelimit = 35 ∗ Pi/180;
(*Defining the graphics list where the tract pieces will go*)
gTractBlue = {};
gTractRed = {};
(*The tractography code*)
For[i = xrangemin, i < xrangemax + 1,
For[j = yrangemin, j < yrangemax + 1, {
PointOne = {i, j};
PointTwo = {i, j};
If[eigens[[i, j]][[1, 2]]==1,
If[(Pi/4 > eigens[[i, j]][[1, 1]] > −Pi/4), {PointOne = {i − 0.5, j − 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]]},
PointTwo = {i + 0.5, j + 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]]}},
{PointOne = {i + 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]], j − 0.5},
PointTwo = {i − 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]], j + 0.5}}];
AppendTo[gTractBlue, Graphics[{RGBColor[0, 0, 1], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, j}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
115
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractBlue, Graphics[{RGBColor[0, 0, 1], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
currentSquare = nextBox[{i, j}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractBlue, Graphics[{RGBColor[0, 0, 1], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
];
If[eigens[[i, j]][[1, 2]]== − 1,
If[(Pi/4 > eigens[[i, j]][[1, 1]] > −Pi/4), {PointOne = {i − 0.5, j − 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]]},
PointTwo = {i + 0.5, j + 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]]}},
116
{PointOne = {i + 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]], j − 0.5},
PointTwo = {i − 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]], j + 0.5}}];
AppendTo[gTractRed, Graphics[{RGBColor[1, 0, 0], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, j}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractRed, Graphics[{RGBColor[1, 0, 0], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
currentSquare = nextBox[{i, j}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[1, 1]] >
−anglelimit&&eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractRed, Graphics[{RGBColor[1, 0, 0], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
117
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[1, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
];
(*This works through the second principal vectors*)
If[eigens[[i, j]][[2, 2]]==1,
If[(Pi/4 > eigens[[i, j]][[2, 1]] > −Pi/4), {PointOne = {i − 0.5, j − 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]]},
PointTwo = {i + 0.5, j + 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]]}},
{PointOne = {i + 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]], j − 0.5},
PointTwo = {i − 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]], j + 0.5}}];
AppendTo[gTractBlue, Graphics[{RGBColor[0, 0, 1], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, j}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractBlue, Graphics[{RGBColor[0, 0, 1], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
currentSquare = nextBox[{i, j}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
118
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractBlue, Graphics[{RGBColor[0, 0, 1], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
];
If[eigens[[i, j]][[2, 2]]== − 1,
If[(Pi/4 > eigens[[i, j]][[2, 1]] > −Pi/4), {PointOne = {i − 0.5, j − 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]]},
PointTwo = {i + 0.5, j + 0.5 ∗ Tan[eigens[[i, j]][[2, 1]]]}},
{PointOne = {i + 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]], j − 0.5},
PointTwo = {i − 0.5 ∗ Tan[eigens[[i, j]][[1, 1]]], j + 0.5}}];
AppendTo[gTractRed, Graphics[{RGBColor[1, 0, 0], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, j}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractRed, Graphics[{RGBColor[1, 0, 0], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
currentSquare = nextBox[{i, j}, PointTwo];
startPoint = PointTwo;
119
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − eigens[[i, j]][[2, 1]] >
−anglelimit&&eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous =
True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractRed, Graphics[{RGBColor[1, 0, 0], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 2]]&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1, 1]]},
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]] − convector > −anglelimit&&
eigens[[i, j]][[2, 2]]==eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 2]]&&xrangemin ≤
currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax, {continuous = True,
convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[2, 1]]}, {continuous = False}]]; ];
];
}; j++]; i++];
120
Appendix F
Mathematica: PC and DTI
processing
(*DTI − PCCombiningcode*)
(*Here we declare file location and variables for the DTI data*)
TimDir = "Gilbert44"
SetDirectory[$InitialDirectory];
SetDirectory[TimDir];
xraw = Array[0&, {64, 64, 30}];
yraw = xraw;
zraw = xraw;
For[k = 1, k < 26,
store = Import["v11" <> ToString[k] <> ".csv"];
For[i = 1, i < 65,
For[j = 1, j < 65,
yraw[[i, j, k]] = store[[i, j]];
j++]; i++];
store = Import["v12" <> ToString[k] <> ".csv"];
For[i = 1, i < 65,
For[j = 1, j < 65,
xraw[[i, j, k]] = store[[i, j]];
j++]; i++];
store = Import["v13" <> ToString[k] <> ".csv"];
For[i = 1, i < 65,
For[j = 1, j < 65,
zraw[[i, j, k]] = store[[i, j]];
j++]; i++]; k++];
(*jselectsthefirstslicethatwe′ llbeusingfor2DDTItractography*)
j = 32;
121
(*This lines up the DTI and PC data*)
DTIyshift = 17;
DTIxshift = 0;
(*thisturnstherawdataintovectors.DTIangledefinestheangles*)
(*ofthediffusionvectorsfromhorizontal, andeigensactsasasignalfilter, *)
(*tomaketheimageslookbetter, andtobetteroutlinethetongue.*)
DTIangle = Table[0, {i, 64}, {k, 64}];
For[i = 2, i < 64,
For[k = 1, k < 26,
DTIangle[[i + DTIxshift, k + DTIyshift]] = ArcTan[xraw[[i, j, k]]/zraw[[i, j, k]]]; k++]; i++];
eigens = Table[If[Min[mag[[i, k]], mag[[i + 1, k]], mag[[i, k + 1]], mag[[i + 1, k + 1]]] < 64,
{0, 0}, {DTIangle[[k, i]], 1}], {i, 63}, {k, 63}];
(*jselectsthesecondslicethatwe′ llbeusingfor2DDTItractography,
andconvertsthedataintoavectorfield*)
j = 33;
DTIangle33 = Table[0, {i, 64}, {k, 64}];
For[i = 2, i < 64,
For[k = 1, k < 26,
DTIangle33[[i + DTIxshift, k + DTIyshift]] = ArcTan[xraw[[i, j, k]]/zraw[[i, j, k]]]; k++]; i++];
eigens33 = Table[If[Min[mag[[i, k]], mag[[i + 1, k]], mag[[i, k + 1]], mag[[i + 1, k + 1]]] < 64,
{0, 0}, {DTIangle33[[k, i]], 1}], {i, 63}, {k, 63}];
(*corconstant defines the range of strain that shows up as color in the*)
(*combinedfigures.1/corconstantdefinesthestrainassociatedwiththebrightesthue*)
corconstant = 2.5;
(*This finds the alignment by dot product of each *)
(*principal strain vector with its corresponding diffusion vector*)
cor1 = Table[corconstant ∗ PStrain1[[i, k]] ∗ Abs[Cos[DTIangle[[k, i]] − StrainTheta[[i, k]]]],
{i, 63}, {k, 63}];
cor2 = Table[corconstant ∗ PStrain2[[i, k]] ∗ Abs[Sin[DTIangle[[k, i]] − StrainTheta[[i, k]]]],
{i, 63}, {k, 63}];
(*This selects the more aligned of the two strain vectors for each voxel*)
cor = Table[If[Abs[cor1[[i, k]]] > Abs[cor2[[i, k]]], cor1[[i, k]], cor2[[i, k]]], {i, 63}, {k, 63}];
(*Thissortsthemintocompressionandexpansion, tomakethecoloringeasierlateron*)
corRed = Table[If[cor[[i, k]] < 0, −1 ∗ Clip[cor[[i, k]]], 0], {i, 63}, {k, 63}];
corBlue = Table[If[cor[[i, k]] > 0, Clip[cor[[i, k]]], 0], {i, 63}, {k, 63}];
cor1 =
122
Table[corconstant ∗ PStrain1[[i, k]] ∗ Abs[Cos[DTIangle33[[k, i]] − StrainTheta[[i, k]]]], {i, 63}, {k, 63}];
cor2 = Table[corconstant ∗ PStrain2[[i, k]] ∗ Abs[Sin[DTIangle33[[k, i]] − StrainTheta[[i, k]]]],
{i, 63}, {k, 63}];
cor33 = Table[If[Abs[cor1[[i, k]]] > Abs[cor2[[i, k]]], cor1[[i, k]], cor2[[i, k]]], {i, 63}, {k, 63}];
corRed33 = Table[If[cor33[[i, k]] < 0, −1 ∗ Clip[cor33[[i, k]]], 0], {i, 63}, {k, 63}];
corBlue33 = Table[If[cor33[[i, k]] > 0, Clip[cor33[[i, k]]], 0], {i, 63}, {k, 63}];
(*sets the maximum connection angle for tractography*)
anglelimit = 35 ∗ Pi/180;
(*sets the tract thickness in the graphics*)
th = .003;
(*ensuresthatthetractsdon′ tgetcaughtinsomeloop*)
tractlimit = 100;
tractcount = 0;
(*The tractography code for 2D DTI data*)
gTractDTI = {};
For[i = xrangemin, i < xrangemax + 1,
For[k = yrangemin, k < yrangemax + 1, {
PointOne = {i, k};
PointTwo = {i, k};
If[eigens[[i, k]][[2]]==1,
If[(Pi/4 > eigens[[i, k]][[1]] > −Pi/4), {PointOne = {i − 0.5, k − 0.5 ∗ Tan[eigens[[i, k]][[1]]]},
PointTwo = {i + 0.5, k + 0.5 ∗ Tan[eigens[[i, k]][[1]]]}}, {PointOne =
{i − 0.5 ∗ Cot[eigens[[i, k]][[1]]], k − 0.5}, PointTwo = {i + 0.5 ∗ Cot[eigens[[i, k]][[1]]], k + 0.5}}];
AppendTo[gTractDTI, Graphics[{RGBColor[0, Abs[Sin[eigens[[i, k]][[1]]]], Abs[Cos[eigens[[i, k]][[1]]]]],
Thickness[th], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, k}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTI,
Graphics[{RGBColor[0, Abs[Sin[eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]]]],
Abs[Cos[eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]]]]],
Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
123
currentSquare = nextBox[{i, k}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTI,
Graphics[{RGBColor[0, Abs[Sin[eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]]]],
Abs[Cos[eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]]]]],
Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
];
}; k++]; i++];
gTractDTI33 = {};
For[i = xrangemin, i < xrangemax + 1,
For[k = yrangemin, k < yrangemax + 1, {
PointOne = {i, k};
PointTwo = {i, k};
If[eigens33[[i, k]][[2]]==1,
If[(Pi/4 > eigens33[[i, k]][[1]] > −Pi/4), {PointOne = {i − 0.5, k − 0.5 ∗ Tan[eigens33[[i, k]][[1]]]},
PointTwo = {i + 0.5, k + 0.5 ∗ Tan[eigens33[[i, k]][[1]]]}},
{PointOne = {i − 0.5 ∗ Cot[eigens33[[i, k]][[1]]], k − 0.5},
PointTwo = {i + 0.5 ∗ Cot[eigens33[[i, k]][[1]]], k + 0.5}}];
AppendTo[gTractDTI33, Graphics[{RGBColor[0, Abs[Sin[eigens33[[i, k]][[1]]]],
Abs[Cos[eigens33[[i, k]][[1]]]]], Thickness[th], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, k}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens33[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTI33,
Graphics[{RGBColor[0, Abs[Sin[eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]]]],
Abs[Cos[eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]]]]],
124
Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
currentSquare = nextBox[{i, k}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens33[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTI33,
Graphics[{RGBColor[0, Abs[Sin[eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]]]],
Abs[Cos[eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]]]]],
Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
];
}; k++]; i++];
(*Thesametracographycode, *)
(* except the tracts are colored according to their correlation with the strain rate data*)
gTractDTIPC = {};
For[i = xrangemin, i < xrangemax + 1,
For[k = yrangemin, k < yrangemax + 1, {
PointOne = {i, k};
PointTwo = {i, k};
If[eigens[[i, k]][[2]]==1,
If[(Pi/4 > eigens[[i, k]][[1]] > −Pi/4), {PointOne = {i − 0.5, k − 0.5 ∗ Tan[eigens[[i, k]][[1]]]},
PointTwo = {i + 0.5, k + 0.5 ∗ Tan[eigens[[i, k]][[1]]]}}, {PointOne =
{i − 0.5 ∗ Cot[eigens[[i, k]][[1]]], k − 0.5}, PointTwo = {i + 0.5 ∗ Cot[eigens[[i, k]][[1]]], k + 0.5}}];
AppendTo[gTractDTIPC, Graphics[{RGBColor[corRed33[[i, k]], 0, corBlue33[[i, k]]],
Thickness[th], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, k}, PointOne];
125
startPoint = PointOne;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTIPC,
Graphics[{RGBColor[corRed33[[currentSquare[[1]], currentSquare[[2]]]], 0, corBlue33[[
currentSquare[[1]], currentSquare[[2]]]]], Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
currentSquare = nextBox[{i, k}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTIPC,
Graphics[{RGBColor[corRed33[[currentSquare[[1]], currentSquare[[2]]]], 0, corBlue33[[
currentSquare[[1]], currentSquare[[2]]]]], Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
];
}; k++]; i++];
gTractDTIPC33 = {};
For[i = xrangemin, i < xrangemax + 1,
For[k = yrangemin, k < yrangemax + 1, {
PointOne = {i, k};
PointTwo = {i, k};
If[eigens33[[i, k]][[2]]==1,
If[(Pi/4 > eigens33[[i, k]][[1]] > −Pi/4), {PointOne = {i − 0.5, k − 0.5 ∗ Tan[eigens33[[i, k]][[1]]]},
126
PointTwo = {i + 0.5, k + 0.5 ∗ Tan[eigens33[[i, k]][[1]]]}},
{PointOne = {i − 0.5 ∗ Cot[eigens33[[i, k]][[1]]], k − 0.5},
PointTwo = {i + 0.5 ∗ Cot[eigens33[[i, k]][[1]]], k + 0.5}}];
AppendTo[gTractDTIPC33, Graphics[{RGBColor[corRed33[[i, k]], 0, corBlue33[[i, k]]],
Thickness[th], Line[{PointOne, PointTwo}]}]];
currentSquare = nextBox[{i, k}, PointOne];
startPoint = PointOne;
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens33[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTIPC33,
Graphics[{RGBColor[corRed33[[currentSquare[[1]], currentSquare[[2]]]], 0, corBlue33[[
currentSquare[[1]], currentSquare[[2]]]]], Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
currentSquare = nextBox[{i, k}, PointTwo];
startPoint = PointTwo;
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − eigens33[[i, k]][[1]] >
−anglelimit&&xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1, {continuous = True, convector =
eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]], tractcount = 0}, {continuous = False}];
While[continuous,
endPoint = lineInBox[startPoint, currentSquare, convector];
AppendTo[gTractDTIPC33,
Graphics[{RGBColor[corRed33[[currentSquare[[1]], currentSquare[[2]]]], 0, corBlue33[[
currentSquare[[1]], currentSquare[[2]]]]], Thickness[th], Line[{startPoint, endPoint}]}]];
startPoint = endPoint;
currentSquare = nextBox[currentSquare, startPoint];
If[anglelimit > eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]] − convector > −anglelimit&&
xrangemin ≤ currentSquare[[1]] ≤ xrangemax&&yrangemin ≤ currentSquare[[2]] ≤ yrangemax&&
tractcount < tractlimit&&eigens33[[currentSquare[[1]], currentSquare[[2]]]][[2]] == 1,
{continuous = True, convector = eigens33[[currentSquare[[1]], currentSquare[[2]]]][[1]],
tractcount = tractcount + 1}, {continuous = False}]; ];
];
}; k++]; i++];
(*definingtractregionsfordataanalysis.GG = genioglossus, LGG = lowergenioglossus, andV = verticalis*)
127
GGpoints = {
{28, 21, 32},
{29, 21, 32},
{30, 20, 32},
{31, 20, 32},
{32, 20, 33},
{33, 20, 34},
{34, 23, 34},
{35, 23, 34},
{36, 28, 33},
{37, 28, 33}
};
gGG = {}
GGstrain = 0;
For[i = 1, i < Length[GGpoints] + 1,
For[j = GGpoints[[i]][[2]], j < GGpoints[[i]][[3]] + 1,
AppendTo[gGG, Graphics[Point[{GGpoints[[i]][[1]], j}]]];
GGstrain = GGstrain + cor[[GGpoints[[i]][[1]], j]]; j++]; i++];
LGGpoints = {
{18, 19, 26},
{19, 19, 26},
{20, 17, 26},
{21, 17, 26},
{22, 15, 33},
{23, 15, 33},
{24, 15, 33},
{25, 18, 33},
{26, 18, 33},
{27, 18, 33}
};
gLGG = {}
LGGstrain = 0;
For[i = 1, i < Length[LGGpoints] + 1,
For[j = LGGpoints[[i]][[2]], j < LGGpoints[[i]][[3]] + 1,
AppendTo[gLGG, Graphics[{RGBColor[0, 0, 1], Point[{LGGpoints[[i]][[1]], j}]}]];
LGGstrain = LGGstrain + cor[[LGGpoints[[i]][[1]], j]]; j++]; i++];
Vpoints = {
{30, 17, 19},
{31, 16, 19},
{32, 15, 19},
{33, 14, 19},
{34, 14, 22},
{35, 14, 22},
128
{36, 14, 22},
{37, 14, 22}
};
gV = {}
Vstrain = 0;
For[i = 1, i < Length[Vpoints] + 1,
For[j = Vpoints[[i]][[2]], j < Vpoints[[i]][[3]] + 1,
AppendTo[gV, Graphics[{RGBColor[1, 0, 0], Point[{Vpoints[[i]][[1]], j}]}]];
Vstrain = Vstrain + cor[[Vpoints[[i]][[1]], j]]; j++]; i++];
Show[mag2D, gTractDTI, gTractDTI33, g1, g2, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
Show[mag2D, gTractDTI, gTractDTI33, {AspectRatio → Automatic}, {ImageSize → {600, 600}},
PlotRange → {{xrangemin − 7, xrangemax + 8}, {yrangemin − 5, yrangemax + 5}}];
GGstrain
LGGstrain
Vstrain
Show[mag2D, gTractDTIPC, gTractDTIPC33, {AspectRatio → Automatic},
{ImageSize → {600, 600}}, PlotRange → {{xrangemin − 7, xrangemax + 8}, {yrangemin − 5, yrangemax + 5}}];
Show[mag2D, gTractDTIPC, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
Show[mag2D, gTractDTIPC33, {AspectRatio → Automatic}, {ImageSize → {900, 900}}];
129
130
Bibliography
[1] S. ABD-EL-MALEK. The part played by the tongue in mastication and deglutition. J Anat, 89(2):250–254, Apr 1955.
[2] Eytan Bardan, Mark Kern, Ronald C Arndorfer, Candy Hofmann, and Reza
Shaker. Effect of aging on bolus kinematics during the pharyngeal phase of
swallowing. Am J Physiol Gastrointest Liver Physiol, 290(3):G458–G465, Mar
2006.
[3] P.J. Basser, J. Mattiello, and D. LeBihan. MR diffusion tensor spectroscopy and
imaging. Biophysical Journal, 66:259–267, 1994.
[4] Gloria Chi-Fishman. Quantitative lingual, pharyngeal and laryngeal ultrasonography in swallowing research: a technical review. Clin Linguist Phon, 19(67):589–604, 2005.
[5] G.G. Cleveland, D.C. Chang, C.F. Hazelwood, and H.E. Rorschach. Nuclear
magnetic resonance measurements of skeletal muscle: anisotropy of the diffusion
coefficient of the intracellular water. Biophys J, 16:1043–1053, 1976.
[6] I. J. Cook, W. J. Dodds, R. O. Dantas, M. K. Kern, B. T. Massey, R. Shaker, and
W. J. Hogan. Timing of videofluoroscopic, manometric events, and bolus transit
during the oral and pharyngeal phases of swallowing. Dysphagia, 4(1):8–15, 1989.
[7] B.M. Damon, Z. Ding, A.W. Anderson, A.S. Freyer, and J.C. Gore. Validation of
diffusion tensor MRI-based muscle fiber tracking. Magnetic Resonance Medicine,
48:97–104, 2002.
[8] W. J. Dodds, E. T. Stewart, and J. A. Logemann. Physiology and radiology of
the normal oral and pharyngeal phases of swallowing. AJR Am J Roentgenol,
154(5):953–963, May 1990.
[9] Jiangang Dou, Wen-Yih I Tseng, Timothy G Reese, and Van J Wedeen. Combined diffusion and strain mri reveals structure and function of human myocardial
laminar sheets in vivo. Magn Reson Med, 50(1):107–113, Jul 2003.
[10] T. Ebbers, L. Wigstrm, A. F. Bolger, B. Wranne, and M. Karlsson. Noninvasive
measurement of time-varying three-dimensional relative pressure fields within
the human heart. J Biomech Eng, 124(3):288–293, Jun 2002.
131
[11] R. F. Flaherty, S. Seltzer, T. Campbell, R. M. Weisskoff, and R. J. Gilbert.
Dynamic magnetic resonance imaging of vocal cord closure during deglutition.
Gastroenterology, 109(3):843–849, Sep 1995.
[12] R. J. Gilbert, S. Daftary, T. A. Campbell, and R. M. Weisskoff. Patterns of
lingual tissue deformation associated with bolus containment and propulsion
during deglutition as determined by echo-planar mri. J Magn Reson Imaging,
8(3):554–560, 1998.
[13] R. J. Gilbert, T. G. Reese, S. J. Daftary, R. N. Smith, R. M. Weisskoff, and
V. J. Wedeen. Determination of lingual myoarchitecture in whole tissue by nmr
imaging of anisotropic water diffusion. Am J Physiol, 275(2 Pt 1):G363–G369,
Aug 1998.
[14] Richard J Gilbert, Lee H Magnusson, Vitaly J Napadow, Thomas Benner,
Ruopeng Wang, and Van J Wedeen. Mapping complex myoarchitecture in the
bovine tongue with diffusion-spectrum magnetic resonance imaging. Biophys J,
91(3):1014–1022, Aug 2006.
[15] Richard J Gilbert and Vitaly J Napadow. Three-dimensional muscular architecture of the human tongue determined in vivo with diffusion tensor magnetic
resonance imaging. Dysphagia, 20(1):1–7, 2005.
[16] Richard J Gilbert, Van J Wedeen, Lee H Magnusson, Thomas Benner, Ruopeng
Wang, George Dai, Vitaly J Napadow, and Kenneth K Roche. Three-dimensional
myoarchitecture of the bovine tongue demonstrated by diffusion spectrum magnetic resonance imaging with tractography. Anat Rec A Discov Mol Cell Evol
Biol, 288(11):1173–1182, Nov 2006.
[17] R.J. Gilbert, L.H. Magnusson, V.J. Napadow, T. Benner, R. Wang, and V.J.
Wedeen. Mapping complex myoarchitecture in the bovine tongue with diffusion
spectrum magnetic resonance imaging. Biophysical Journal, 91:1014–1022, 2006.
[18] R.J. Gilbert, V.J Wedeen, T. Benner, R. Wang, G. Dai, V.J. Napadow, and K.K.
Roche. Three-dimensional myoarchitecture of the bovine tongue demonstrated by
diffusion spectrum magnetic resonance imaging with tractography. Anatomical
Record, 288A:1173–1182, 2006.
[19] A.F. Gmitro and A.S. Alexander. Use of a projection reconstruction method
to decrease motion sensitivity in diffusion weighed MRI. Magnetic Resonance
Medicine, 29:835–838, 1993.
[20] J.V. Hajnal, M. Doran, A.S. Hall, A.G Collins, A. Oatridge, J.M. Pennock, I.R.
Young, and G.M. Bydder. MR imaging of anisotropically restricted diffusion of
water in the nervous system: technical, anatomic, and pathologic considerations.
J or Computer Assisted Tomography, 15:1–18, 1991.
132
[21] S. L. Hamlet, M. Stone, and T. H. Shawker. Posterior tongue grooving in deglutition and speech: preliminary observations. Dysphagia, 3(2):65–68, 1988.
[22] Herrel, Cleuren, and Vree. Kinematics of feeding in the lizard agama stellio. J
Exp Biol, 199(Pt 8):1727–1742, 1996.
[23] K. M. Hiiemae and J. B. Palmer. Food transport and bolus formation during
complete feeding sequences on foods of different initial consistency. Dysphagia,
14(1):31–42, 1999.
[24] A.A. Holmes, D.F. Scollan, and R.L. Winslow. Direct histological validation of
diffusion tensor MRI in formaldehyde-fixed myocardium. Magnetic Resonance
Medicine, 44:157–161, 2000.
[25] E.W. Hsu, D.L. Buckley, J.D. Bui, S.J. Blackband, and J.R. Forder. Twocomponent diffusion tensor MRI of isolated perfused hearts. Magnetic Resonance
Medicine, 45:1039–1045, 2001.
[26] Bernd Jung, Michael Markl, Daniela Fll, and Jrgen Hennig. Investigating myocardial motion by mri using tissue phase mapping. Eur J Cardiothorac Surg,
29 Suppl 1:S150–S157, Apr 2006.
[27] P. J. Kahrilas, S. Lin, J. A. Logemann, G. A. Ergun, and F. Facchini. Deglutitive
tongue action: volume accommodation and bolus propulsion. Gastroenterology,
104(1):152–162, Jan 1993.
[28] P. J. Kahrilas, J. A. Logemann, S. Lin, and G. A. Ergun. Pharyngeal clearance during swallowing: a combined manometric and videofluoroscopic study.
Gastroenterology, 103(1):128–136, Jul 1992.
[29] C. L. Lazarus, J. A. Logemann, B. R. Pauloski, A. W. Rademaker, C. R. Larson,
B. B. Mittal, and M. Pierce. Swallowing and tongue function following treatment
for oral and oropharyngeal cancer. J Speech Lang Hear Res, 43(4):1011–1023,
Aug 2000.
[30] D. LeBihan, J.F. Mangin, C. Poupon, C.A Clark, S. Pappata, N. Molko, and
H. Chabriat. Diffusion testor imaging: concepts and applications. Journal of
Magnetic Resonance Imaging, 13:534–546, 2001.
[31] D. J. Maddock and R. J. Gilbert. Quantitative relationship between liquid bolus
flow and laryngeal closure during deglutition. Am J Physiol, 265(4 Pt 1):G704–
G711, Oct 1993.
[32] M.E.J. Moseley, J. Kucharczyk, H.S. Asgari, and D. Norman. Anisotropy in
diffusion-weighted MRI. Magnetic Resonace Medicine, 19:321–326, 1991.
[33] V. J. Napadow, Q. Chen, V. Mai, P. T. So, and R. J. Gilbert. Quantitative
analysis of three-dimensional-resolved fiber architecture in heterogeneous skeletal
muscle tissue using nmr and optical imaging methods. Biophys J, 80(6):2968–
2975, Jun 2001.
133
[34] V. J. Napadow, Q. Chen, V. J. Wedeen, and R. J. Gilbert. Biomechanical basis
for lingual muscular deformation during swallowing. Am J Physiol, 277(3 Pt
1):G695–G701, Sep 1999.
[35] V. J. Napadow, Q. Chen, V. J. Wedeen, and R. J. Gilbert. Intramural mechanics
of the human tongue in association with physiological deformations. J Biomech,
32(1):1–12, Jan 1999.
[36] Vitaly J Napadow, Roger D Kamm, and Richard J Gilbert. A biomechanical
model of sagittal tongue bending. J Biomech Eng, 124(5):547–556, Oct 2002.
[37] M. A. Nicosia and J. A. Robbins. The fluid mechanics of bolus ejection from the
oral cavity. J Biomech, 34(12):1537–1544, Dec 2001.
[38] J. B. Palmer, N. J. Rudin, G. Lara, and A. W. Crompton. Coordination of
mastication and swallowing. Dysphagia, 7(4):187–200, 1992.
[39] D. Paydarfar, R. J. Gilbert, C. S. Poppel, and P. F. Nassab. Respiratory phase
resetting and airflow changes induced by swallowing in humans. J Physiol, 483
( Pt 1):273–288, Feb 1995.
[40] Timothy G Reese, David A Feinberg, Jiangang Dou, and Van J Wedeen. Phase
contrast mri of myocardial 3d strain by encoding contiguous slices in a single
shot. Magn Reson Med, 47(4):665–676, Apr 2002.
[41] J. R. Reichenbach, R. Venkatesan, D. A. Yablonskiy, M. R. Thompson, S. Lai,
and E. M. Haacke. Theory and application of static field inhomogeneity effects
in gradient-echo imaging. J Magn Reson Imaging, 7(2):266–279, 1997.
[42] K. K. Smith. Morphology and function of the tongue and hyoid apparatus in
varanus (varanidae, lacertilia). J Morphol, 187(3):261–287, Mar 1986.
[43] K.K. Smith and W.M. Kier. Trunks, tongues, and tentacles: moving with skeletons of muscle. American Scientist, 77:29–35, 1989.
[44] E.O. Stejskal and J.E. Tanner. Use of spin echoes in a pulsed magnetic field
gradient to study anisotropic restricted diffusion and flow. Journal of Chemical
Physics, 43:3597–3603, 1965.
[45] M. Stone. A three-dimensional model of tongue movement based on ultrasound
and x-ray microbeam data. J Acoust Soc Am, 87(5):2207–2217, May 1990.
[46] M. Stone, E.P. Davis, A.S. Douglas, M. NessAiver, R. Gullapalli, W.S. Levine,
and A. Lundberg. Modeling the motion of the internal tongue from tagged cinemri images. J Acoust Soc Am., 109(6):2974–82, 2001.
[47] M. Stone, M.A. Epstein, and K. Iskarous. Functional segments in tongue movement. Clin Linguist Phon., 18(6-8):507–21, 2004.
134
[48] A. Thexton and K. M. Hiiemae. The effect of food consistency upon jaw movement in the macaque: a cineradiographic study. J Dent Res, 76(1):552–560, Jan
1997.
[49] A. J. Thexton. Mastication and swallowing: an overview. Br Dent J, 173(6):197–
206, Oct 1992.
[50] A. J. Thexton and J. D. McGarrick. Tongue movement of the cat during lapping.
Arch Oral Biol., 33:331–39, 1988.
[51] A. J. Thexton and J. D. McGarrick. The electromyographic activities of jaw and
hyoid musculature in different ingestive behaviours in the cat. Arch Oral Biol,
39(7):599–612, Jul 1994.
[52] W. Y. Tseng, T. G. Reese, R. M. Weisskoff, T. J. Brady, and V. J. Wedeen.
Myocardial fiber shortening in humans: initial results of mr imaging. Radiology,
216(1):128–139, Jul 2000.
[53] D.S. Tuch, T.G. Reese, M.R. Weigel, N. Makris, J.W. Belleveau, and V.J.
Wedeen. High angular resolution diffusion imaging reveals intravoxel white matter fiber heterogeneity. Magn Res Med, 48:577–582, 2002.
[54] C.C VanDonkelaar, L.J. Kretzers, P.H.M. Bovendeerd, L.M.A. Lataster, K. Nicolay, J.D. Janssen, and M.R. Drost. Diffusion tensor imaging in biomechanical
studies of skeletal muscle function. Journal of Anatomy, 194:79–88, 1999.
[55] V. J. Wedeen, T. G. Reese, V. J. Napadow, and R. J. Gilbert. Demonstration of
primary and secondary muscle fiber architecture of the bovine tongue by diffusion
tensor magnetic resonance imaging. Biophys J, 80(2):1024–1028, Feb 2001.
[56] V. J. Wedeen, R. M. Weisskoff, T. G. Reese, G. M. Beache, B. P. Poncelet, B. R.
Rosen, and R. E. Dinsmore. Motionless movies of myocardial strain-rates using
stimulated echoes. Magn Reson Med, 33(3):401–408, Mar 1995.
[57] B. Wein, R. Bckler, and S. Klajman. Temporal reconstruction of sonographic
imaging of disturbed tongue movements. Dysphagia, 6(3):135–139, 1991.
[58] J.C. Wu, E.C. Wong, E.L. Arrindell, K.B. Simons, A. Jesmanowics, and J.S.
Hyde. In vivo determination of the anisotropic diffusion of water and the T1
and T2 times in the rabbit lens by high-resolution magnetic resonance imaging.
Invest Opthalmol Vis Sci, 34:2151–2158, 1993.
[59] Scott R Youmans and Julie A G Stierwalt. Measures of tongue function related
to normal swallowing. Dysphagia, 21(2):102–111, Apr 2006.
[60] X. Zheng and A. Pang. Volume deformation for tensor visualization. Visualization, pages 379–86, 2002.
135
Download