Slicer 5.9
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
22namespace itk
23{
24
30
31template <class TData>
33 public DiffusionTensor3DTransform<TData>
34{
35public:
36 typedef TData DataType;
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< TransformType, 3, 3 > InternalMatrixTransformType
MatrixExtended< DataType, 3, 3 > InternalMatrixDataType
Matrix< TransformType, 3, 3 > MatrixTransformType
DiffusionTensor3D< DataType > TensorDataType
DiffusionTensor3DExtended< DataType > InternalTensorDataType
Simplified inverse ITK transforms.