Post on 14-Jan-2016
Representing and ProcessingScientific Data with Teem:
Applications to CT and DT-MRI
Gordon Kindlmann
Representing and ProcessingScientific Data with Teem:
Applications to CT and DT-MRI
Gordon Kindlmann Scientific Computing and Imaging Institute, School of Computing, University of Utah
The software: teem includes nrrd and ten
Application 1: Inspecting CT data
Application 2: Estimating and inspecting diffusion tensors
Outline
Teem overview
• Software I write to do research• Data processing, scientific visualization
• Open-source: http://teem.sourceforge.net• Get pre-compiled binaries, reproduce results
• Collection of ANSI C libraries• Function calls do what you need• Pseudo-object-oriented: nrrdNew(), nrrdCopy(), nrrdSlice(), nrrdNuke()
• Uncommon library names• Multiple interfaces
• Command-line: Repeatability, reproducability• API BioTensor GUI
Teem libraries
Basic utility functions + macros
Command-line parsing
Nearly Raw Raster Data: representing (in memory, on disk) and manipulating N-dimensional arrays
Filtered point sampling: interpolating scalar, vector, tensor fields; used for fiber tracking in Bio-Tensor
All things diffusion tensor
Two libraries, two utilities
Underlying library
nrrd
ten
Command-line utility
unu
tendalso BioPSE module name prefix
nrrd: what it is
• Nearly Raw Raster Data• No abstractions, no cleverness
• Representation and manipulation of N-dimensional raster data:• File format• Data structure• Large set of operations
• Used by SCIRun, ITK, others• Format and API are stable
nrrd: why it is• Information in scientific computation and
visualization often N-dimensional array:• 1D: histograms, time-varying scalar• 2D: gray-scale images, scatterplots,
collection of signals• 3D: color images, CT/MRI volumes• 4D: vector/tensor volumes, time-
varying scalar fields• 5D: time-varying vector/tensor fields
• Common format and tools for all of these
nrrd: capabilities• Subset, superset
• Cropping, slicing, padding, joining• Arithmetic
• Adding, multiplying• Converting
• Quantization, changing type• Rearranging
• Permute axes, flipping+shuffling slices, bricking (w/out overlap)
• Filtering• Up+downsampling, blurring, median
• Measuring: projection along an axis• Min, max, mean, L2, variance, etc.
• Histograms of all sorts
dimensiongenerality
Getting data in: NRRD file format
NRRD0001content: a dozen imagestype: floatdimension: 4sizes: 3 640 480 12encoding: raw endian: big
<raw data>• Detached headers possible:
• “data file”, “line skip”, “byte skip”• Different encodings possible:
• Raw, ASCII, gzip-compressed, hex• Can be generated by hand …
ASCII headerfor arraydescription
Blank line Data
Getting data in: “unu make”• unu make -i <data file> \
-s 3 640 480 12 -t float \ -e raw -en big -o images.nrrdNRRD0001type: floatdimension: 4sizes: 3 640 480 12encoding: raw endian: big…
• unu make -h -i <data file> \ -s 3 640 480 12 -t float \ -e raw -en big -o images.nhdr
• Pretty? No. Effective? Yes.
Concept: raster orderingN-D raster data has “raster ordering”(0, 0, 0)(1, 0, 0)(2, 0, 0)(0, 1, 0)(1, 1, 0)(2, 1, 0) …(0, 539, 0)(1, 539, 0)(2, 539, 0)(0, 0, 1)…(0, 0, 2)…(0, 539, 379)(1, 539, 379)(2, 539, 379)
linea
r or
derin
g in
mem
ory 2-D color image
3-D array color:X:Y
Each coordinate is an axisAxes ordered: fast to slow;contiguous to distant
Fast: colorMedium: XSlow: Y
color
color X
Y
The software: teem includes nrrd and ten
Application 1: Inspecting CT data
Application 2: Estimating and inspecting diffusion tensors
Outline
To inspect one slice:zcat c_vf1700.fre.Z \| unu make -t ushort -e raw \
-en big -s 512 512 -bs 3416 \| unu quantize -b 8 \| unu save -f pnm | xv -
(demo of this, and command list)
cp data/c_vf16{4,5,6,7,8,9}?.fre.Z .cp data/c_vf17??.fre.Z .cp data/c_vf18{0,1,2}?.fre.Z .uncompress *.Zunu make -i *.fre -t ushort -e raw -en big \
-s 512 512 190 -bs 3416 \ -sp 0.9375 0.9375 1.0 \| unu crop -min 324 84 0 -max 499 270 M \
-o vfrhand.nhdrrm -rf *.fre
Unu application: Visible human CT
(link)
Unu application: Visible human CT
The software: teem includes nrrd and ten
Application 1: Inspecting CT data
Application 2: Estimating and inspecting diffusion tensors
Outline
Diffusion in Biological Tissue
Motion of water through tissue
Faster in some directions than others
Kleenex newspaper
• Anisotropy: diffusion rate depends on direction
isotropic anisotropic
Diffusion in 3D
isotropic
anisotropic
linear
planar
spherical• Diffusion Tensor: 3x3 semi-positive definite symmetric matrix
• Ellipsoids represent variety of possible diffusion patterns
• Ellipsoid is image of unit sphere under diffusion tensor matrix
Diffusion MRI of brain• Anisotropy high along white matter fiber tracts
2.1 -0.1 -0.2
-0.1 2.0 -0.0
-0.2 -0.0 2.1
3.7 0.3 -0.8
0.3 0.6 -0.1
-0.8 -0.1 0.8
1.7 0.1 -0.1
0.1 2.3 -0.3
-0.1 -0.3 0.3
Dxx
Dxy
Dxz
Dxy Dxz
DyzDyy
DzzDyz
Inspecting DWI slices
unu make -i 02728/003/I.050 -t ushort \
-e raw -en big -s 256 256 -bs -1 \
| unu quantize -b 8 -o slice.png
Inspecting multiple DWI slicesunu make -i 003/I.0{5,6,7}? -t ushort \ -e raw -en big -s 256 256 20 -bs -1 \ | unu axsplit -a 2 -s 5 4 \ | unu permute -p 0 2 1 3 \ | unu axmerge -a 0 | unu axmerge -a 1 \ | unu quantize -b 8 -o mosaic.png
Making DWI volumes
foreach IMG ( 003 004 005 006 007 \ 008 009 010 011 012 013 \ 014 015 016 017 018 019 \ 020 021 022 )
unu make -i 02728/$IMG/I.* -bs -1 \ -t ushort -e raw -en big \ -s 256 256 136 -sp 0.39 0.39 1.00 \ -o dwi/$IMG.nrrd
unu resample -I dwi/$IMG.nrrd \ -s 100 100 = -k hann:8 \ -o dwi/$IMG-small.nrrdend
Meddling with B-matrix list
Brr Brp Brs 0 3 5 0 1 2
. Bpp Bps 1 4 3 4
. . Bss 2 5
105.92862 0.00003 33746.47739 0.04822 -1.07717 -1484.482576868.88229 1.60591 31849.32096 -104.73389 226.02398 -14714.5424116140.57145 21695.45998 1893.56463 -18690.76297 -6346.26912 5492.96913...
unu shuffle -i B-orig.txt \ -a 0 -p 0 3 5 1 4 2 -o B.txt
Estimating diffusion tensors
tend estim -i dwi/0??.nrrd -knownB0 false \ -B B.txt -t 48 -o ten.nrrd
confidence
Dxx Dxy Dxz
Dyz
Dzz
Dyy
Inspecting diffusion tensors
R=| v1.x |G=| v1.y |B=| v1.z |
v1
xy
zforeach SLC ( 30 40 50 60 ) tend slice -i ten.nrrd -a 2 -p $SLC \ | tend evecrgb -c 0 -a fa \ | unu axdelete -a -1 \ | unu quantize -b 8 \ -min 0 -max 1 -o $SLC-rgb.pngend
1 = 2 = 3
1 + 2 + 3 = T
Space of tensor shape
1
2
3
1
2
3
v1
v2
v3
linear planar
spherical1 >= 2 >= 3
Glyph shapes
1 glyph = 1 mm3
Backdrop: FA
Color: RGB(v1)
http://teem.sourceforge.net