ITK  5.4.0
Insight Toolkit
itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
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  * https://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 itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform_h
19 #define itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform_h
20 
22 
23 namespace itk
24 {
25 
38 template <typename TParametersValueType, unsigned int VDimension>
40  : public TimeVaryingVelocityFieldTransform<TParametersValueType, VDimension>
41 {
42 public:
44 
50 
52  itkOverrideGetNameOfClassMacro(GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform);
53 
55  itkNewMacro(Self);
56 
58  static constexpr unsigned int TimeVaryingVelocityFieldDimension = VDimension + 1;
59 
61  using typename Superclass::ScalarType;
62  using typename Superclass::DerivativeType;
64  using typename Superclass::VelocityFieldType;
65 
66  using typename Superclass::TimeVaryingVelocityFieldType;
67  using typename Superclass::TimeVaryingVelocityFieldPointer;
68 
70  using DisplacementVectorValueType = typename DisplacementVectorType::ValueType;
71 
72 
77  itkSetMacro(GaussianSpatialSmoothingVarianceForTheUpdateField, ScalarType);
78  itkGetConstReferenceMacro(GaussianSpatialSmoothingVarianceForTheUpdateField, ScalarType);
85  itkSetMacro(GaussianTemporalSmoothingVarianceForTheUpdateField, ScalarType);
86  itkGetConstReferenceMacro(GaussianTemporalSmoothingVarianceForTheUpdateField, ScalarType);
93  itkSetMacro(GaussianSpatialSmoothingVarianceForTheTotalField, ScalarType);
94  itkGetConstReferenceMacro(GaussianSpatialSmoothingVarianceForTheTotalField, ScalarType);
101  itkSetMacro(GaussianTemporalSmoothingVarianceForTheTotalField, ScalarType);
102  itkGetConstReferenceMacro(GaussianTemporalSmoothingVarianceForTheTotalField, ScalarType);
113  void
114  UpdateTransformParameters(const DerivativeType & update, ScalarType factor = 1.0) override;
115 
121  GaussianSmoothTimeVaryingVelocityField(VelocityFieldType *, ScalarType, ScalarType);
122 
123 protected:
126  void
127  PrintSelf(std::ostream & os, Indent indent) const override;
128 
132  ModifiedTimeType m_GaussianSmoothingTempFieldModifiedTime{ 0 };
133 
137  ScalarType m_GaussianSpatialSmoothingVarianceForTheUpdateField{};
138  ScalarType m_GaussianSpatialSmoothingVarianceForTheTotalField{};
139  ScalarType m_GaussianTemporalSmoothingVarianceForTheUpdateField{};
140  ScalarType m_GaussianTemporalSmoothingVarianceForTheTotalField{};
141 };
142 
143 } // end namespace itk
144 
145 #ifndef ITK_MANUAL_INSTANTIATION
146 # include "itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.hxx"
147 #endif
148 
149 #endif // itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform_h
itkTimeVaryingVelocityFieldTransform.h
itk::GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform::DerivativeValueType
typename DerivativeType::ValueType DerivativeValueType
Definition: itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.h:63
itk::ModifiedTimeType
SizeValueType ModifiedTimeType
Definition: itkIntTypes.h:102
itk::TimeVaryingVelocityFieldTransform
Transform objects based on integration of a time-varying velocity field.
Definition: itkTimeVaryingVelocityFieldTransform.h:54
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:55
itk::TimeVaryingVelocityFieldTransform::TimeVaryingVelocityFieldPointer
typename VelocityFieldType::Pointer TimeVaryingVelocityFieldPointer
Definition: itkTimeVaryingVelocityFieldTransform.h:84
itk::GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform::DisplacementVectorValueType
typename DisplacementVectorType::ValueType DisplacementVectorValueType
Definition: itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.h:70
itk::Transform< TParametersValueType, VDimension, VDimension >::ScalarType
ParametersValueType ScalarType
Definition: itkTransform.h:141
itk::Image::PixelType
TPixel PixelType
Definition: itkImage.h:108
itk::Array::ValueType
TValue ValueType
Definition: itkArray.h:52
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform
Modifies the UpdateTransformParameters method to perform a Gaussian smoothing of the velocity field a...
Definition: itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.h:39
itk::Array
Array class with size defined at construction time.
Definition: itkArray.h:47
itk::GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform::DisplacementVectorType
typename VelocityFieldType::PixelType DisplacementVectorType
Definition: itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.h:69
itk::Image
Templated n-dimensional image class.
Definition: itkImage.h:88