00001
00024 #ifndef INC_SPATMOD_IMAGEFILTERMOSAIC_H
00025 #define INC_SPATMOD_IMAGEFILTERMOSAIC_H
00026
00027 #ifndef INC_SPATMOD_IMAGEFILTER_H
00028 #include <spatmod/imagefilter.h>
00029 #endif
00030
00031 #ifndef INC_SPATMOD_IMAGERESAMPLEMETHOD_H
00032 #include <spatmod/imageresamplemethod.h>
00033 #endif
00034
00035 class REGION2D;
00036
00037 namespace SPATMOD {
00038 namespace IMAGE {
00039
00040 class BUFFER;
00041 class SAMPLEITERATOR;
00042 class SAMPLEITERATOR_CONST;
00043
00044
00045
00054 class FILTER_MOSAIC : public FILTER {
00055 public:
00056
00057 enum FEATHERMETHOD {
00058 FEATHERMETHOD_None,
00059 FEATHERMETHOD_Linear,
00060 FEATHERMETHOD_Nonlinear
00061 };
00062
00063 enum OVERLAPMETHOD {
00064 OVERLAPMETHOD_First,
00065 OVERLAPMETHOD_Last,
00066 OVERLAPMETHOD_Minimum,
00067 OVERLAPMETHOD_Maximum,
00068 OVERLAPMETHOD_ClosestToSpecified
00069 };
00070
00072 FILTER_MOSAIC (
00073 STAGE_ARRAY& PreviousStages,
00074 bool TakeOwnership,
00075 const DIMENSIONS& Dimensions,
00076 const GEOREFERENCE& Georeference,
00077 RESAMPLEMETHOD ResampleMethod,
00078 OVERLAPMETHOD OverlapMethod
00079 );
00080
00082 FILTER_MOSAIC (
00083 STAGE_ARRAY& PreviousStages,
00084 bool TakeOwnership,
00085 const BASE& RefImage,
00086 RESAMPLEMETHOD ResampleMethod,
00087 OVERLAPMETHOD OverlapMethod
00088 );
00089
00090
00091 virtual ~FILTER_MOSAIC ();
00092
00095 ERRVALUE SetPixelTestClosest (
00096 const PIXEL& PixelTestClosest
00097 );
00098
00103 void SetAccuracy (
00104 double accuracy
00105 ) { m_Accuracy = accuracy; }
00106
00107 private:
00108 #ifndef GENERATING_DOXYGEN_OUTPUT
00109 class INPUTLIST;
00110
00111 RESAMPLEMETHOD m_ResampleMethod;
00112 OVERLAPMETHOD m_OverlapMethod;
00113 double m_Accuracy;
00114 PIXEL m_PixelTestClosest;
00115 INT32 m_MaxColumnsPull;
00116 INT32 m_MaxRowsPull;
00117 double *m_dValueTestClosest;
00118 DRECT2D *m_ExtentsInputInOutput;
00119 SAMPLEITERATOR_CONST *m_itInput;
00120 SAMPLEITERATOR *m_itOutput;
00121 INPUTLIST *m_pInputListLRU;
00122 int m_MaxListSizeLRU;
00123
00124 void InitPixelTestClosest ();
00125 ERRVALUE ProcessOverlap (BUFFER& BufferOutput, const BUFFER& BufferInput, INT32 NumColumns, INT32 NumRows) const;
00126 ERRVALUE RemoveLastFromLRU ();
00127
00128
00129 virtual ERRVALUE v_Initialize ();
00130 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00131 virtual ERRVALUE v_PullEnd ();
00132 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00133 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00134
00135
00136 FILTER_MOSAIC (const FILTER_MOSAIC&);
00137 FILTER_MOSAIC& operator= (const FILTER_MOSAIC&);
00138 #endif // GENERATING_DOXYGEN_OUTPUT
00139
00140 };
00141
00142
00143
00144 }
00145 }
00146
00147 #endif // INC_SPATMOD_IMAGEFILTERMOSAIC_H
00148