/usr/include/InsightToolkit/Algorithms/itkMeanSquaresImageToImageMetric.h is in libinsighttoolkit3-dev 3.20.1-1.
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 | /*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkMeanSquaresImageToImageMetric.h
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkMeanSquaresImageToImageMetric_h
#define __itkMeanSquaresImageToImageMetric_h
// First make sure that the configuration is available.
// This line can be removed once the optimized versions
// gets integrated into the main directories.
#include "itkConfigure.h"
#ifdef ITK_USE_OPTIMIZED_REGISTRATION_METHODS
#include "itkOptMeanSquaresImageToImageMetric.h"
#else
#include "itkImageToImageMetric.h"
#include "itkCovariantVector.h"
#include "itkPoint.h"
namespace itk
{
/** \class MeanSquaresImageToImageMetric
* \brief Computes similarity between two objects to be registered
*
* This Class is templated over the type of the fixed and moving
* images to be compared.
*
* This metric computes the mean of squared differences between pixels in
* the moving image and pixels in the fixed image. The spatial correspondance
* between both images is established through a Transform. Pixel values are
* taken from the Moving image. Their positions are mapped to the Fixed image
* and result in general in non-grid position on it. Values at these non-grid
* position of the Fixed image are interpolated using a user-selected Interpolator.
*
* \ingroup RegistrationMetrics
*/
template < class TFixedImage, class TMovingImage >
class ITK_EXPORT MeanSquaresImageToImageMetric :
public ImageToImageMetric< TFixedImage, TMovingImage>
{
public:
/** Standard class typedefs. */
typedef MeanSquaresImageToImageMetric Self;
typedef ImageToImageMetric<TFixedImage, TMovingImage > Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Run-time type information (and related methods). */
itkTypeMacro(MeanSquaresImageToImageMetric, ImageToImageMetric);
/** Types transferred from the base class */
typedef typename Superclass::RealType RealType;
typedef typename Superclass::TransformType TransformType;
typedef typename Superclass::TransformPointer TransformPointer;
typedef typename Superclass::TransformParametersType TransformParametersType;
typedef typename Superclass::TransformJacobianType TransformJacobianType;
typedef typename Superclass::GradientPixelType GradientPixelType;
typedef typename Superclass::GradientImageType GradientImageType;
typedef typename Superclass::InputPointType InputPointType;
typedef typename Superclass::OutputPointType OutputPointType;
typedef typename Superclass::MeasureType MeasureType;
typedef typename Superclass::DerivativeType DerivativeType;
typedef typename Superclass::FixedImageType FixedImageType;
typedef typename Superclass::MovingImageType MovingImageType;
typedef typename Superclass::FixedImageConstPointer FixedImageConstPointer;
typedef typename Superclass::MovingImageConstPointer MovingImageConstPointer;
/** Get the derivatives of the match measure. */
void GetDerivative( const TransformParametersType & parameters,
DerivativeType & derivative ) const;
/** Get the value for single valued optimizers. */
MeasureType GetValue( const TransformParametersType & parameters ) const;
/** Get value and derivatives for multiple valued optimizers. */
void GetValueAndDerivative( const TransformParametersType & parameters,
MeasureType& Value, DerivativeType& Derivative ) const;
#ifdef ITK_USE_CONCEPT_CHECKING
/** Begin concept checking */
itkConceptMacro(MovingPixelTypeHasNumericTraitsCheck,
(Concept::HasNumericTraits<typename TMovingImage::PixelType>));
itkConceptMacro(MovingRealTypeAdditivieOperatorsCheck,
(Concept::AdditiveOperators<
typename NumericTraits<typename TMovingImage::PixelType>::RealType>));
itkConceptMacro(MovingRealTypeMultiplyOperatorCheck,
(Concept::MultiplyOperator<
typename NumericTraits<typename TMovingImage::PixelType>::RealType>));
/** End concept checking */
#endif
protected:
MeanSquaresImageToImageMetric();
virtual ~MeanSquaresImageToImageMetric() {};
private:
MeanSquaresImageToImageMetric(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkMeanSquaresImageToImageMetric.txx"
#endif
#endif
#endif
|