00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef _SO_GRADIENT_IMAGE_FILTER_H_
00025 #define _SO_GRADIENT_IMAGE_FILTER_H_
00026 #include <ImageViz/SoImageViz.h>
00027 #include <ImageViz/Engines/SoSubImageVizEngine.h>
00028 #include <ImageViz/Engines/SoImageVizEngineOutput.h>
00029 #include <ImageViz/Engines/SoImageVizEngine.h>
00030 
00031 #include <Inventor/fields/SoSFEnum.h>
00032 #include <Inventor/fields/SoSFFloat.h>
00033 #include <ImageViz/Fields/SoSFImageDataAdapter.h>
00034 
00035 
00130 class  SoGradientOperatorProcessing2d : public SoImageVizEngine
00131 {
00132 
00133   SO_IMAGEVIZ_ENGINE_HEADER(SoGradientOperatorProcessing2d);
00134 
00135 public:
00137   SoGradientOperatorProcessing2d();
00138 
00140   SoSFImageDataAdapter inImage;
00141 
00145   enum GradientOperator{
00151     CANNY_DERICHE = 0,
00156     SHEN_CASTAN = 1,
00157 SoDEPRECATED
00162     KERNEL3X3 = 6, 
00163 
00168     CANNY = 3,
00174     GAUSSIAN = 4,
00180     SOBEL = 5,
00186     PREWITT = 6
00187   };
00188 
00192   SoSFEnum gradientOperator;
00193 
00197   enum GradientMode{
00203     AMPLITUDE_MAX_OF_MAGS = 0,
00209     AMPLITUDE_EUCLIDEAN = 1,
00217     AMPLITUDE_AND_ORIENTATION = 2,
00224     X_AND_Y_GRADIENTS = 3
00225   };
00226 
00230   SoSFEnum gradientMode;
00231 
00233   SoSFFloat standardDeviation;
00234 
00236   SoImageVizEngineOutput<SoSFImageDataAdapter,SoImageDataAdapter*> outGradientXImage;
00237 
00239   SoImageVizEngineOutput<SoSFImageDataAdapter,SoImageDataAdapter*> outGradientYImage;
00240 
00242   SoImageVizEngineOutput<SoSFImageDataAdapter,SoImageDataAdapter*> outAmplitudeImage;
00243 
00245   SoImageVizEngineOutput<SoSFImageDataAdapter,SoImageDataAdapter*> outOrientationImage;
00246 
00247 
00248 private:
00250   virtual ~SoGradientOperatorProcessing2d();
00251 
00252 };
00253 
00254 #endif