This file is indexed.

/usr/include/InsightToolkit/Algorithms/itkKappaStatisticImageToImageMetric.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
134
135
136
137
138
139
140
141
142
143
/*=========================================================================

  Program:   Insight Segmentation & Registration Toolkit
  Module:    itkKappaStatisticImageToImageMetric.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 __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
 */
template < class TFixedImage, class TMovingImage > 
class ITK_EXPORT 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.txx"
#endif

#endif