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
80template <class TElastix>
81class ITK_TEMPLATE_EXPORT EulerStackTransform
82 : public itk::AdvancedCombinationTransform<typename elx::TransformBase<TElastix>::CoordRepType,
83 elx::TransformBase<TElastix>::FixedImageDimension>
84 , public elx::TransformBase<TElastix>
85{
86public:
88
94 using Pointer = itk::SmartPointer<Self>;
95 using ConstPointer = itk::SmartPointer<const Self>;
96
98 itkNewMacro(Self);
99
102
107 elxClassNameMacro("EulerStackTransform");
108
110 itkStaticConstMacro(SpaceDimension, unsigned int, Superclass2::FixedImageDimension);
111 itkStaticConstMacro(ReducedSpaceDimension, unsigned int, Superclass2::FixedImageDimension - 1);
112
119 using InputPointType = typename EulerTransformType::InputPointType;
120
125
126 using ReducedDimensionOutputVectorType = typename ReducedDimensionEulerTransformType::OutputVectorType;
127 using ReducedDimensionInputPointType = typename ReducedDimensionEulerTransformType::InputPointType;
128
130 using typename Superclass1::ParametersType;
131 using typename Superclass1::NumberOfParametersType;
132
134 using typename Superclass2::ElastixType;
135 using typename Superclass2::ParameterMapType;
136 using typename Superclass2::RegistrationType;
137 using typename Superclass2::CoordRepType;
138 using typename Superclass2::FixedImageType;
139 using typename Superclass2::MovingImageType;
142
144 using PixelType = float;
145 using ReducedDimensionImageType = itk::Image<PixelType, Self::ReducedSpaceDimension>;
146 using ReducedDimensionRegionType = itk::ImageRegion<Self::ReducedSpaceDimension>;
147 using ReducedDimensionPointType = typename ReducedDimensionImageType::PointType;
148 using ReducedDimensionSizeType = typename ReducedDimensionImageType::SizeType;
149 using ReducedDimensionIndexType = typename ReducedDimensionRegionType::IndexType;
150 using ReducedDimensionSpacingType = typename ReducedDimensionImageType::SpacingType;
151 using ReducedDimensionDirectionType = typename ReducedDimensionImageType::DirectionType;
152 using ReducedDimensionOriginType = typename ReducedDimensionImageType::PointType;
153
155 using typename Superclass2::ScalesType;
156
158 using IndexType = typename FixedImageType::IndexType;
159 using SizeType = typename FixedImageType::SizeType;
160 using PointType = typename FixedImageType::PointType;
161 using SpacingType = typename FixedImageType::SpacingType;
162 using RegionType = typename FixedImageType::RegionType;
163 using DirectionType = typename FixedImageType::DirectionType;
164 using ReducedDimensionContinuousIndexType = typename itk::ContinuousIndex<CoordRepType, ReducedSpaceDimension>;
165 using ContinuousIndexType = typename itk::ContinuousIndex<CoordRepType, SpaceDimension>;
166
169 int
170 BeforeAll() override;
171
177 void
179
187 virtual void
189
191 void
192 ReadFromFile() override;
193
195 virtual void
197
198protected:
200 EulerStackTransform() { this->Superclass1::SetCurrentTransform(m_StackTransform); }
201
203 ~EulerStackTransform() override = default;
204
210 virtual bool
212
213private:
215
217 void
219
223
227
229 const typename StackTransformType::Pointer m_StackTransform{ StackTransformType::New() };
230
233
236 double m_StackOrigin, m_StackSpacing;
237
239 unsigned int
241};
242
243
244} // end namespace elastix
245
246#ifndef ITK_MANUAL_INSTANTIATION
247# include "elxEulerStackTransform.hxx"
248#endif
249
250#endif // end #ifndef elxEulerStackTransform_h
A stack transform based on the itk EulerTransforms.
typename ReducedDimensionImageType::SpacingType ReducedDimensionSpacingType
virtual bool ReadCenterOfRotationPoint(ReducedDimensionInputPointType &rotationPoint) const
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
ParameterMapType CreateDerivedTransformParametersMap() const 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 OptimizerType::ScalesType ScalesType
typename TElastix::ParameterMapType ParameterMapType
typename TElastix::MovingImageType MovingImageType
typename ElastixType::RegistrationBaseType RegistrationType
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 2023-01-13 for elastix by doxygen 1.9.6 elastix logo