/usr/include/ITK-4.5/itkBSplineSyNImageRegistrationMethod.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 __itkBSplineSyNImageRegistrationMethod_h
#define __itkBSplineSyNImageRegistrationMethod_h
#include "itkSyNImageRegistrationMethod.h"
#include "itkBSplineSmoothingOnUpdateDisplacementFieldTransform.h"
#include "itkImageMaskSpatialObject.h"
namespace itk
{
//Forward-declare these because of module dependency conflict.
//They will soon be moved to a different module, at which
// time this can be removed.
template <unsigned int VDimension, typename TDataHolder>
class ImageToData;
template <typename TDataHolder>
class Array1DToData;
/** \class BSplineSyNImageRegistrationMethod
* \brief Interface method for the performing greedy B-spline SyN image registration.
*
* For greedy SyN we use \c m_Transform to map the time-parameterized middle
* image to the fixed image (and vice versa using
* \c m_Transform->GetInverseDisplacementField() ). We employ another ivar,
* \c m_InverseTransform, to map the time-parameterized middle image to the
* moving image.
*
* Output: The output is the updated transform which has been added to the
* composite transform.
*
* \author Nick Tustison
* \author Brian Avants
*
* \ingroup ITKRegistrationMethodsv4
*/
template<typename TFixedImage, typename TMovingImage, typename TOutputTransform =
BSplineSmoothingOnUpdateDisplacementFieldTransform<double, TFixedImage::ImageDimension> >
class BSplineSyNImageRegistrationMethod
: public SyNImageRegistrationMethod<TFixedImage, TMovingImage, TOutputTransform>
{
public:
/** Standard class typedefs. */
typedef BSplineSyNImageRegistrationMethod Self;
typedef SyNImageRegistrationMethod<TFixedImage, TMovingImage, TOutputTransform> Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro( Self );
/** ImageDimension constants */
itkStaticConstMacro( ImageDimension, unsigned int, TFixedImage::ImageDimension );
/** Run-time type information (and related methods). */
itkTypeMacro( BSplineSyNImageRegistrationMethod, SyNImageRegistrationMethod );
/** Input typedefs for the images. */
typedef TFixedImage FixedImageType;
typedef typename FixedImageType::Pointer FixedImagePointer;
typedef typename Superclass::FixedImagesContainerType FixedImagesContainerType;
typedef TMovingImage MovingImageType;
typedef typename MovingImageType::Pointer MovingImagePointer;
typedef typename Superclass::MovingImagesContainerType MovingImagesContainerType;
/** Metric and transform typedefs */
typedef typename Superclass::ImageMetricType ImageMetricType;
typedef typename ImageMetricType::Pointer ImageMetricPointer;
typedef typename ImageMetricType::VirtualImageType VirtualImageType;
typedef typename ImageMetricType::MeasureType MeasureType;
typedef typename Superclass::MultiMetricType MultiMetricType;
typedef typename ImageMetricType::FixedImageMaskType FixedImageMaskType;
typedef typename ImageMetricType::MovingImageMaskType MovingImageMaskType;
typedef typename Superclass::NumberOfIterationsArrayType NumberOfIterationsArrayType;
typedef TOutputTransform OutputTransformType;
typedef typename OutputTransformType::Pointer OutputTransformPointer;
typedef typename OutputTransformType::ScalarType RealType;
typedef typename OutputTransformType::DerivativeType DerivativeType;
typedef typename DerivativeType::ValueType DerivativeValueType;
typedef typename OutputTransformType::DisplacementFieldType DisplacementFieldType;
typedef typename DisplacementFieldType::Pointer DisplacementFieldPointer;
typedef typename DisplacementFieldType::PixelType DisplacementVectorType;
typedef DisplacementFieldToBSplineImageFilter
<DisplacementFieldType, DisplacementFieldType> BSplineFilterType;
typedef typename BSplineFilterType::ArrayType ArrayType;
typedef typename BSplineFilterType::RealImageType WeightedMaskImageType;
typedef ImageMaskSpatialObject<ImageDimension> ImageMaskSpatialObjectType;
typedef typename ImageMaskSpatialObjectType::ImageType MaskImageType;
typedef typename Superclass::CompositeTransformType CompositeTransformType;
typedef typename CompositeTransformType::TransformType TransformBaseType;
typedef typename Superclass::DecoratedOutputTransformType DecoratedOutputTransformType;
typedef typename DecoratedOutputTransformType::Pointer DecoratedOutputTransformPointer;
protected:
BSplineSyNImageRegistrationMethod();
virtual ~BSplineSyNImageRegistrationMethod();
/** Handle optimization internally */
virtual void StartOptimization();
virtual void InitializeRegistrationAtEachLevel( const SizeValueType );
virtual DisplacementFieldPointer ComputeUpdateField( const FixedImagesContainerType, const TransformBaseType *,
const MovingImagesContainerType, const TransformBaseType *, const FixedImageMaskType *, MeasureType & );
virtual DisplacementFieldPointer BSplineSmoothDisplacementField( const DisplacementFieldType *, const ArrayType &, const WeightedMaskImageType * );
private:
BSplineSyNImageRegistrationMethod( const Self & ); //purposely not implemented
void operator=( const Self & ); //purposely not implemented
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkBSplineSyNImageRegistrationMethod.hxx"
#endif
#endif
|