Slicer  5.2
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 <mutex>
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
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 ) override;
65 
66  // /Set the 3x3 transform matrix
67  virtual void SetMatrix3x3( MatrixTransformType & matrix );
68 
69  // /Get the 3x3 transform matrix
71 
72  // /Evaluate the transformed tensor
74 
75  TensorDataType EvaluateTransformedTensor( TensorDataType & tensor, PointType & outputPosition ) override; // dummy
76  // output
77  // position;
78  // to be
79  // compatible
80  // with
81  // non-rigid
82  // transforms
83 
84  typename Transform<double, 3, 3>::Pointer GetTransform() override;
85 
86 protected:
87  void ComputeOffset();
88 
89  virtual void PreCompute() = 0;
90 
95  unsigned long m_LatestTime;
99  std::mutex 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.
void SetTranslation(VectorType translation)
virtual TensorDataType EvaluateTransformedTensor(TensorDataType &tensor)
Superclass::InternalMatrixTransformType InternalMatrixTransformType
PointType EvaluateTensorPosition(const PointType &point) override
Transform< double, 3, 3 >::Pointer GetTransform() override
Matrix< TransformType, 3, 3 > MatrixTransformType
DiffusionTensor3D< DataType > TensorDataType