Slicer 5.4
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
31template <class TData>
33 public DiffusionTensor3DTransform<TData>
34{
35public:
36 typedef TData DataType;
38 typedef DiffusionTensor3DTransform<DataType> Superclass;
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
86protected:
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
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< DataType, 3, 3 > InternalMatrixDataType
Matrix< TransformType, 3, 3 > MatrixTransformType
DiffusionTensor3D< DataType > TensorDataType
DiffusionTensor3DExtended< DataType > InternalTensorDataType
Simplified inverse ITK transforms.