eLynx SDK
v3.3.0 C++ image processing API reference |
00001 //============================================================================ 00002 // AbstractImageManager.h Image.Component package 00003 //============================================================================ 00004 // Usage : services for abstract images 00005 //---------------------------------------------------------------------------- 00006 // Copyright (C) 2006 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 __AbstractImageManager_h__ 00019 #define __AbstractImageManager_h__ 00020 00021 #include <elx/core/ProgressNotifier.h> 00022 #include <elx/math/TransfertFunction.h> 00023 #include "ImageHandlerImpl.h" 00024 #include "Bayer.h" 00025 00026 namespace eLynx { 00027 namespace Image { 00028 00029 //---------------------------------------------------------------------------- 00031 //---------------------------------------------------------------------------- 00033 00037 ExportedByImage const IImageHandler& elxGetImageHandler(EPixelFormat iPixelFormat); 00038 00042 ExportedByImage const IImageHandler& elxGetImageHandler(const AbstractImage& iImage); 00043 00047 ExportedByImage const IImageGeometry& elxGetGeometryHandler(EPixelFormat iPixelFormat); 00048 00052 ExportedByImage const IImageGeometry& elxGetGeometryHandler(const AbstractImage& iImage); 00053 00057 ExportedByImage const IImageAnalyse& elxGetAnalyseHandler(EPixelFormat iPixelFormat); 00058 00062 ExportedByImage const IImageAnalyse& elxGetAnalyseHandler(const AbstractImage& iImage); 00063 00064 ExportedByImage const IImageOperators& elxGetOperatorsHandler(EPixelFormat); 00065 ExportedByImage const IImageOperators& elxGetOperatorsHandler(const AbstractImage&); 00066 00067 ExportedByImage const IImagePointProcessing& elxGetPointToPointHandler(EPixelFormat); 00068 ExportedByImage const IImagePointProcessing& elxGetPointToPointHandler(const AbstractImage&); 00069 00070 ExportedByImage const IImageLocalProcessing& elxGetLocalToPointHandler(EPixelFormat); 00071 ExportedByImage const IImageLocalProcessing& elxGetLocalToPointHandler(const AbstractImage&); 00072 00073 ExportedByImage const IImageGlobalProcessing& elxGetGlobalToPointHandler(EPixelFormat); 00074 ExportedByImage const IImageGlobalProcessing& elxGetGlobalToPointHandler(const AbstractImage&); 00075 00076 ExportedByImage const IImageEdgeProcessing& elxGetEdgeProcessingHandler(EPixelFormat); 00077 ExportedByImage const IImageEdgeProcessing& elxGetEdgeProcessingHandler(const AbstractImage&); 00078 00079 ExportedByImage const IImageMorphologicalProcessing& elxGetMorphologicalHandler(EPixelFormat); 00080 ExportedByImage const IImageMorphologicalProcessing& elxGetMorphologicalHandler(const AbstractImage&); 00081 00082 ExportedByImage const IImageMiscProcessing& elxGetMiscHandler(EPixelFormat); 00083 ExportedByImage const IImageMiscProcessing& elxGetMiscHandler(const AbstractImage&); 00084 00085 ExportedByImage const IImageRasterization& elxGetRasterizationHandler(EPixelFormat); 00086 ExportedByImage const IImageRasterization& elxGetRasterizationHandler(const AbstractImage&); 00087 00088 ExportedByImage const IImageRestoration& elxGetRestorationHandler(EPixelFormat); 00089 ExportedByImage const IImageRestoration& elxGetRestorationHandler(const AbstractImage&); 00090 00092 00093 00094 00095 //---------------------------------------------------------------------------- 00097 //---------------------------------------------------------------------------- 00099 00105 ExportedByImage boost::shared_ptr<AbstractImage> 00106 elxCreateImage( 00107 EPixelFormat iPixelFormat, 00108 uint32 iWidth, 00109 uint32 iHeight); 00110 00114 ExportedByImage boost::shared_ptr<AbstractImage> 00115 elxCreateImage( 00116 const AbstractImage& iImage); 00117 00124 ExportedByImage boost::shared_ptr<AbstractImage> 00125 elxCreateImage( 00126 const AbstractImage& iImage, 00127 EResolution iResolution, 00128 bool ibScaled = true); 00129 00135 ExportedByImage boost::shared_ptr<AbstractImage> 00136 elxCreateImage( 00137 const AbstractImage& iImage, 00138 bool ibBlendAlpha); 00139 00146 ExportedByImage boost::shared_ptr<AbstractImage> 00147 elxCreateImage( 00148 const AbstractImage& iImage, 00149 EColorSpace iColorSpace, 00150 bool ibBlendAlpha = false); 00151 00158 ExportedByImage boost::shared_ptr<AbstractImage> 00159 elxCreateImage( 00160 const AbstractImage& iImage, 00161 EPixelFormat iPixelFormat, 00162 bool ibScaled = true, 00163 bool ibBlendAlpha = false); 00164 00165 // Abstract Grey image factory from abstract color image. 00166 ExportedByImage boost::shared_ptr<AbstractImage> 00167 elxCreateGreyImage( 00168 const AbstractImage& iImage, 00169 EColorToGreyConversion iMethod = CGC_Default, 00170 bool ibBlendAlpha = false, 00171 bool ibRemoveAlpha = false); 00172 00173 // Abstract color image factory from abstract Grey image. 00174 ExportedByImage boost::shared_ptr<AbstractImage> 00175 elxCreateColorImage( 00176 const AbstractImage& iImage, 00177 EColorSpace iColorSpace = CS_RGB, 00178 bool ibBlendAlpha = false, 00179 bool ibRemoveAlpha = false, 00180 EGreyToColorConversion iMethod = GCC_Default); 00181 00182 // Abstract color image factory from abstract Grey image + Bayer matrix. 00183 ExportedByImage boost::shared_ptr<AbstractImage> 00184 elxCreateColorImage( 00185 const AbstractImage& iImage, 00186 EBayerMatrix iBayer, 00187 EBayerToColorConversion iMethod = BCC_Default); 00188 00189 ExportedByImage boost::shared_ptr<AbstractImage> 00190 elxCreateAlphaImage( 00191 const AbstractImage& iImage, 00192 bool ibRGB, 00193 EColorToGreyConversion iMethod = CGC_Default); 00194 00195 ExportedByImage boost::shared_ptr<ImageRGBub> 00196 elxCreateImageRGBub( 00197 const AbstractImage& iImage, 00198 const Math::AbstractTransfertFunction * iprFunction = NULL, 00199 uint32 iChannelMask = CM_All, 00200 bool ibBlendAlpha = false); 00201 00202 ExportedByImage boost::shared_ptr<ImageRGBub> 00203 elxCreateImageRGBub( 00204 const AbstractImage& iImage, 00205 const Math::AbstractTransfertFunction * iprFunction, 00206 EBayerToColorConversion iMethod, 00207 EBayerMatrix iBayer, 00208 uint32 iChannelMask = CM_All); 00209 00210 ExportedByImage boost::shared_ptr<AbstractImage> 00211 elxCreateImageRGB( 00212 const AbstractImage& iImage, 00213 EBayerToColorConversion iMethod, 00214 EBayerMatrix iBayer, 00215 uint32 iChannelMask = CM_All); 00216 00217 ExportedByImage boost::shared_ptr<AbstractImage> 00218 elxCreateImageRGBGrey( 00219 const AbstractImage& iImage, 00220 uint32 iChannel); 00221 00223 00224 00225 //---------------------------------------------------------------------------- 00227 //---------------------------------------------------------------------------- 00228 00238 ExportedByImage bool 00239 elxSplit( 00240 const AbstractImage& iImage, 00241 AbstractImage*& opsPlane1, 00242 AbstractImage*& opsPlane2); 00243 00258 ExportedByImage bool 00259 elxSplit( 00260 const AbstractImage& iImage, 00261 AbstractImage*& opsPlane1, 00262 AbstractImage*& opsPlane2, 00263 AbstractImage*& opsPlane3); 00264 00274 ExportedByImage bool 00275 elxSplit( 00276 const AbstractImage& iImage, 00277 AbstractImage*& opsPlane1, 00278 AbstractImage*& opsPlane2, 00279 AbstractImage*& opsPlane3, 00280 AbstractImage*& opsPlane4); 00282 00283 00290 ExportedByImage boost::shared_ptr<AbstractImage> 00291 elxCreateResized( 00292 const AbstractImage& iImage, 00293 uint32 iWidth, 00294 uint32 iHeight, 00295 ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00296 00302 ExportedByImage boost::shared_ptr<AbstractImage> 00303 elxCreateZoomed( 00304 const AbstractImage& iImage, 00305 uint32 iZoom, 00306 ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00307 00315 ExportedByImage boost::shared_ptr<AbstractImage> 00316 elxCreateThumbnailImage( 00317 const AbstractImage& iImage, 00318 uint32 iWidth, 00319 uint32 iHeight, 00320 bool ibConverveAspectRatio = true, 00321 ProgressNotifier& iNotifier=ProgressNotifier_NULL); 00322 00323 ExportedByImage boost::shared_ptr<AbstractImage> 00324 elxCreateChannel( 00325 const AbstractImage& iImage, 00326 uint32 iChannel); 00327 00328 ExportedByImage bool 00329 elxFilterChannel( 00330 AbstractImage& ioImage, 00331 uint32 iChannelMask); 00332 00333 /* 00334 ExportedByImage bool 00335 elxSetChannel( 00336 AbstractImage& ioImage, 00337 const AbstractImage& iPlane, 00338 uint32 iChannel); 00339 */ 00340 } // namespace Image 00341 } // namespace eLynx 00342 00343 #endif // __AbstractImageManager_h__