/usr/include/ITK-4.9/itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.h is in libinsighttoolkit4-dev 4.9.0-4ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | /*=========================================================================
*
* Copyright Insight Software Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
#ifndef itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform_h
#define itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform_h
#include "itkTimeVaryingVelocityFieldTransform.h"
namespace itk
{
/** \class GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform
* \brief Modifies the UpdateTransformParameters method
* to peform a Gaussian smoothing of the
* velocity field after adding the update array.
*
* This class is the same as \c TimeVaryingVelocityFieldTransform, except
* for the changes to UpdateTransformParameters. The method smooths
* the result of the addition of the update array and the displacement
* field, using a \c GaussianOperator filter.
*
* \ingroup ITKDisplacementField
*/
template<typename TParametersValueType, unsigned int NDimensions>
class GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform
: public TimeVaryingVelocityFieldTransform<TParametersValueType, NDimensions>
{
public:
/** Standard class typedefs. */
typedef GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform Self;
typedef TimeVaryingVelocityFieldTransform<TParametersValueType, NDimensions> Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Run-time type information (and related methods). */
itkTypeMacro( GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform,
TimeVaryingVelocityFieldTransform );
/** New macro for creation of through a Smart Pointer */
itkNewMacro( Self );
/** Dimension of the time varying velocity field. */
itkStaticConstMacro( TimeVaryingVelocityFieldDimension, unsigned int, NDimensions+1 );
/** Types from superclass */
typedef typename Superclass::ScalarType ScalarType;
typedef typename Superclass::DerivativeType DerivativeType;
typedef typename DerivativeType::ValueType DerivativeValueType;
typedef typename Superclass::VelocityFieldType VelocityFieldType;
typedef typename Superclass::TimeVaryingVelocityFieldType TimeVaryingVelocityFieldType;
typedef typename Superclass::TimeVaryingVelocityFieldPointer TimeVaryingVelocityFieldPointer;
typedef typename VelocityFieldType::PixelType DisplacementVectorType;
typedef typename DisplacementVectorType::ValueType DisplacementVectorValueType;
/**
* Get/Set the Gaussian spatial smoothing variance for the update field.
* Default = 3.
*/
itkSetMacro( GaussianSpatialSmoothingVarianceForTheUpdateField, ScalarType );
itkGetConstReferenceMacro( GaussianSpatialSmoothingVarianceForTheUpdateField, ScalarType );
/**
* Get/Set the Gaussian temporal smoothing variance for the update field.
* Default = 1.0.
*/
itkSetMacro( GaussianTemporalSmoothingVarianceForTheUpdateField, ScalarType );
itkGetConstReferenceMacro( GaussianTemporalSmoothingVarianceForTheUpdateField, ScalarType );
/**
* Get/Set the Gaussian spatial smoothing variance for the total field.
* Default = 0.5.
*/
itkSetMacro( GaussianSpatialSmoothingVarianceForTheTotalField, ScalarType );
itkGetConstReferenceMacro( GaussianSpatialSmoothingVarianceForTheTotalField, ScalarType );
/**
* Get/Set the Gaussian temporal smoothing variance for the total field.
* Default = 0.
*/
itkSetMacro( GaussianTemporalSmoothingVarianceForTheTotalField, ScalarType );
itkGetConstReferenceMacro( GaussianTemporalSmoothingVarianceForTheTotalField, ScalarType );
/** Update the transform's parameters by the values in \c update.
* We assume \c update is of the same length as Parameters. Throw
* exception otherwise.
* \c factor is a scalar multiplier for each value in update.
* \c GaussianSmoothTimeVaryingVelocityField is called after the update is
* added to the field.
* See base class for more details.
*/
virtual void UpdateTransformParameters( const DerivativeType & update, ScalarType factor = 1.0 ) ITK_OVERRIDE;
/** Smooth the displacement field in-place.
* Uses m_GaussSmoothSigma to change the variance for the GaussianOperator.
* \warning Not thread safe. Does its own threading.
*/
virtual TimeVaryingVelocityFieldPointer GaussianSmoothTimeVaryingVelocityField( VelocityFieldType *, ScalarType, ScalarType );
protected:
GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform();
virtual ~GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform();
virtual void PrintSelf( std::ostream& os, Indent indent ) const ITK_OVERRIDE;
/** Track when the temporary displacement field used during smoothing
* was last modified/initialized. We only want to change it if the
* main displacement field is also changed, i.e. assigned to a new object */
ModifiedTimeType m_GaussianSmoothingTempFieldModifiedTime;
/** Used in GaussianSmoothTimeVaryingVelocityField as variance for the
* GaussianOperator
*/
ScalarType m_GaussianSpatialSmoothingVarianceForTheUpdateField;
ScalarType m_GaussianSpatialSmoothingVarianceForTheTotalField;
ScalarType m_GaussianTemporalSmoothingVarianceForTheUpdateField;
ScalarType m_GaussianTemporalSmoothingVarianceForTheTotalField;
private:
GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform( const Self& ) ITK_DELETE_FUNCTION;
void operator=( const Self& ) ITK_DELETE_FUNCTION;
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
# include "itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform.hxx"
#endif
#endif // itkGaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform_h
|