Slicer  4.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
itkDiffusionTensor3DTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Diffusion Applications
4  Module: $HeadURL$
5  Language: C++
6  Date: $Date$
7  Version: $Revision$
8 
9  Copyright (c) Brigham and Women's Hospital (BWH) All Rights Reserved.
10 
11  See License.txt or http://www.slicer.org/copyright/copyright.txt for details.
12 
13 ==========================================================================*/
14 #ifndef itkDiffusionTensor3DTransform_h
15 #define itkDiffusionTensor3DTransform_h
16 
17 #include <itkObject.h>
19 #include <itkPoint.h>
20 #include "itkMatrixExtended.h"
21 #include <itkNumericTraits.h>
22 #include <itkTransform.h>
23 
24 namespace itk
25 {
30 template <class TData>
31 class DiffusionTensor3DTransform : public Object
32 {
33 public:
34  typedef TData DataType;
35  typedef double TransformType;
37  typedef Point<TransformType, 3> PointType;
38  typedef DiffusionTensor3D<DataType> TensorDataType;
40  typedef Matrix<TransformType, 3, 3> MatrixTransformType;
41  typedef Matrix<DataType, 3, 3> MatrixDataType;
44  typedef SmartPointer<Self> Pointer;
45  typedef SmartPointer<const Self> ConstPointer;
46 
49 
50  // /Evaluate the position of the transformed tensor
51  virtual PointType EvaluateTensorPosition( const PointType & point ) = 0;
52 
53  // /Evaluate the transformed tensor
54  virtual TensorDataType EvaluateTransformedTensor( TensorDataType & tensor, PointType & outputPosition) = 0;
55 
56  // /Set the measurement frame of the tensor
57  itkSetMacro( MeasurementFrame, MatrixTransformType );
58  virtual typename Transform<TransformType, 3, 3>::Pointer GetTransform() = 0;
59 
60 protected:
62  InternalMatrixTransformType m_MeasurementFrame;
63 };
64 
65 } // end namespace itk
66 
67 #ifndef ITK_MANUAL_INSTANTIATION
68 #include "itkDiffusionTensor3DTransform.txx"
69 #endif
70 
71 #endif
MatrixExtended< TransformType, 3, 3 > InternalMatrixTransformType
Simplified inverse ITK transforms.
virtual TensorDataType EvaluateTransformedTensor(TensorDataType &tensor, PointType &outputPosition)=0
MatrixExtended< DataType, 3, 3 > InternalMatrixDataType
virtual PointType EvaluateTensorPosition(const PointType &point)=0
virtual Transform< TransformType, 3, 3 >::Pointer GetTransform()=0
InternalMatrixTransformType m_MeasurementFrame
itkSetMacro(MeasurementFrame, MatrixTransformType)
Matrix< TransformType, 3, 3 > MatrixTransformType
DiffusionTensor3D< DataType > TensorDataType
DiffusionTensor3DExtended< DataType > InternalTensorDataType
itkTypeMacro(DiffusionTensor3DTransform, Object)