eLynx SDK
v3.0.1 C++ image processing API reference |
00001 //============================================================================ 00002 // ImageMiscProcessingImpl.h Image.Component package 00003 //============================================================================ 00004 // Usage : image misceallenous processing interface implementation 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 __ImageMiscProcessingImpl_h__ 00019 #define __ImageMiscProcessingImpl_h__ 00020 00021 #include <elx/image/IImageMiscProcessing.h> 00022 00023 namespace eLynx { 00024 namespace Image { 00025 00029 00030 template <class Pixel> 00031 class ExportedByImage ImageMiscProcessingImpl : public IImageMiscProcessing 00032 { 00033 public: 00034 typedef Pixel Pixel_t; 00035 typedef typename Pixel::type T; 00036 00037 virtual bool ApplyDigitalDevelopment(AbstractImage& ioImage, 00038 double iBackground, double iCrossOver, double iScale, 00039 double iVariance, EColorEmphasis iEmphasis, 00040 uint32 iChannelMask, ProgressNotifier& iNotifier) const; 00041 /* 00042 virtual boost::shared_ptr<AbstractImage> ApplyChannelSubstitution( 00043 const AbstractImage& iHighResGrayImage, 00044 const AbstractImage& iLowResColorImage, 00045 EChannelSubstitution iSubstitution, double iBlendScalar, 00046 ProgressNotifier& iNotifier) const; 00047 */ 00048 virtual bool ApplyRotationalGradient(AbstractImage& ioImage, 00049 uint32 iXc, uint32 iYc, 00050 double iRadialShift, double iRotationalShift, bool ibInterpolation, 00051 uint32 iChannelMask, ProgressNotifier& iNotifier) const; 00052 00053 virtual bool RemoveGradient(AbstractImage& ioImage, AbstractImage& oBackground, 00054 const Math::Point2iList& iPoints, EGradientMethod iMethod, 00055 uint32 iChannelMask, ProgressNotifier& iNotifier) const; 00056 00057 virtual bool Debloom(AbstractImage& ioImage, 00058 uint32 iChannelMask, ProgressNotifier& iNotifier) const; 00059 00060 00063 static bool ApplyDigitalDevelopment(ImageImpl<Pixel>& ioImage, 00064 double iBackground, double iCrossOver, double iScale, 00065 double iVariance, EColorEmphasis iEmphasis, 00066 uint32 iChannelMask=CM_All, ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00067 /* 00068 static boost::shared_ptr<AbstractImage> ApplyChannelSubstitution( 00069 const ImageImpl<Pixel>& iHighResGrayImage, 00070 const ImageImpl<Pixel>& iLowResColorImage, 00071 EChannelSubstitution iSubstitution, double iBlendScalar, 00072 ProgressNotifier& iNotifier); 00073 */ 00074 static bool ApplyRotationalGradient(ImageImpl<Pixel>& ioImage, 00075 uint32 iX, uint32 iY, 00076 double iRadialShift, double iDegrees, bool ibInterpolation = true, 00077 uint32 iChannelMask=CM_All, ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00078 00079 static bool RemoveGradient(ImageImpl<Pixel>& ioImage, ImageImpl<Pixel>& oBackground, 00080 const Math::Point2iList& iPoints, EGradientMethod iMethod, 00081 uint32 iChannelMask=CM_All, ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00082 00083 static bool Debloom(ImageImpl<Pixel>& ioImage, 00084 uint32 iChannelMask=CM_All, ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00086 }; 00087 00088 } // namespace Image 00089 } // namespace eLynx 00090 00091 #endif // __ImageMiscProcessingImpl_h__