//******************************************************************* // Copyright (C) 2000 ImageLinks Inc. // // License: MIT // // See LICENSE.txt file in the top level directory for more details. // // Author: Garrett Potts // //******************************************************************* // $Id: ossimConvolutionSource.h 23664 2015-12-14 14:17:27Z dburken $ #ifndef ossimConvolutionSource_HEADER #define ossimConvolutionSource_HEADER #include #include #include using namespace std; #include class ossimTilePatch; class ossimDiscreteConvolutionKernel; class OSSIM_DLL ossimConvolutionSource : public ossimImageSourceFilter { public: ossimConvolutionSource(); ossimConvolutionSource(ossimImageSource* inputSource, const NEWMAT::Matrix& convolutionMatix); ossimConvolutionSource(ossimImageSource* inputSource, const vector& convolutionList); virtual void setConvolution(const double* kernel, int nrows, int ncols, bool doWeightedAverage=false); virtual void setConvolution(const NEWMAT::Matrix& convolutionMatrix, bool doWeightedAverage=false); virtual void setConvolutionList(const vector& convolutionList, bool doWeightedAverage=false); virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=NULL)const; /*! * Method to the load (recreate) the state of an object from a keyword * list. Return true if ok or false on error. */ virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=NULL); ossimRefPtr getTile(const ossimIrect& tileRect, ossim_uint32 resLevel=0); virtual void initialize(); protected: virtual ~ossimConvolutionSource(); void allocate(); ossimRefPtr theTile; ossim_int32 theMaxKernelWidth; ossim_int32 theMaxKernelHeight; std::vector theConvolutionKernelList; virtual void setKernelInformation(); virtual void deleteConvolutionList(); template void convolve(T dummyVariable, ossimRefPtr inputTile, ossimDiscreteConvolutionKernel* kernel); TYPE_DATA }; #endif /* #ifndef ossimConvolutionSource_HEADER */