MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //------------------------------------------------------------------------- 00005 00010 //------------------------------------------------------------------------- 00011 // Prevent multiple including of this file. 00012 #if !defined (__mlConvolutionFilter_H) 00013 #define __mlConvolutionFilter_H 00014 00015 // ML-includes 00016 #ifndef __mlInitSystemKernel_H 00017 #include "mlInitSystemKernel.h" 00018 #endif 00019 #ifndef __mlKernel_H 00020 #include "mlKernel.h" 00021 #endif 00022 #ifndef __mlKernelModule_H 00023 #include "mlKernelModule.h" 00024 #endif 00025 00026 ML_START_NAMESPACE 00027 00028 //-------------------------------------------------- 00036 //-------------------------------------------------- 00037 class MLKERNELEXPORT ConvolutionFilter : public KernelModule{ 00038 00039 public: 00040 00041 //-------------------------------------------------------------------------------------------------------- 00127 //-------------------------------------------------------------------------------------------------------- 00128 enum ConvKernelTypes { 00129 AVERAGE_33_KERNEL = 0, 00130 AVERAGE_55_KERNEL , 00131 AVERAGE_77_KERNEL , 00132 AVERAGE_1010_KERNEL , 00133 AVERAGE_2525_KERNEL , 00134 GAUSS_33_KERNEL , 00135 GAUSS_55_KERNEL , 00136 LAPLACE_KERNEL , 00137 LAPLACE_2_KERNEL , 00138 SOBEL_1_KERNEL , 00139 SOBEL_2_KERNEL , 00140 SOBEL_3_KERNEL , 00141 SOBEL_4_KERNEL , 00142 ID_KERNEL , 00143 FROM_EXTERNAL_KERNEL , 00144 00145 NUM_CONV_KERNEL_TYPES 00146 }; 00147 00149 static const char* const ConvKernelNames[]; 00150 00151 //------------------------------------------------------------------- 00167 //------------------------------------------------------------------- 00168 ConvolutionFilter(); 00169 00171 EnumField *getConvKernelFld() const { return _convKernelFld; } 00172 00173 protected: 00175 virtual void handleNotification(Field* field); 00176 00179 virtual void _userKernelPostUpdate(); 00180 00183 virtual void calculateOutputImageProperties(int outIndex); 00184 00190 CALC_ROW_H(); 00191 00194 template <typename DATATYPE> 00195 void calcRow(MLsoffset *indexTab, 00196 size_t indexTabSize, 00197 MLsoffset srcVoxelOffset, 00198 size_t numVox, 00199 DATATYPE *inCursor, 00200 DATATYPE *outCursor, 00201 const ImageVector &/*rowStart*/); 00202 00203 private: 00205 EnumField *_convKernelFld; 00206 00211 ML_MODULE_CLASS_HEADER(ConvolutionFilter); 00212 }; 00213 00214 ML_END_NAMESPACE 00215 00216 #endif //of __mlConvolutionFilter_H 00217 00218