eLynx SDK
v3.3.0 C++ image processing API reference |
00001 //============================================================================ 00002 // IImageLocalProcessing.h Image.Component package 00003 //============================================================================ 00004 // Usage : interface for basic local to point image processing 00005 // 00006 // http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Characte.html 00007 // 00008 //---------------------------------------------------------------------------- 00009 // Copyright (C) 2006 by eLynx project 00010 // 00011 // This library is free software; you can redistribute it and/or 00012 // modify it under the terms of the GNU Library General Public 00013 // License as published by the Free Software Foundation; either 00014 // version 2 of the License, or (at your option) any later version. 00015 // 00016 // This library is distributed in the hope that it will be useful, 00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00019 // See the GNU Library General Public License for more details. 00020 //---------------------------------------------------------------------------- 00021 #ifndef __IImageLocalProcessing_h__ 00022 #define __IImageLocalProcessing_h__ 00023 00024 #include <elx/core/ProgressNotifier.h> 00025 #include <elx/math/ConvolutionKernel.h> 00026 #include <elx/image/ImageLib.h> 00027 #include <elx/image/ImageCommon.h> 00028 #include <elx/image/ImageImpl.h> 00029 00030 namespace eLynx { 00031 namespace Image { 00032 00036 ExportedByImage const char * elxToString(EBorderFill iBorder); 00037 00038 // Forward declaration 00039 class AbstractImage; 00040 00051 class ExportedByImage IImageLocalProcessing 00052 { 00053 public: 00054 virtual ~IImageLocalProcessing(); 00055 00065 virtual bool Convolve( 00066 AbstractImage& ioImage, 00067 const Math::ConvolutionKerneld& iKernel, 00068 bool ibAbsolute, 00069 EBorderFill iBorder, 00070 uint32 iIteration, 00071 uint32 iChannelMask, 00072 ProgressNotifier& iNotifier) const = 0; 00073 00085 virtual bool Convolve( 00086 AbstractImage& ioImage, 00087 const Math::ConvolutionKerneld& iKernel, 00088 double iThresholdMin, 00089 double iThresholdMax, 00090 bool ibAbsolute, 00091 EBorderFill iBorder, 00092 uint32 iIteration, 00093 uint32 iChannelMask, 00094 ProgressNotifier& iNotifier) const = 0; 00095 00111 virtual bool Convolve( 00112 AbstractImage& ioImage, 00113 const Math::ConvolutionKerneld& iKernel1, 00114 const Math::ConvolutionKerneld& iKernel2, 00115 EBorderFill iBorder, 00116 uint32 iIteration, 00117 uint32 iChannelMask, 00118 ProgressNotifier& iNotifier) const = 0; 00119 00120 00136 virtual bool ApplyBoxBlur( 00137 AbstractImage& ioImage, 00138 uint32 iWidth, 00139 uint32 iHeight, 00140 EBorderFill iBorder, uint32 iIteration, 00141 uint32 iChannelMask, 00142 ProgressNotifier& iNotifier) const = 0; 00143 00152 virtual bool ApplySelectiveBlur( 00153 AbstractImage& ioImage, 00154 EBorderFill iBorder, 00155 uint32 iIteration, 00156 uint32 iChannelMask, 00157 ProgressNotifier& iNotifier) const = 0; 00158 00170 virtual bool ApplyGaussian( 00171 AbstractImage& ioImage, 00172 uint32 iWidth, 00173 uint32 iHeight, 00174 double iVariance, 00175 EBorderFill iBorder, 00176 uint32 iIteration, 00177 uint32 iChannelMask, 00178 ProgressNotifier& iNotifier) const = 0; 00179 00190 virtual bool ApplyGaussian( 00191 AbstractImage& ioImage, 00192 double iRadius, 00193 double iVariance, 00194 EBorderFill iBorder, 00195 uint32 iIteration, 00196 uint32 iChannelMask, 00197 ProgressNotifier& iNotifier) const = 0; 00198 00208 virtual bool ApplyGaussian( 00209 AbstractImage& ioImage, 00210 double iRadius, 00211 EBorderFill iBorder, 00212 uint32 iIteration, 00213 uint32 iChannelMask, 00214 ProgressNotifier& iNotifier) const = 0; 00215 00241 virtual bool ApplyBilateral( 00242 AbstractImage& ioImage, 00243 double iRadius, 00244 double iVarianceSpatial, 00245 double iVarianceRange, 00246 EBorderFill iBorder, 00247 uint32 iIteration, 00248 uint32 iChannelMask, 00249 ProgressNotifier& iNotifier) const = 0; 00250 /* 00254 virtual bool ApplyKuwahara(AbstractImage& ioImage, 00255 uint32 iWidth, uint32 iHeight, 00256 EBorderFill iBorder, 00257 uint32 iChannelMask, ProgressNotifier& iNotifier) const = 0; 00258 */ 00259 }; 00260 00261 } // namespace Image 00262 } // namespace eLynx 00263 00264 #endif // __IImageLocalProcessing_h__