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
itkDiffusionTensor3DMatrix3x3Transform.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 itkDiffusionTensor3DMatrix3x3Transform_h
15 #define itkDiffusionTensor3DMatrix3x3Transform_h
16 
18 #include <itkVector.h>
19 #include <itkMatrixOffsetTransformBase.h>
20 #include <itkMutexLock.h>
21 
22 namespace itk
23 {
24 
31 template <class TData>
33  public DiffusionTensor3DTransform<TData>
34 {
35 public:
36  typedef TData DataType;
42  typedef typename Superclass::PointType PointType;
47  typedef Vector<TransformType, 3> VectorType;
48  typedef SmartPointer<Self> Pointer;
49  typedef SmartPointer<const Self> ConstPointer;
50 
53 
54  // /Set the translation vector
55  void SetTranslation( VectorType translation );
56 
57  // /Get the translation vector
58  VectorType GetTranslation();
59 
60  // /Set the center of the transformation
61  void SetCenter( PointType center );
62 
63  // /Evaluate the position of the transformed tensor in the output image
64  PointType EvaluateTensorPosition( const PointType & point ) ITK_OVERRIDE;
65 
66  // /Set the 3x3 transform matrix
67  virtual void SetMatrix3x3( MatrixTransformType & matrix );
68 
69  // /Get the 3x3 transform matrix
70  virtual InternalMatrixTransformType GetMatrix3x3();
71 
72  // /Evaluate the transformed tensor
73  virtual TensorDataType EvaluateTransformedTensor( TensorDataType & tensor );
74 
75  virtual TensorDataType EvaluateTransformedTensor( TensorDataType & tensor, PointType & outputPosition ) ITK_OVERRIDE; // dummy
76  // output
77  // position;
78  // to be
79  // compatible
80  // with
81  // non-rigid
82  // transforms
83 
84  virtual typename Transform<double, 3, 3>::Pointer GetTransform() ITK_OVERRIDE;
85 
86 protected:
87  void ComputeOffset();
88 
89  virtual void PreCompute() = 0;
90 
92  InternalMatrixTransformType m_TransformMatrix;
93  InternalMatrixTransformType m_Transform;
94  InternalMatrixTransformType m_TransformT;
95  unsigned long m_LatestTime;
96  VectorType m_Translation;
97  VectorType m_Offset;
98  PointType m_Center;
99  MutexLock::Pointer m_Lock;
100 };
101 
102 } // end namespace itk
103 
104 #ifndef ITK_MANUAL_INSTANTIATION
105 #include "itkDiffusionTensor3DMatrix3x3Transform.txx"
106 #endif
107 
108 #endif
virtual InternalMatrixTransformType GetMatrix3x3()
virtual void SetMatrix3x3(MatrixTransformType &matrix)
itkTypeMacro(DiffusionTensor3DMatrix3x3Transform, DiffusionTensor3DTransform)
Simplified inverse ITK transforms.
PointType EvaluateTensorPosition(const PointType &point) ITK_OVERRIDE
void SetTranslation(VectorType translation)
virtual TensorDataType EvaluateTransformedTensor(TensorDataType &tensor)
Superclass::InternalMatrixTransformType InternalMatrixTransformType
virtual Transform< double, 3, 3 >::Pointer GetTransform() ITK_OVERRIDE
Matrix< TransformType, 3, 3 > MatrixTransformType
DiffusionTensor3D< DataType > TensorDataType