Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

kernelfactory.h

Go to the documentation of this file.
00001 
00007 #ifndef __KERNEL_FACTORY_H__
00008 #define __KERNEL_FACTORY_H__
00009 
00010 #include <string>
00011 #include <functional>
00012 
00013 #include "stringparser.h"
00014 #include "pnm_io.h"
00015 #include "radialfunction.h"
00016 #include "neuralregion.h"
00017 #include "generic_stdlib.h"
00018 
00019 
00021 class KernelFactory {
00022 public:
00024   typedef InternalNeuralRegion::WeightMatrix  KernelMatrix;
00025 
00026   KernelFactory() : max_blur_type(Blur_PGM) { }
00027   virtual ~KernelFactory() { }
00028 
00029   KernelMatrix create( int index, double world_size_scale, StringArgs arglist );
00030 
00032   typedef double (*kernel_fnPtr)  (double x_sq, double sig_sq);
00033 
00035   inline KernelMatrix create(kernel_fnPtr fnptr, double radius,
00036                              int max_radius, string& errors,
00037                              bool circular=true, bool normalize=true) {
00038     return RadialFunction::matrix<KernelMatrix>
00039       (fnptr,radius,max_radius,errors,circular,normalize);
00040   }
00041 
00043   void register_params_and_commands( void );
00044 
00046   enum BlurTypes {Blur_SquareAverage,Blur_CircularAverage,Blur_Gaussian,Blur_DoG,Blur_LoG,
00047                   Blur_GoD,Blur_DoGGoD,Blur_PGM};
00048   
00050   const BlurTypes max_blur_type;
00051 
00052 private:
00053   /* Static defaults */
00054   static double blur_radius;
00055   static double blur_radius_surround_multiplier;
00056   static double blur_scale;
00057   static double blur_range_multiplier;
00058   static int    blur_type;
00059   static char   default_kernel_filename[];
00060 };
00061 
00062 
00064 class KernelFactoryWrapper : public Generic::unary_virtual_function<double,KernelFactory::KernelMatrix> {
00065 public:
00066   KernelFactoryWrapper(KernelFactory factory, StringArgs args, int num=0)
00067     : e(num), arglist(args), kf(factory)  { }
00069   virtual KernelFactory::KernelMatrix operator() ( double size_scale )
00070     {  return kf.create(e,size_scale,arglist);  }
00071 private:
00072   int e;
00073   StringArgs arglist;
00074   KernelFactory& kf;
00075 };
00076 
00077 #endif /* __KERNEL_FACTORY_H__ */

Generated at Mon Aug 21 00:30:54 2000 for RF-LISSOM by doxygen1.2.1 written by Dimitri van Heesch, © 1997-2000