This file is indexed.

/usr/include/vtk-7.1/vtkDijkstraImageGeodesicPath.h is in libvtk7-dev 7.1.1+dfsg1-2.

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
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkDijkstraImageGeodesicPath.h

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/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 notice for more information.

=========================================================================*/
/**
 * @class   vtkDijkstraImageGeodesicPath
 * @brief   Dijkstra algorithm to compute the graph geodesic.
 *
 * Takes as input a polyline and an image representing a 2D cost function
 * and performs a single source shortest path calculation.
 * Dijkstra's algorithm is used. The implementation is
 * similar to the one described in Introduction to Algorithms (Second Edition)
 * by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and
 * Cliff Stein, published by MIT Press and McGraw-Hill. Some minor
 * enhancement are added though. All vertices are not pushed on the heap
 * at start, instead a front set is maintained. The heap is implemented as
 * a binary heap. The output of the filter is a set of lines describing
 * the shortest path from StartVertex to EndVertex.  See parent class
 * vtkDijkstraGraphGeodesicPath for the implementation.
 *
 * @warning
 * The input cost image must have only VTK_PIXEL cells: i.e., a 2D image or
 * slice of a 3D volume. A cost function for a gray scale image might
 * be generated by the following pipeline:
 * vtkImageData->vtkImageGradientMagnitude->vtkImageShiftScale
 * wherein the gradient magnitude image is inverted so that strong edges
 * have low cost value.  Costs in moving from a vertex v to a vertex u
 * are calculated using a weighted additive sheme:
 * cost = Iw*f(I) + Ew*f(u,v) + Cw*f(t,u,v)
 * where Iw is the weight associated with f(I): the normalized image cost,
 * Ew is the weight associated with f(u,v): the normalized distance between
 * vertices u and v, and Cw is the weight associated with f(t,u,v):
 * the normalized curvature calculated from the vertex t which precedes
 * vertex u, and vertices u and v.  All weights range from 0 to 1.
 *
 * @par Thanks:
 * The class was contributed by Dean Inglis.
*/

#ifndef vtkDijkstraImageGeodesicPath_h
#define vtkDijkstraImageGeodesicPath_h

#include "vtkFiltersModelingModule.h" // For export macro
#include "vtkDijkstraGraphGeodesicPath.h"

class vtkImageData;

class VTKFILTERSMODELING_EXPORT vtkDijkstraImageGeodesicPath :
                           public vtkDijkstraGraphGeodesicPath
{
public:

  /**
   * Instantiate the class
   */
  static vtkDijkstraImageGeodesicPath *New();

  //@{
  /**
   * Standard methids for printing and determining type information.
   */
  vtkTypeMacro( vtkDijkstraImageGeodesicPath, vtkDijkstraGraphGeodesicPath );
  void PrintSelf( ostream& os, vtkIndent indent );
  //@}

  //@{
  /**
   * Specify the image object which is used as a cost function.
   */
  void SetInputData( vtkDataObject* );
  vtkImageData* GetInputAsImageData();
  //@}

  //@{
  /**
   * Image cost weight.
   */
  void SetImageWeight( double );
  vtkGetMacro( ImageWeight, double );
  //@}

  //@{
  /**
   * Edge length cost weight.
   */
  void SetEdgeLengthWeight( double );
  vtkGetMacro( EdgeLengthWeight, double );
  //@}

  //@{
  /**
   * Curvature cost weight.
   */
  vtkSetClampMacro( CurvatureWeight, double, 0.0, 1.0 );
  vtkGetMacro( CurvatureWeight, double );
  //@}

protected:
  vtkDijkstraImageGeodesicPath();
  ~vtkDijkstraImageGeodesicPath();

  virtual int FillInputPortInformation(int port, vtkInformation *info);
  virtual int RequestData(vtkInformation *, vtkInformationVector **,
                          vtkInformationVector *);

  // Build a graph description of the image
  virtual void BuildAdjacency( vtkDataSet *inData );

  // Update static costs without rebuilding adjacencyh when static weights change
  void UpdateStaticCosts( vtkImageData *image );

  // Override parent class methods.
  virtual double CalculateStaticEdgeCost( vtkDataSet *inData , vtkIdType u, vtkIdType v);
  virtual double CalculateDynamicEdgeCost( vtkDataSet *inData , vtkIdType u, vtkIdType v);

  double PixelSize;
  double ImageWeight;
  double EdgeLengthWeight;
  double CurvatureWeight;
  bool RebuildStaticCosts;

private:
  vtkDijkstraImageGeodesicPath(const vtkDijkstraImageGeodesicPath&) VTK_DELETE_FUNCTION;
  void operator=(const vtkDijkstraImageGeodesicPath&) VTK_DELETE_FUNCTION;

};

#endif