forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkImageCityBlockDistance.h
69 lines (53 loc) · 2.55 KB
/
vtkImageCityBlockDistance.h
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
/*=========================================================================
Program: Visualization Toolkit
Module: vtkImageCityBlockDistance.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 vtkImageCityBlockDistance
* @brief 1,2 or 3D distance map.
*
* vtkImageCityBlockDistance creates a distance map using the city block
* (Manhatten) distance measure. The input is a mask. Zero values are
* considered boundaries. The output pixel is the minimum of the input pixel
* and the distance to a boundary (or neighbor value + 1 unit).
* distance values are calculated in pixels.
* The filter works by taking 6 passes (for 3d distance map): 2 along each
* axis (forward and backward). Each pass keeps a running minimum distance.
* For some reason, I preserve the sign if the distance. If the input
* mask is initially negative, the output distances will be negative.
* Distances maps can have inside (negative regions)
* and outsides (positive regions).
*/
#ifndef vtkImageCityBlockDistance_h
#define vtkImageCityBlockDistance_h
#include "vtkImagingGeneralModule.h" // For export macro
#include "vtkImageDecomposeFilter.h"
class VTKIMAGINGGENERAL_EXPORT vtkImageCityBlockDistance : public vtkImageDecomposeFilter
{
public:
static vtkImageCityBlockDistance *New();
vtkTypeMacro(vtkImageCityBlockDistance,vtkImageDecomposeFilter);
protected:
vtkImageCityBlockDistance();
~vtkImageCityBlockDistance()VTK_OVERRIDE {}
int IterativeRequestUpdateExtent(vtkInformation* in,
vtkInformation* out) VTK_OVERRIDE;
int IterativeRequestData(vtkInformation*,
vtkInformationVector**,
vtkInformationVector*) VTK_OVERRIDE;
void AllocateOutputScalars(vtkImageData *outData,
int* updateExtent,
int* wholeExtent,
vtkInformation* outInfo);
private:
vtkImageCityBlockDistance(const vtkImageCityBlockDistance&) VTK_DELETE_FUNCTION;
void operator=(const vtkImageCityBlockDistance&) VTK_DELETE_FUNCTION;
};
#endif
// VTK-HeaderTest-Exclude: vtkImageCityBlockDistance.h