Public Member Functions |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
void | PrintSelf (ostream &os, vtkIndent indent) |
virtual int | IterativeRequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
int | SplitExtent (int splitExt[6], int startExt[6], int num, int total) |
|
virtual void | SetInitialize (int) |
virtual int | GetInitialize () |
virtual void | InitializeOn () |
virtual void | InitializeOff () |
|
virtual void | SetConsiderAnisotropy (int) |
virtual int | GetConsiderAnisotropy () |
virtual void | ConsiderAnisotropyOn () |
virtual void | ConsiderAnisotropyOff () |
|
virtual void | SetMaximumDistance (double) |
virtual double | GetMaximumDistance () |
|
virtual void | SetAlgorithm (int) |
virtual int | GetAlgorithm () |
void | SetAlgorithmToSaito () |
void | SetAlgorithmToSaitoCached () |
void | SetDimensionality (int dim) |
virtual int | GetDimensionality () |
void | PermuteIncrements (vtkIdType *increments, vtkIdType &inc0, vtkIdType &inc1, vtkIdType &inc2) |
void | PermuteExtent (int *extent, int &min0, int &max0, int &min1, int &max1, int &min2, int &max2) |
virtual int | GetIteration () |
virtual int | GetNumberOfIterations () |
virtual void | ThreadedExecute (vtkImageData *inData, vtkImageData *outData, int extent[6], int threadId) |
virtual void | ThreadedRequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int extent[6], int threadId) |
virtual void | SetNumberOfThreads (int) |
virtual int | GetNumberOfThreads () |
vtkDataObject * | GetInput (int port) |
vtkDataObject * | GetInput () |
vtkImageData * | GetImageDataInput (int port) |
vtkImageData * | GetOutput () |
vtkImageData * | GetOutput (int) |
virtual void | SetOutput (vtkDataObject *d) |
virtual int | ProcessRequest (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
void | SetInput (vtkDataObject *) |
void | SetInput (int, vtkDataObject *) |
virtual void | AddInput (vtkDataObject *) |
virtual void | AddInput (int, vtkDataObject *) |
int | HasExecutive () |
vtkExecutive * | GetExecutive () |
virtual void | SetExecutive (vtkExecutive *executive) |
virtual int | ModifyRequest (vtkInformation *request, int when) |
vtkInformation * | GetInputPortInformation (int port) |
vtkInformation * | GetOutputPortInformation (int port) |
int | GetNumberOfInputPorts () |
int | GetNumberOfOutputPorts () |
void | UpdateProgress (double amount) |
vtkInformation * | GetInputArrayInformation (int idx) |
void | RemoveAllInputs () |
vtkDataObject * | GetOutputDataObject (int port) |
virtual void | RemoveInputConnection (int port, vtkAlgorithmOutput *input) |
int | GetNumberOfInputConnections (int port) |
int | GetTotalNumberOfInputConnections () |
vtkAlgorithmOutput * | GetInputConnection (int port, int index) |
virtual void | Update () |
virtual void | UpdateInformation () |
virtual void | UpdateWholeExtent () |
void | ConvertTotalInputToPortConnection (int ind, int &port, int &conn) |
virtual double | ComputePriority () |
int | ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo) |
virtual int | ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, unsigned long *mtime) |
virtual vtkInformation * | GetInformation () |
virtual void | SetInformation (vtkInformation *) |
virtual void | Register (vtkObjectBase *o) |
virtual void | UnRegister (vtkObjectBase *o) |
virtual void | SetAbortExecute (int) |
virtual int | GetAbortExecute () |
virtual void | AbortExecuteOn () |
virtual void | AbortExecuteOff () |
virtual void | SetProgress (double) |
virtual double | GetProgress () |
void | SetProgressText (const char *ptext) |
virtual char * | GetProgressText () |
virtual unsigned long | GetErrorCode () |
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name) |
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) |
virtual void | SetInputArrayToProcess (int idx, vtkInformation *info) |
virtual void | SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName) |
vtkDataObject * | GetInputDataObject (int port, int connection) |
virtual void | SetInputConnection (int port, vtkAlgorithmOutput *input) |
virtual void | SetInputConnection (vtkAlgorithmOutput *input) |
virtual void | AddInputConnection (int port, vtkAlgorithmOutput *input) |
virtual void | AddInputConnection (vtkAlgorithmOutput *input) |
vtkAlgorithmOutput * | GetOutputPort (int index) |
vtkAlgorithmOutput * | GetOutputPort () |
virtual void | SetReleaseDataFlag (int) |
virtual int | GetReleaseDataFlag () |
void | ReleaseDataFlagOn () |
void | ReleaseDataFlagOff () |
int | UpdateExtentIsEmpty (vtkDataObject *output) |
int | UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType) |
virtual void | DebugOn () |
virtual void | DebugOff () |
unsigned char | GetDebug () |
void | SetDebug (unsigned char debugFlag) |
virtual void | Modified () |
virtual unsigned long | GetMTime () |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
vtkCommand * | GetCommand (unsigned long tag) |
void | RemoveObserver (vtkCommand *) |
void | RemoveObservers (unsigned long event, vtkCommand *) |
void | RemoveObservers (const char *event, vtkCommand *) |
int | HasObserver (unsigned long event, vtkCommand *) |
int | HasObserver (const char *event, vtkCommand *) |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
int | HasObserver (unsigned long event) |
int | HasObserver (const char *event) |
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
int | InvokeEvent (unsigned long event, void *callData) |
int | InvokeEvent (const char *event, void *callData) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
const char * | GetClassName () const |
virtual void | Delete () |
virtual void | FastDelete () |
void | Print (ostream &os) |
void | SetReferenceCount (int) |
void | PrintRevisions (ostream &os) |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
int | GetReferenceCount () |
Protected Member Functions |
| vtkImageEuclideanDistance () |
| ~vtkImageEuclideanDistance () |
virtual void | AllocateOutputScalars (vtkImageData *outData) |
virtual int | IterativeRequestInformation (vtkInformation *in, vtkInformation *out) |
virtual int | IterativeRequestUpdateExtent (vtkInformation *in, vtkInformation *out) |
| vtkImageDecomposeFilter () |
| ~vtkImageDecomposeFilter () |
| vtkImageIterateFilter () |
| ~vtkImageIterateFilter () |
virtual int | RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
virtual int | RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
virtual int | RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) |
virtual void | SetNumberOfIterations (int num) |
vtkImageData * | GetIterationInput () |
vtkImageData * | GetIterationOutput () |
| vtkThreadedImageAlgorithm () |
| ~vtkThreadedImageAlgorithm () |
| vtkImageAlgorithm () |
| ~vtkImageAlgorithm () |
virtual void | CopyInputArrayAttributesToOutput (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) |
virtual void | AllocateOutputData (vtkImageData *out, int *uExtent) |
virtual vtkImageData * | AllocateOutputData (vtkDataObject *out) |
virtual void | CopyAttributeData (vtkImageData *in, vtkImageData *out, vtkInformationVector **inputVector) |
virtual int | FillOutputPortInformation (int port, vtkInformation *info) |
virtual int | FillInputPortInformation (int port, vtkInformation *info) |
virtual void | ExecuteData (vtkDataObject *output) |
virtual void | Execute () |
| vtkAlgorithm () |
| ~vtkAlgorithm () |
virtual void | SetNumberOfInputPorts (int n) |
virtual void | SetNumberOfOutputPorts (int n) |
int | InputPortIndexInRange (int index, const char *action) |
int | OutputPortIndexInRange (int index, const char *action) |
int | GetInputArrayAssociation (int idx, vtkInformationVector **inputVector) |
virtual vtkExecutive * | CreateDefaultExecutive () |
virtual void | ReportReferences (vtkGarbageCollector *) |
virtual void | SetNumberOfInputConnections (int port, int n) |
int | GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector) |
int | GetInputArrayAssociation (int idx, vtkDataObject *input) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input) |
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input, int &association) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input) |
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association) |
vtkInformation * | GetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector) |
virtual void | SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input) |
virtual void | SetErrorCode (unsigned long) |
| vtkObject () |
virtual | ~vtkObject () |
virtual void | RegisterInternal (vtkObjectBase *, int check) |
virtual void | UnRegisterInternal (vtkObjectBase *, int check) |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
void | InternalReleaseFocus () |
| vtkObjectBase () |
virtual | ~vtkObjectBase () |
virtual void | CollectRevisions (ostream &os) |
| vtkObjectBase (const vtkObjectBase &) |
void | operator= (const vtkObjectBase &) |
computes 3D Euclidean DT
vtkImageEuclideanDistance implements the Euclidean DT using Saito's algorithm. The distance map produced contains the square of the Euclidean distance values.
The algorithm has a o(n^(D+1)) complexity over nxnx...xn images in D dimensions. It is very efficient on relatively small images. Cuisenaire's algorithms should be used instead if n >> 500. These are not implemented yet.
For the special case of images where the slice-size is a multiple of 2^N with a large N (typically for 256x256 slices), Saito's algorithm encounters a lot of cache conflicts during the 3rd iteration which can slow it very significantly. In that case, one should use ::SetAlgorithmToSaitoCached() instead for better performance.
References:
T. Saito and J.I. Toriwaki. New algorithms for Euclidean distance transformations of an n-dimensional digitised picture with applications. Pattern Recognition, 27(11). pp. 1551–1565, 1994.
O. Cuisenaire. Distance Transformation: fast algorithms and applications to medical image processing. PhD Thesis, Universite catholique de Louvain, October 1999. http://ltswww.epfl.ch/~cuisenai/papers/oc_thesis.pdf
- Tests:
- vtkImageEuclideanDistance (Tests)
Definition at line 55 of file vtkImageEuclideanDistance.h.