Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
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
22namespace itk
23{
24
30
31template <class TData>
33{
34public:
35 typedef TData DataType;
46 typedef Vector<TransformType, 3> VectorType;
47 typedef SmartPointer<Self> Pointer;
48 typedef SmartPointer<const Self> ConstPointer;
49
52
53 // /Set the translation vector
54 void SetTranslation(VectorType translation);
55
56 // /Get the translation vector
58
59 // /Set the center of the transformation
60 void SetCenter(PointType center);
61
62 // /Evaluate the position of the transformed tensor in the output image
64
65 // /Set the 3x3 transform matrix
66 virtual void SetMatrix3x3(MatrixTransformType& matrix);
67
68 // /Get the 3x3 transform matrix
70
71 // /Evaluate the transformed tensor
73
74 TensorDataType EvaluateTransformedTensor(TensorDataType& tensor, PointType& outputPosition) override; // dummy
75 // output
76 // position;
77 // to be
78 // compatible
79 // with
80 // non-rigid
81 // transforms
82
83 typename Transform<double, 3, 3>::Pointer GetTransform() override;
84
85protected:
87
88 virtual void PreCompute() = 0;
89
94 unsigned long m_LatestTime;
98 std::mutex m_Lock;
99};
100
101} // end namespace itk
102
103#ifndef ITK_MANUAL_INSTANTIATION
104# include "itkDiffusionTensor3DMatrix3x3Transform.txx"
105#endif
106
107#endif
itkTypeMacro(DiffusionTensor3DMatrix3x3Transform, DiffusionTensor3DTransform)
void SetTranslation(VectorType translation)
Transform< double, 3, 3 >::Pointer GetTransform() override
virtual void SetMatrix3x3(MatrixTransformType &matrix)
virtual InternalMatrixTransformType GetMatrix3x3()
TensorDataType EvaluateTransformedTensor(TensorDataType &tensor, PointType &outputPosition) override
Superclass::InternalMatrixTransformType InternalMatrixTransformType
virtual TensorDataType EvaluateTransformedTensor(TensorDataType &tensor)
PointType EvaluateTensorPosition(const PointType &point) override
MatrixExtended< TransformType, 3, 3 > InternalMatrixTransformType
MatrixExtended< DataType, 3, 3 > InternalMatrixDataType
Matrix< TransformType, 3, 3 > MatrixTransformType
DiffusionTensor3D< DataType > TensorDataType
DiffusionTensor3DExtended< DataType > InternalTensorDataType
Simplified inverse ITK transforms.