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
vtkITKTransformInverse.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: $RCSfile: vtkITKTransformInverse.h,v $
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or https://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
15
26
27#ifndef __vtkITKTransformInverse_h
28#define __vtkITKTransformInverse_h
29
30namespace itk
31{
32
33 //----------------------------------------------------------------------------
34 template <typename TScalar = double, unsigned int NDimensions = 3, unsigned int VSplineOrder = 3>
36 public BSplineTransform<TScalar, NDimensions, VSplineOrder>
37 {
38 public:
41 typedef BSplineTransform<TScalar,NDimensions,VSplineOrder> Superclass;
42 typedef SmartPointer<Self> Pointer;
43 typedef SmartPointer<const Self> ConstPointer;
44
47
50
53 using Superclass::TransformPoint;
54 typename Superclass::OutputPointType TransformPoint(
55 const typename Superclass::InputPointType&) const override
56 {
57 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
58 }
60 const typename Superclass::InputPointType &,
61 typename Superclass::JacobianType &) const override
62 {
63 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
64 }
65 // Deprecated in ITKv5. It should be removed when ITK_LEGACY_REMOVE is set to ON.
67 const typename Superclass::InputPointType &,
68 typename Superclass::JacobianType &) const override
69 {
70 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
71 }
73 const typename Superclass::InputPointType &,
74 typename Superclass::JacobianPositionType &) const override
75 {
76 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
77 }
78 // Deprecated in ITKv5. It should be removed when ITK_LEGACY_REMOVE is set to ON.
80 const typename Superclass::InputPointType &,
81 typename Superclass::JacobianType &) const override
82 {
83 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
84 }
86 const typename Superclass::InputPointType &,
87 typename Superclass::InverseJacobianPositionType &) const override
88 {
89 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
90 }
92 const typename Superclass::InputPointType &,
93 typename Superclass::WeightsType &,
94 typename Superclass::ParameterIndexArrayType &) const
95 {
96 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
97 }
98 };
99
100 //----------------------------------------------------------------------------
101 template <typename TScalar = double, unsigned int NDimensions = 3, unsigned int VSplineOrder = 3>
103 public BSplineDeformableTransform<TScalar, NDimensions, VSplineOrder>
104 {
105 public:
108 typedef BSplineDeformableTransform<TScalar,NDimensions,VSplineOrder> Superclass;
109 typedef SmartPointer<Self> Pointer;
110 typedef SmartPointer<const Self> ConstPointer;
111
113 itkTypeMacro( InverseBSplineDeformableTransform, BSplineDeformableTransform );
114
117
120 using Superclass::TransformPoint;
121 typename Superclass::OutputPointType TransformPoint(
122 const typename Superclass::InputPointType&) const override
123 {
124 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
125 }
127 const typename Superclass::InputPointType &,
128 typename Superclass::JacobianType &) const override
129 {
130 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
131 }
132 // Deprecated in ITKv5. It should be removed when ITK_LEGACY_REMOVE is set to ON.
134 const typename Superclass::InputPointType &,
135 typename Superclass::JacobianType &) const override
136 {
137 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
138 }
140 const typename Superclass::InputPointType &,
141 typename Superclass::JacobianPositionType &) const override
142 {
143 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
144 }
146 const typename Superclass::InputPointType &,
147 typename Superclass::JacobianType &) const override
148 {
149 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
150 }
152 const typename Superclass::InputPointType &,
153 typename Superclass::InverseJacobianPositionType &) const override
154 {
155 itkExceptionMacro( "Only storage methods are implemented for InverseBSplineTransform" );
156 }
157
158 };
159
160 //----------------------------------------------------------------------------
161 template <class TScalar, unsigned int NDimensions>
163 public DisplacementFieldTransform<TScalar, NDimensions>
164 {
165 public:
168 typedef DisplacementFieldTransform<TScalar, NDimensions> Superclass;
169 typedef SmartPointer<Self> Pointer;
170 typedef SmartPointer<const Self> ConstPointer;
171
173 itkTypeMacro( InverseDisplacementFieldTransform, DisplacementFieldTransform );
174
177
180 typename Superclass::OutputPointType TransformPoint(
181 const typename Superclass::InputPointType&) const override
182 {
183 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
184 }
186 const typename Superclass::InputPointType &,
187 typename Superclass::JacobianType &) const override
188 {
189 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
190 }
192 const typename Superclass::IndexType &,
193 typename Superclass::JacobianType &) const override
194 {
195 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
196 }
197 // Deprecated in ITKv5. It should be removed when ITK_LEGACY_REMOVE is set to ON.
199 const typename Superclass::InputPointType &,
200 typename Superclass::JacobianType &) const override
201 {
202 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
203 }
205 const typename Superclass::InputPointType &,
206 typename Superclass::JacobianPositionType &) const override
207 {
208 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
209 }
211 const typename Superclass::IndexType &,
212 typename Superclass::JacobianPositionType &) const override
213 {
214 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
215 }
217 const typename Superclass::InputPointType &,
218 typename Superclass::JacobianType &) const override
219 {
220 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
221 }
223 const typename Superclass::InputPointType &,
224 typename Superclass::InverseJacobianPositionType &) const override
225 {
226 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
227 }
229 const typename Superclass::InputPointType &,
230 typename Superclass::JacobianPositionType &,
231 bool useSVD = false ) const override
232 {
233 (void)useSVD; // unused
234 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
235 }
237 const typename Superclass::IndexType &,
238 typename Superclass::JacobianPositionType &,
239 bool useSVD = false ) const override
240 {
241 (void)useSVD; // unused
242 itkExceptionMacro( "Only storage methods are implemented for InverseDisplacementFieldTransform" );
243 }
244 };
245
246 //----------------------------------------------------------------------------
247 template <class TScalar, unsigned int NDimensions>
249 public ThinPlateSplineKernelTransform<TScalar, NDimensions>
250 {
251 public:
254 typedef ThinPlateSplineKernelTransform<TScalar, NDimensions> Superclass;
255 typedef SmartPointer<Self> Pointer;
256 typedef SmartPointer<const Self> ConstPointer;
257
259 itkTypeMacro( InverseThinPlateSplineKernelTransform, ThinPlateSplineKernelTransform );
260
263
266 typename Superclass::OutputPointType TransformPoint(
267 const typename Superclass::InputPointType&) const override
268 {
269 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
270 }
271 void ComputeDeformationContribution(const typename Superclass::InputPointType &,
272 typename Superclass::OutputPointType &) const override
273 {
274 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
275 }
277 const typename Superclass::InputPointType &,
278 typename Superclass::JacobianType &) const override
279 {
280 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
281 }
282 // Deprecated in ITKv5. It should be removed when ITK_LEGACY_REMOVE is set to ON.
284 const typename Superclass::InputPointType &,
285 typename Superclass::JacobianType &) const override
286 {
287 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
288 }
290 const typename Superclass::InputPointType &,
291 typename Superclass::JacobianPositionType &) const override
292 {
293 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
294 }
295 // Deprecated in ITKv5. It should be removed when ITK_LEGACY_REMOVE is set to ON.
297 const typename Superclass::InputPointType &,
298 typename Superclass::JacobianType &) const override
299 {
300 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
301 }
303 const typename Superclass::InputPointType &,
304 typename Superclass::InverseJacobianPositionType &) const override
305 {
306 itkExceptionMacro( "Only storage methods are implemented for InverseThinPlateSplineKernelTransform" );
307 }
308 };
309
310} // end of ITK namespace
311
316
319
322
323#endif
itkTypeMacro(InverseBSplineDeformableTransform, BSplineDeformableTransform)
InverseBSplineDeformableTransform Self
Superclass::OutputPointType TransformPoint(const typename Superclass::InputPointType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianPositionType &) const override
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::InverseJacobianPositionType &) const override
void ComputeJacobianWithRespectToParameters(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
BSplineDeformableTransform< TScalar, NDimensions, VSplineOrder > Superclass
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
void ComputeJacobianWithRespectToParameters(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
Superclass::OutputPointType TransformPoint(const typename Superclass::InputPointType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianPositionType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
itkTypeMacro(InverseBSplineTransform, BSplineTransform)
SmartPointer< const Self > ConstPointer
BSplineTransform< TScalar, NDimensions, VSplineOrder > Superclass
void ComputeJacobianFromBSplineWeightsWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::WeightsType &, typename Superclass::ParameterIndexArrayType &) const
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::InverseJacobianPositionType &) const override
void ComputeJacobianWithRespectToParameters(const typename Superclass::IndexType &, typename Superclass::JacobianType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::IndexType &, typename Superclass::JacobianPositionType &) const override
Superclass::OutputPointType TransformPoint(const typename Superclass::InputPointType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianPositionType &) const override
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
void GetInverseJacobianOfForwardFieldWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianPositionType &, bool useSVD=false) const override
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
DisplacementFieldTransform< TScalar, NDimensions > Superclass
InverseDisplacementFieldTransform Self
void GetInverseJacobianOfForwardFieldWithRespectToPosition(const typename Superclass::IndexType &, typename Superclass::JacobianPositionType &, bool useSVD=false) const override
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::InverseJacobianPositionType &) const override
void ComputeJacobianWithRespectToParameters(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
itkTypeMacro(InverseDisplacementFieldTransform, DisplacementFieldTransform)
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
void ComputeDeformationContribution(const typename Superclass::InputPointType &, typename Superclass::OutputPointType &) const override
Superclass::OutputPointType TransformPoint(const typename Superclass::InputPointType &) const override
void ComputeJacobianWithRespectToParameters(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
itkTypeMacro(InverseThinPlateSplineKernelTransform, ThinPlateSplineKernelTransform)
void ComputeJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianPositionType &) const override
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::JacobianType &) const override
InverseThinPlateSplineKernelTransform Self
ThinPlateSplineKernelTransform< TScalar, NDimensions > Superclass
void ComputeInverseJacobianWithRespectToPosition(const typename Superclass::InputPointType &, typename Superclass::InverseJacobianPositionType &) const override
Simplified inverse ITK transforms.
#define itkExceptionMacro(x)
itk::InverseThinPlateSplineKernelTransform< float, 3 > InverseThinPlateSplineTransformFloatType
itk::InverseThinPlateSplineKernelTransform< double, 3 > InverseThinPlateSplineTransformDoubleType
itk::InverseDisplacementFieldTransform< double, 3 > InverseDisplacementFieldTransformDoubleType
itk::InverseBSplineDeformableTransform< float, VTKDimension, BSPLINE_TRANSFORM_ORDER > InverseBSplineTransformFloatITKv3Type
itk::InverseBSplineTransform< float, VTKDimension, BSPLINE_TRANSFORM_ORDER > InverseBSplineTransformFloatITKv4Type
itk::InverseBSplineDeformableTransform< double, VTKDimension, BSPLINE_TRANSFORM_ORDER > InverseBSplineTransformDoubleITKv3Type
itk::InverseBSplineTransform< double, VTKDimension, BSPLINE_TRANSFORM_ORDER > InverseBSplineTransformDoubleITKv4Type
itk::InverseDisplacementFieldTransform< float, 3 > InverseDisplacementFieldTransformFloatType