/usr/include/InsightToolkit/Review/itkOptMeanSquaresImageToImageMetric.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 133 | /*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkOptMeanSquaresImageToImageMetric.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 __itkOptMeanSquaresImageToImageMetric_h
#define __itkOptMeanSquaresImageToImageMetric_h
#include "itkOptImageToImageMetric.h"
#include "itkCovariantVector.h"
#include "itkPoint.h"
#include "itkIndex.h"
#include "itkMultiThreader.h"
namespace itk
{
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 inherited from Superclass. */
typedef typename Superclass::TransformType TransformType;
typedef typename Superclass::TransformPointer TransformPointer;
typedef typename Superclass::TransformJacobianType TransformJacobianType;
typedef typename Superclass::InterpolatorType InterpolatorType;
typedef typename Superclass::MeasureType MeasureType;
typedef typename Superclass::DerivativeType DerivativeType;
typedef typename Superclass::ParametersType ParametersType;
typedef typename Superclass::FixedImageType FixedImageType;
typedef typename Superclass::MovingImageType MovingImageType;
typedef typename Superclass::MovingImagePointType MovingImagePointType;
typedef typename Superclass::FixedImageConstPointer FixedImageConstPointer;
typedef typename Superclass::MovingImageConstPointer MovingImageConstPointer;
typedef typename Superclass::CoordinateRepresentationType
CoordinateRepresentationType;
typedef typename Superclass::FixedImageSampleContainer
FixedImageSampleContainer;
typedef typename Superclass::ImageDerivativesType ImageDerivativesType;
typedef typename Superclass::WeightsValueType WeightsValueType;
typedef typename Superclass::IndexValueType IndexValueType;
// Needed for evaluation of Jacobian.
typedef typename Superclass::FixedImagePointType FixedImagePointType;
/** The moving image dimension. */
itkStaticConstMacro( MovingImageDimension, unsigned int,
MovingImageType::ImageDimension );
/**
* Initialize the Metric by
* (1) making sure that all the components are present and plugged
* together correctly,
* (2) uniformly select NumberOfSpatialSamples within
* the FixedImageRegion, and
* (3) allocate memory for pdf data structures. */
virtual void Initialize(void) throw ( ExceptionObject );
/** Get the value. */
MeasureType GetValue( const ParametersType & parameters ) const;
/** Get the derivatives of the match measure. */
void GetDerivative( const ParametersType & parameters,
DerivativeType & Derivative ) const;
/** Get the value and derivatives for single valued optimizers. */
void GetValueAndDerivative( const ParametersType & parameters,
MeasureType & Value,
DerivativeType & Derivative ) const;
protected:
MeanSquaresImageToImageMetric();
virtual ~MeanSquaresImageToImageMetric();
void PrintSelf(std::ostream& os, Indent indent) const;
private:
//purposely not implemented
MeanSquaresImageToImageMetric(const Self &);
//purposely not implemented
void operator=(const Self &);
inline bool GetValueThreadProcessSample( unsigned int threadID,
unsigned long fixedImageSample,
const MovingImagePointType & mappedPoint,
double movingImageValue ) const;
inline bool GetValueAndDerivativeThreadProcessSample( unsigned int threadID,
unsigned long fixedImageSample,
const MovingImagePointType & mappedPoint,
double movingImageValue,
const ImageDerivativesType &
movingImageGradientValue ) const;
MeasureType * m_ThreaderMSE;
DerivativeType * m_ThreaderMSEDerivatives;
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkOptMeanSquaresImageToImageMetric.txx"
#endif
#endif
|