/usr/include/ITK-4.5/itkKappaStatisticImageToImageMetric.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 | /*=========================================================================
*
* 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 __itkKappaStatisticImageToImageMetric_h
#define __itkKappaStatisticImageToImageMetric_h
#include "itkImageToImageMetric.h"
namespace itk
{
/** \class KappaStatisticImageToImageMetric
* \brief Computes similarity between two binary objects to be
* registered
*
* This Class is templated over the type of the fixed and moving
* images to be compared. The metric here is designed for matching
* pixels in two images with the same exact value. Only one value can
* be considered (the default is 255) and can be specified with the
* SetForegroundValue method. In the computation of the metric, only
* foreground pixels are considered. The metric value is given
* by 2*|A&B|/(|A|+|B|), where A is the foreground region in the moving
* image, B is the foreground region in the fixed image, & is intersection,
* and |.| indicates the area of the enclosed set. The metric is
* described in "Morphometric Analysis of White Matter Lesions in MR
* Images: Method and Validation", A. P. Zijdenbos, B. M. Dawant, R. A.
* Margolin, A. C. Palmer.
*
* This metric is especially useful when considering the similarity between
* binary images. Given the nature of binary images, a nearest neighbor
* interpolator is the preferred interpolator.
*
* Metric values range from 0.0 (no foreground alignment) to 1.0
* (perfect foreground alignment). When dealing with optimizers that can
* only minimize a metric, use the ComplementOn() method.
*
* \ingroup RegistrationMetrics
* \ingroup ITKRegistrationCommon
*/
template< typename TFixedImage, typename TMovingImage >
class KappaStatisticImageToImageMetric:
public ImageToImageMetric< TFixedImage, TMovingImage >
{
public:
/** Standard class typedefs. */
typedef KappaStatisticImageToImageMetric 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(KappaStatisticImageToImageMetric, 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::GradientImageType GradientImageType;
typedef typename Superclass::GradientPixelType GradientPixelType;
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;
typedef typename Superclass::FixedImageRegionType FixedImageRegionType;
/** Computes the gradient image and assigns it to m_GradientImage */
void ComputeGradient();
/** Get the derivatives of the match measure. */
void GetDerivative(const TransformParametersType &,
DerivativeType & derivative) const;
/** Get the value of the metric at a particular parameter
* setting. The metric value is given by 2*|A&B|/(|A|+|B|), where A
* is the moving image, B is the fixed image, & is intersection,
* and |.| indicates the area of the enclosed set. If ComplementOn has
* been set, the metric value is 1.0-2*|A&B|/(|A|+|B|). */
MeasureType GetValue(const TransformParametersType & parameters) const;
/** Get both the value and derivative. This method internally calls the
\c GetValue() and the \c GetDerivative() method. */
void GetValueAndDerivative(const TransformParametersType & parameters,
MeasureType & Value, DerivativeType & Derivative) const;
/** This method allows the user to set the foreground value. The default
* value is 255. */
itkSetMacro(ForegroundValue, RealType);
itkGetConstMacro(ForegroundValue, RealType);
/** Set/Get whether this metric returns 2*|A&B|/(|A|+|B|)
* (ComplementOff, the default) or 1.0 - 2*|A&B|/(|A|+|B|)
* (ComplementOn). When using an optimizer that minimizes
* metric values use ComplementOn(). */
itkSetMacro(Complement, bool);
itkBooleanMacro(Complement);
itkGetConstMacro(Complement, bool);
protected:
KappaStatisticImageToImageMetric();
virtual ~KappaStatisticImageToImageMetric() {}
void PrintSelf(std::ostream & os, Indent indent) const;
private:
KappaStatisticImageToImageMetric(const Self &); //purposely not implemented
void operator=(const Self &); //purposely not implemented
RealType m_ForegroundValue;
bool m_Complement;
};
} // end namespace itk
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkKappaStatisticImageToImageMetric.hxx"
#endif
#endif
|