eLynx SDK
v3.3.0 C++ image processing API reference |
00001 //============================================================================ 00002 // IImageOperators.h Image.Component package 00003 //============================================================================ 00004 // Usage : interface for image processing operators 00005 //---------------------------------------------------------------------------- 00006 // Copyright (C) 2007 by eLynx project 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00016 // See the GNU Library General Public License for more details. 00017 //---------------------------------------------------------------------------- 00018 #ifndef __IImageOperators_h__ 00019 #define __IImageOperators_h__ 00020 00021 #include <vector> 00022 #include <boost/shared_ptr.hpp> 00023 #include <elx/image/ImageImpl.h> 00024 #include <elx/core/ProgressNotifier.h> 00025 00026 namespace eLynx { 00027 namespace Image { 00028 00030 enum EImageOperator 00031 { 00032 IOP_Set, 00033 IOP_Neg, 00034 IOP_Abs, 00035 IOP_Add, 00036 IOP_Sub, 00037 IOP_Mul, 00038 IOP_Div, 00039 IOP_Dif, 00040 IOP_Min, 00041 IOP_Max, 00042 IOP_Mean, 00043 IOP_Median, 00044 IOP_AddClamp, 00045 IOP_SubClamp, 00046 IOP_SubAbsClamp, 00047 IOP_MulClamp, 00048 IOP_Thresh 00049 }; 00050 00052 enum EImageListOperator 00053 { 00054 ILO_Add, 00055 ILO_Mul, 00056 ILO_Min, 00057 ILO_Max, 00058 ILO_Mean, 00059 ILO_Median, 00060 ILO_Entropy, 00061 ILO_MeanClip, 00062 ILO_MedianClip, 00063 ILO_WeightedClip 00064 }; 00065 00066 00067 // Forward declaration 00068 class AbstractImage; 00069 00073 00074 class ExportedByImage IImageOperators 00075 { 00076 public: 00077 virtual ~IImageOperators(); 00078 00086 virtual bool Operator(AbstractImage& ioImage, 00087 EImageOperator iOperator, 00088 double iValue, 00089 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00090 00099 virtual bool Operator(AbstractImage& ioImage, 00100 EImageOperator iOperator, 00101 const AbstractImage& iImage, 00102 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00103 00113 virtual bool Operator(AbstractImage& ioImage, 00114 EImageOperator iOperator, 00115 const AbstractImage& iImage, 00116 const ImageLub& iImageMask, 00117 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00118 00127 virtual bool Operator(AbstractImage& ioImage, 00128 EImageOperator iOperator, 00129 const std::vector<const AbstractImage*>& iImageList, 00130 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00131 00145 virtual boost::shared_ptr< AbstractImage > 00146 CreateImage( 00147 EImageListOperator iOperator, 00148 const std::vector< const AbstractImage* >& iImageList, 00149 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00150 00168 virtual boost::shared_ptr< AbstractImage > 00169 CreateClipped( 00170 EImageListOperator iOperator, 00171 const std::vector< const AbstractImage* >& iImageList, 00172 uint32 iIteration, double iKappa, 00173 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00174 00183 virtual boost::shared_ptr< AbstractImage > 00184 CreateWeightedEntropy( 00185 const std::vector< const AbstractImage* >& iImageList, 00186 uint32 iW, uint32 iH, 00187 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00188 }; 00189 00190 } // namespace Image 00191 } // namespace eLynx 00192 00193 #endif // __IImageOperators_h__