00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00029 #ifndef __vtkImageNonMaximumSuppression_h
00030 #define __vtkImageNonMaximumSuppression_h
00031
00032 #define VTK_IMAGE_NON_MAXIMUM_SUPPRESSION_MAGNITUDE_INPUT 0
00033 #define VTK_IMAGE_NON_MAXIMUM_SUPPRESSION_VECTOR_INPUT 1
00034
00035 #include "vtkThreadedImageAlgorithm.h"
00036 #include "vtkImageData.h"
00037
00038 class VTK_IMAGING_EXPORT vtkImageNonMaximumSuppression : public vtkThreadedImageAlgorithm
00039 {
00040 public:
00041 static vtkImageNonMaximumSuppression *New();
00042 vtkTypeMacro(vtkImageNonMaximumSuppression,vtkThreadedImageAlgorithm);
00043 void PrintSelf(ostream& os, vtkIndent indent);
00044
00046
00047 void SetMagnitudeInput(vtkImageData *input) {this->SetInput(0,input);};
00048 void SetVectorInput(vtkImageData *input) {this->SetInput(1,input);};
00050
00052
00054 vtkSetMacro(HandleBoundaries, int);
00055 vtkGetMacro(HandleBoundaries, int);
00056 vtkBooleanMacro(HandleBoundaries, int);
00058
00060
00062 vtkSetClampMacro(Dimensionality,int,2,3);
00063 vtkGetMacro(Dimensionality,int);
00065
00066 protected:
00067 vtkImageNonMaximumSuppression();
00068 ~vtkImageNonMaximumSuppression() {};
00069
00070 int HandleBoundaries;
00071 int Dimensionality;
00072
00073 virtual int RequestInformation (vtkInformation *,
00074 vtkInformationVector **,
00075 vtkInformationVector *);
00076
00077 virtual int RequestUpdateExtent(vtkInformation*,
00078 vtkInformationVector**,
00079 vtkInformationVector*);
00080
00081 virtual void ThreadedRequestData(vtkInformation *request,
00082 vtkInformationVector **inputVector,
00083 vtkInformationVector *outputVector,
00084 vtkImageData ***inData,
00085 vtkImageData **outData,
00086 int extent[6], int threadId);
00087
00088 private:
00089 vtkImageNonMaximumSuppression(const vtkImageNonMaximumSuppression&);
00090 void operator=(const vtkImageNonMaximumSuppression&);
00091 };
00092
00093 #endif
00094
00095
00096