You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.4 KiB
63 lines
2.4 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkImageCityBlockDistance.h,v $
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkImageCityBlockDistance - 1,2 or 3D distance map.
|
|
// .SECTION Description
|
|
// 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 "vtkImageDecomposeFilter.h"
|
|
|
|
class VTK_IMAGING_EXPORT vtkImageCityBlockDistance : public vtkImageDecomposeFilter
|
|
{
|
|
public:
|
|
static vtkImageCityBlockDistance *New();
|
|
vtkTypeRevisionMacro(vtkImageCityBlockDistance,vtkImageDecomposeFilter);
|
|
|
|
protected:
|
|
vtkImageCityBlockDistance();
|
|
~vtkImageCityBlockDistance() {};
|
|
|
|
virtual int IterativeRequestUpdateExtent(vtkInformation* in,
|
|
vtkInformation* out);
|
|
virtual int IterativeRequestData(vtkInformation*,
|
|
vtkInformationVector**,
|
|
vtkInformationVector*);
|
|
|
|
void AllocateOutputScalars(vtkImageData *outData,
|
|
int* updateExtent,
|
|
int* wholeExtent);
|
|
|
|
private:
|
|
vtkImageCityBlockDistance(const vtkImageCityBlockDistance&); // Not implemented.
|
|
void operator=(const vtkImageCityBlockDistance&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|