280 likes | 297 Views
Representing and Processing Scientific Data with Teem: Applications to CT and DT-MRI Gordon Kindlmann. Scientific Computing and Imaging Institute, School of Computing, University of Utah. Outline . The software: teem includes nrrd and ten Application 1: Inspecting CT data
E N D
Representing and Processing Scientific Data with Teem: Applications to CT and DT-MRI Gordon Kindlmann Scientific Computing and Imaging Institute, School of Computing, University of Utah
Outline • The software: teem includes nrrd and ten • Application 1: Inspecting CT data • Application 2: Estimating and inspecting diffusion tensors
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
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 Teem libraries
also BioPSE module name prefix Two libraries, two utilities Underlying library nrrd ten Command-line utility unu tend
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
dimension generality 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
Blank line Data Getting data in: NRRD file format • NRRD0001 • content: a dozen images • type: float • dimension: 4 • sizes: 3 640 480 12 • encoding: 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 header for array description
Getting data in: “unu make” • unu make -i <data file> \ -s 3 640 480 12 -t float \ -e raw -en big -o images.nrrd • NRRD0001 • type: float • dimension: 4 • sizes: 3 640 480 12 • encoding: 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 ordering N-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) 2-D color image 3-D array color:X:Y Each coordinate is an axis Axes ordered: fast to slow; contiguous to distant Fast: color Medium: X Slow: Y color color X linear ordering in memory Y
Outline • The software: teem includes nrrd and ten • Application 1: Inspecting CT data • Application 2: Estimating and inspecting diffusion tensors
Unu application: Visible human CT • 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 *.Z • unu 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.nhdr • rm -rf *.fre (link)
Outline • The software: teem includes nrrd and ten • Application 1: Inspecting CT data • Application 2: Estimating and inspecting diffusion tensors
Anisotropy: diffusion rate depends on direction isotropic anisotropic Diffusion in Biological Tissue • Motion of water through tissue • Faster in some directions than others Kleenex newspaper
Diffusion in 3D • Ellipsoids represent variety of possible diffusion patterns linear spherical • Diffusion Tensor: 3x3 semi-positive definite symmetric matrix planar • Ellipsoid is image of unit sphere under diffusion tensor matrix isotropic anisotropic
2.1-0.1-0.2 -0.12.0-0.0 -0.2-0.02.1 3.70.3-0.8 0.30.6-0.1 -0.8-0.10.8 1.70.1-0.1 0.12.3-0.3 -0.1-0.30.3 Diffusion MRI of brain • Anisotropy high along white matter fiber tracts Dxx Dxy Dxz Dxy Dyy Dyz Dxz Dyz Dzz
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 slices • unu 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.nrrd • end
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.48257 6868.88229 1.60591 31849.32096 -104.73389 226.02398 -14714.54241 16140.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 Dxx Dxy Dxz Dyy Dyz confidence Dzz
Inspecting diffusion tensors z v1 foreach 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.png end x y R=| v1.x | G=| v1.y | B=| v1.z |
l3 l1 + l2 + l3 = T l1 = l2 = l3 l3 l2 l1 l2 l1 l1 >= l2 >= l3 spherical planar linear Space of tensor shape v3 v1 v2
Backdrop: FA Color: RGB(v1) 1 glyph = 1 mm3