go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxEulerStackTransform.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright UMC Utrecht and contributors
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef elxEulerStackTransform_h
19#define elxEulerStackTransform_h
20
21#include "elxIncludes.h"
25#include "itkEulerTransform.h"
26
27namespace elastix
28{
29
83template <class TElastix>
84class ITK_TEMPLATE_EXPORT EulerStackTransform
85 : public itk::AdvancedCombinationTransform<typename elx::TransformBase<TElastix>::CoordRepType,
86 elx::TransformBase<TElastix>::FixedImageDimension>
87 , public elx::TransformBase<TElastix>
88{
89public:
91
97 using Pointer = itk::SmartPointer<Self>;
98 using ConstPointer = itk::SmartPointer<const Self>;
99
101 itkNewMacro(Self);
102
105
110 elxClassNameMacro("EulerStackTransform");
111
113 itkStaticConstMacro(SpaceDimension, unsigned int, Superclass2::FixedImageDimension);
114 itkStaticConstMacro(ReducedSpaceDimension, unsigned int, Superclass2::FixedImageDimension - 1);
115
122 using InputPointType = typename EulerTransformType::InputPointType;
123
128
129 using ReducedDimensionOutputVectorType = typename ReducedDimensionEulerTransformType::OutputVectorType;
130 using ReducedDimensionInputPointType = typename ReducedDimensionEulerTransformType::InputPointType;
131
133 using typename Superclass1::ParametersType;
134 using typename Superclass1::NumberOfParametersType;
135
137 using typename Superclass2::ElastixType;
138 using typename Superclass2::ParameterMapType;
139 using typename Superclass2::RegistrationType;
140 using typename Superclass2::CoordRepType;
141 using typename Superclass2::FixedImageType;
142 using typename Superclass2::MovingImageType;
145
147 using PixelType = float;
148 using ReducedDimensionImageType = itk::Image<PixelType, Self::ReducedSpaceDimension>;
149 using ReducedDimensionRegionType = itk::ImageRegion<Self::ReducedSpaceDimension>;
150 using ReducedDimensionPointType = typename ReducedDimensionImageType::PointType;
151 using ReducedDimensionSizeType = typename ReducedDimensionImageType::SizeType;
152 using ReducedDimensionIndexType = typename ReducedDimensionRegionType::IndexType;
153 using ReducedDimensionSpacingType = typename ReducedDimensionImageType::SpacingType;
154 using ReducedDimensionDirectionType = typename ReducedDimensionImageType::DirectionType;
155 using ReducedDimensionOriginType = typename ReducedDimensionImageType::PointType;
156
158 using typename Superclass2::ScalesType;
159
161 using IndexType = typename FixedImageType::IndexType;
162 using SizeType = typename FixedImageType::SizeType;
163 using PointType = typename FixedImageType::PointType;
164 using SpacingType = typename FixedImageType::SpacingType;
165 using RegionType = typename FixedImageType::RegionType;
166 using DirectionType = typename FixedImageType::DirectionType;
167 using ReducedDimensionContinuousIndexType = typename itk::ContinuousIndex<CoordRepType, ReducedSpaceDimension>;
168 using ContinuousIndexType = typename itk::ContinuousIndex<CoordRepType, SpaceDimension>;
169
172 int
173 BeforeAll() override;
174
180 void
182
190 virtual void
192
194 void
195 ReadFromFile() override;
196
198 virtual void
200
201protected:
203 EulerStackTransform() { this->Superclass1::SetCurrentTransform(m_StackTransform); }
204
206 ~EulerStackTransform() override = default;
207
213 virtual bool
215
216private:
218
220 void
222
226
230
232 const typename StackTransformType::Pointer m_StackTransform{ StackTransformType::New() };
233
236
239 double m_StackOrigin, m_StackSpacing;
240
242 unsigned int
244};
245
246
247} // end namespace elastix
248
249#ifndef ITK_MANUAL_INSTANTIATION
250# include "elxEulerStackTransform.hxx"
251#endif
252
253#endif // end #ifndef elxEulerStackTransform_h
A stack transform based on the itk EulerTransforms.
typename ReducedDimensionImageType::SpacingType ReducedDimensionSpacingType
virtual bool ReadCenterOfRotationPoint(ReducedDimensionInputPointType &rotationPoint) const
ParameterMapType CreateDerivedTransformParameterMap() const override
typename FixedImageType::SpacingType SpacingType
typename ReducedDimensionImageType::PointType ReducedDimensionPointType
itk::Image< PixelType, Self::ReducedSpaceDimension > ReducedDimensionImageType
typename FixedImageType::IndexType IndexType
typename ReducedDimensionImageType::SizeType ReducedDimensionSizeType
typename Superclass2::CombinationTransformType CombinationTransformType
typename FixedImageType::RegionType RegionType
typename FixedImageType::SizeType SizeType
typename Superclass2::ITKBaseType ITKBaseType
typename EulerTransformType::InputPointType InputPointType
typename EulerTransformType::Pointer EulerTransformPointer
~EulerStackTransform() override=default
typename FixedImageType::DirectionType DirectionType
virtual void InitialTransformCenter(ReducedDimensionInputPointType &point)
typename FixedImageType::PointType PointType
typename TElastix::ParameterMapType ParameterMapType
typename ReducedDimensionEulerTransformType::Pointer ReducedDimensionEulerTransformPointer
itk::SmartPointer< Self > Pointer
typename ReducedDimensionImageType::DirectionType ReducedDimensionDirectionType
void BeforeRegistration() override
elxClassNameMacro("EulerStackTransform")
void ReadFromFile() override
typename ReducedDimensionImageType::PointType ReducedDimensionOriginType
typename ReducedDimensionEulerTransformType::OutputVectorType ReducedDimensionOutputVectorType
ReducedDimensionEulerTransformPointer m_DummySubTransform
typename ReducedDimensionEulerTransformType::InputPointType ReducedDimensionInputPointType
typename itk::ContinuousIndex< CoordRepType, ReducedSpaceDimension > ReducedDimensionContinuousIndexType
itk::ImageRegion< Self::ReducedSpaceDimension > ReducedDimensionRegionType
typename itk::ContinuousIndex< CoordRepType, SpaceDimension > ContinuousIndexType
ITK_DISALLOW_COPY_AND_MOVE(EulerStackTransform)
itkStaticConstMacro(SpaceDimension, unsigned int, Superclass2::FixedImageDimension)
unsigned int InitializeEulerTransform()
typename ReducedDimensionRegionType::IndexType ReducedDimensionIndexType
itk::SmartPointer< const Self > ConstPointer
itkStaticConstMacro(ReducedSpaceDimension, unsigned int, Superclass2::FixedImageDimension - 1)
This class is the elastix base class for all Transforms.
typename TElastix::FixedImageType FixedImageType
typename TElastix::ParameterMapType ParameterMapType
typename TElastix::MovingImageType MovingImageType
typename ElastixType::RegistrationBaseType RegistrationType
itk::Optimizer::ScalesType ScalesType
This class combines two transforms: an 'initial transform' with a 'current transform'.
itk::SmartPointer< EulerStackTransform > Pointer
This class combines the Euler2DTransform with the Euler3DTransform.


Generated on 2024-07-17 for elastix by doxygen 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) elastix logo