Slicer  4.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
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