/usr/include/ITK-4.5/itkGaussianSmoothingOnUpdateDisplacementFieldTransform.h is in libinsighttoolkit4-dev 4.5.0-3.
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 | /*=========================================================================
*
* 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 __itkGaussianSmoothingOnUpdateDisplacementFieldTransform_h
#define __itkGaussianSmoothingOnUpdateDisplacementFieldTransform_h
#include "itkDisplacementFieldTransform.h"
#include "itkGaussianOperator.h"
#include "itkVectorNeighborhoodOperatorImageFilter.h"
namespace itk
{
/** \class GaussianSmoothingOnUpdateDisplacementFieldTransform
* \brief Modifies the UpdateTransformParameters method
* to peform a Gaussian smoothing of the
* displacement field after adding the update array.
*
* This class is the same as \c DisplacementFieldTransform, 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.
*
* To free the memory allocated and cached in \c GaussianSmoothDisplacementField
* on demand, see \c FreeGaussianSmoothingTempField.
*
*
* \ingroup ITKDisplacementField
*/
template
<class TScalar, unsigned int NDimensions>
class GaussianSmoothingOnUpdateDisplacementFieldTransform :
public DisplacementFieldTransform<TScalar, NDimensions>
{
public:
/** Standard class typedefs. */
typedef GaussianSmoothingOnUpdateDisplacementFieldTransform Self;
typedef DisplacementFieldTransform<TScalar, NDimensions> Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Run-time type information (and related methods). */
itkTypeMacro( GaussianSmoothingOnUpdateDisplacementFieldTransform,
DisplacementFieldTransform );
/** New macro for creation of through a Smart Pointer */
itkNewMacro( Self );
/** Types from superclass */
typedef typename Superclass::ScalarType ScalarType;
typedef typename Superclass::DerivativeType DerivativeType;
typedef typename DerivativeType::ValueType DerivativeValueType;
typedef typename Superclass::DisplacementFieldType DisplacementFieldType;
typedef typename Superclass::DisplacementFieldPointer DisplacementFieldPointer;
typedef typename DisplacementFieldType::PixelType DisplacementVectorType;
typedef typename Transform<TScalar,NDimensions,NDimensions>::Pointer
TransformPointer;
/**
* Get/Set the Gaussian smoothing standard deviation for the update field.
* Default = 1.75.
*/
itkSetMacro( GaussianSmoothingVarianceForTheUpdateField, ScalarType );
itkGetConstReferenceMacro( GaussianSmoothingVarianceForTheUpdateField, ScalarType );
/**
* Get/Set the Gaussian smoothing standard deviation for the total field.
* Default = 0.5.
*/
itkSetMacro( GaussianSmoothingVarianceForTheTotalField, ScalarType );
itkGetConstReferenceMacro( GaussianSmoothingVarianceForTheTotalField, 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 GaussianSmoothDisplacementField 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 );
/** 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 DisplacementFieldPointer GaussianSmoothDisplacementField( DisplacementFieldType *, ScalarType );
protected:
GaussianSmoothingOnUpdateDisplacementFieldTransform();
virtual ~GaussianSmoothingOnUpdateDisplacementFieldTransform();
void PrintSelf( std::ostream& os, Indent indent ) const;
/** Clone the current transform */
virtual typename LightObject::Pointer InternalClone() const;
/** Used in GaussianSmoothDisplacementField as variance for the
* GaussianOperator */
ScalarType m_GaussianSmoothingVarianceForTheUpdateField;
ScalarType m_GaussianSmoothingVarianceForTheTotalField;
/** Type of Gaussian Operator used during smoothing. Define here
* so we can use a member var during the operation. */
typedef GaussianOperator<ScalarType, Superclass::Dimension>
GaussianSmoothingOperatorType;
typedef VectorNeighborhoodOperatorImageFilter< DisplacementFieldType,
DisplacementFieldType >
GaussianSmoothingSmootherType;
GaussianSmoothingOperatorType m_GaussianSmoothingOperator;
private:
GaussianSmoothingOnUpdateDisplacementFieldTransform( const Self& ); //purposely not implemented
void operator=( const Self& ); //purposely not implemented
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
# include "itkGaussianSmoothingOnUpdateDisplacementFieldTransform.hxx"
#endif
#endif // __itkGaussianSmoothingOnUpdateDisplacementFieldTransform_h
|