MeVisLabToolboxReference
MeVisLab/Standard/Sources/ML/MLKernel/mlLoGFilter.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //-------------------------------------------------------------------------
00006 
00011 //-------------------------------------------------------------------------
00012 // Prevent multiple including of this file.
00013 #if !defined(__mlLoGFilter_H)
00014 #define __mlLoGFilter_H
00015 
00016 // ML-includes
00017 #ifndef __mlInitSystemKernel_H
00018 #include "mlInitSystemKernel.h"
00019 #endif
00020 #ifndef __mlKernel_H
00021 #include "mlKernel.h"
00022 #endif
00023 #ifndef __mlKernelModule_H
00024 #include "mlKernelModule.h"
00025 #endif
00026 
00027 ML_START_NAMESPACE
00028 
00029   //-------------------------------------------------------------------
00037   //-------------------------------------------------------------------
00038   class MLKERNELEXPORT LoGFilter : public KernelModule{
00039 
00040   public: 
00041 
00042     //-------------------------------------------------------------------
00056     //-------------------------------------------------------------------
00057     LoGFilter();
00058 
00061     DoubleField *sigmaFld;
00062 
00064     IntField *getKernelExtFld() { return _kernelExtFld; }
00065 
00066   protected:
00068     virtual void handleNotification(Field* field);
00069 
00071     virtual void calculateOutputImageProperties(int outIndex);
00072 
00074     virtual void _updateKernel();
00075 
00076 
00078     MLdouble _calculateLoGfirstPart(int axisIdx);
00079 
00081     MLdouble _calculateLoGsecondPart(int axisIdx);
00082 
00084     void _setKernel();
00085 
00086 
00092     CALC_ROW_H();
00093 
00096     template <typename DATATYPE>                                            
00097       void calcRow(MLsoffset    *indexTab,
00098                    size_t       indexTabSize,          
00099                    MLsoffset    srcVoxelOffset,          
00100                    size_t       numVox,          
00101                    DATATYPE     *inCursor,                             
00102                    DATATYPE     *outCursor,
00103                    const ImageVector &/*rowStart*/);
00104 
00105   private:
00107 
00108     static const KernelDataType _LoGI[9];
00109     static const KernelDataType _LoGII[9];
00110     static const KernelDataType _LoGIII[25];
00112 
00114     IntField *_kernelExtFld;
00115 
00120     ML_MODULE_CLASS_HEADER(LoGFilter);
00121  };
00122 
00123 ML_END_NAMESPACE
00124 
00125 #endif //of __mlLoGFilter_H
00126 
00127