KWStyle - itkDiffusionTensor3D.h
 
Matrix View
Description

1 /*=========================================================================
2
3   Program:   Insight Segmentation & Registration Toolkit
4   Module:    $RCSfile: itkDiffusionTensor3D.h.html,v $
5   Language:  C++
6   Date:      $Date: 2006/01/17 19:15:34 $
7   Version:   $Revision: 1.4 $
8
9   Copyright (c) Insight Software Consortium. All rights reserved.
10   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11
12      This software is distributed WITHOUT ANY WARRANTY; without even 
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14      PURPOSE.  See the above copyright notices for more information.
15
16 =========================================================================*/
17 #ifndef __itkDiffusionTensor3D_h
18 #define __itkDiffusionTensor3D_h
19
20 // Undefine an eventual DiffusionTensor3D macro
21 #ifdef DiffusionTensor3D
22 #undef DiffusionTensor3D
23 #endif
24
25 #include <itkSymmetricSecondRankTensor.h>
26
27
28 namespace itk
29 {
30
31 /** \class DiffusionTensor3D
32  * \brief Represent a diffusion tensor as used in DTI images.
33  *
34  * This class implements a 3D symmetric tensor as it is used for representing
35  * diffusion of water molecules in Diffusion Tensor Images.
36  *
37  * This class derive from the SymmetricSecondRankTensor and from it inherit
38  * most of the Tensor related behavior. At this level we add the methods that
39  * are specific to 3D and that are closely related to the concept of diffusion.
40  *
41  *
42 LEN  * \author Jeffrey Duda from School of Engineering at University of Pennsylvania 
43  * \author Torsten Rohlfing from SRI International Neuroscience Program.
44  *
45  * This class was mostly based on files that Jeffrey Duda, Torsten Rohlfing and
46  * Martin Styner contributed to the ITK users list during a discussion on
47  * support for DiffusionTensorImages. A discussion on the design of this class
48  * can be found in the WIKI pages of NAMIC:
49  *
50 LEN  * http://www.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:ITK-DiffusionTensorPixelType
51  * 
52  * \note This work is part of the National Alliance for Medical Image
53  * Computing (NAMIC), funded by the National Institutes of Health
54  * through the NIH Roadmap for Medical Research, Grant U54 EB005149.
55  * Information on the National Centers for Biomedical Computing
56  * can be obtained from http://nihroadmap.nih.gov/bioinformatics. 
57  *
58  *
59 LEN  * \note Contributions by Torsten Rohlfing were funded by the following NIH grants
60  *
61  * Alcohol, HIV and the Brain, 
62  * NIAAA AA12999, PI: A. Pfefferbaum
63  *
64  * Normal Aging of Brain Structure and Function
65  * NIA AG 17919, PI: E.V. Sullivan.
66  * 
67  *
68  * \par References
69  * E. R. Melhem, S. Mori, G. Mukundan, M. A. Kraut, M. G. Pomper, and 
70  * P. C. M. van Zijl, "Diffusion tensor MR imaging of the brain and white 
71  * matter tractography," Am. J. Roentgenol., vol. 178, pp. 3-16, 2002.
72 IND *
73  * \sa SymmetricSecondRankTensor
74  *
75  * \ingroup ImageObjects   TensorObjects    Geometry
76  */
77
78 template < typename TComponent >
79 class DiffusionTensor3D: public SymmetricSecondRankTensor<TComponent,3>
80 {
81 public:
82   /** Standard class typedefs. */
83   typedef DiffusionTensor3D  Self;
84 TDA   typedef SymmetricSecondRankTensor<TComponent, 3> Superclass;
85   
86   /** Propagating some typedef from the superclass */
87   typedef typename Superclass::ValueType             ValueType;
88   typedef typename Superclass::ComponentType         ComponentType;
89 LEN #if defined(__GNUC__) && !defined(__INTEL_COMPILER) && (__GNUC__ == 3 && __GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ == 3)
90   typedef ComponentType ComponentArrayType[6];
91 IND #else
92   typedef typename Superclass::ComponentArrayType    ComponentArrayType;
93 #endif
94   typedef typename Superclass::AccumulateValueType   AccumulateValueType;
95   typedef typename Superclass::RealValueType         RealValueType;
96
97   typedef typename Superclass::EigenValuesArrayType    EigenValuesArrayType;
98   typedef typename Superclass::EigenVectorsMatrixType  EigenVectorsMatrixType;
99
100   /** Default Constructor. */
101   DiffusionTensor3D();
102
103   /** Constructor with initialization. */
104   DiffusionTensor3D(const Self& r);
105   DiffusionTensor3D(const Superclass& r);
106   DiffusionTensor3D(const ComponentType& r);
107   DiffusionTensor3D(const ComponentArrayType r);
108
109   /** Pass-through assignment operator for the Array base class. */
110   Self& operator= (const Self& r);
111   Self& operator= (const Superclass & r);
112   Self& operator= (const ComponentType& r);
113   Self& operator= (const ComponentArrayType r);
114
115   /** Get Trace value */
116   AccumulateValueType GetTrace() const;
117
118   /** Get the value of Fractional Anisotropy from the Tensor. */
119   RealValueType GetFractionalAnisotropy() const;
120
121   /** Get the value of Relative Anisotropy from the Tensor. */
122   RealValueType GetRelativeAnisotropy() const;
123
124   /** Get the Inner Scalar Product from the Tensor. */
125   RealValueType GetInnerScalarProduct() const;
126
127 };
128
129 // end namespace itk
130
131 #ifndef ITK_MANUAL_INSTANTIATION
132 #include "itkDiffusionTensor3D.txx"
133 #endif
134
135 #endif
136

Generated by KWStyle 1.0b on Tuesday January,17 at 02:14:06PM
© Kitware Inc.