/usr/include/ITK-4.5/itkMeanSquaresImageToImageMetric.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 140 141 142 143 144 145 | /*=========================================================================
*
* 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 __itkMeanSquaresImageToImageMetric_h
#define __itkMeanSquaresImageToImageMetric_h
#include "itkImageToImageMetric.h"
#include "itkPoint.h"
#include "itkIndex.h"
namespace itk
{
/**
* \class MeanSquaresImageToImageMetric
* \brief TODO
* \ingroup ITKRegistrationCommon
*
* \wiki
* \wikiexample{Metrics/MeanSquaresImageToImageMetric,Compute the mean squares metric between two images}
* \endwiki
*/
template< typename TFixedImage, typename TMovingImage >
class 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(ThreadIdType threadID,
SizeValueType fixedImageSample,
const MovingImagePointType & mappedPoint,
double movingImageValue) const;
inline bool GetValueAndDerivativeThreadProcessSample(ThreadIdType threadID,
SizeValueType fixedImageSample,
const MovingImagePointType & mappedPoint,
double movingImageValue,
const ImageDerivativesType &
movingImageGradientValue) const;
struct PerThreadS
{
TransformJacobianType m_Jacobian;
MeasureType m_MSE;
DerivativeType m_MSEDerivative;
};
itkAlignedTypedef( 64, PerThreadS, AlignedPerThreadType );
AlignedPerThreadType *m_PerThread;
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkMeanSquaresImageToImageMetric.hxx"
#endif
#endif
|