//******************************************************************* // Copyright (C) 2005 Garrett Potts // // LICENSE: See top level LICENSE.txt // // Author: Garrett Potts // //******************************************************************* // $Id: ossimSFIMFusion.h 23666 2015-12-14 20:01:22Z rashadkm $ #ifndef ossimSFIMFusion_HEADER #define ossimSFIMFusion_HEADER #include #include #include #include /** * This class imlements the fusion algorithm from the paper: * * "Smoothing Filter-based Intesity Modulation: a spectral preserve * image fusion technique for improving spatial details" * * Pulished in INT. J. Remote Sensing, 2000, Vol. 21 NO. 18, 3461-3472 * * By J. G. LIU * * * Auther: Garrett Potts * LICENSE: MIT */ class OSSIM_DLL ossimSFIMFusion : public ossimFusionCombiner, public ossimAdjustableParameterInterface { public: ossimSFIMFusion(); virtual ossimRefPtr getTile(const ossimIrect& rect, ossim_uint32 resLevel=0); virtual void initialize(); virtual ossimObject* getBaseObject() { return this; } virtual const ossimObject* getBaseObject()const { return this; } virtual void initAdjustableParameters(); virtual void adjustableParametersChanged(); virtual void setProperty(ossimRefPtr property); virtual ossimRefPtr getProperty(const ossimString& name)const; virtual void getPropertyNames(std::vector& propertyNames)const; virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=0) const; virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=0); protected: virtual ~ossimSFIMFusion(); void setFilters(); bool computeRegression(ossim_float64& slopeResult, const ossimIpt& origin, ossimRefPtr panData, ossimRefPtr colorData, ossim_uint32 colorBandIdx); ossim_float64 theLowPassKernelWidth; ossim_uint32 theHighPassKernelWidth; // These are low and high pass filters for the single pan band // ossimRefPtr theLowPassFilter; ossimRefPtr theHighPassFilter; ossimRefPtr theNormLowPassTile; ossimRefPtr theNormHighPassTile; ossimRefPtr theNormColorData; NEWMAT::Matrix theHighPassMatrix; bool theAutoAdjustScales; TYPE_DATA }; #endif