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