eLynx SDK v3.0.1
C++ image processing API reference

eLynx::Image::ImageLocalProcessingImpl< Pixel > Class Template Reference

#include <ImageLocalProcessingImpl.h>

Inheritance diagram for eLynx::Image::ImageLocalProcessingImpl< Pixel >:

eLynx::Image::IImageLocalProcessing

List of all members.


Public Types

typedef Pixel Pixel_t

Public Member Functions

Convolution services
virtual bool Convolve (AbstractImage &ioImage, const Math::ConvolutionKerneld &iKernel, bool ibAbsolute, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool Convolve (AbstractImage &ioImage, const Math::ConvolutionKerneld &iKernel, double iThresholdMin, double iThresholdMax, bool ibAbsolute, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool Convolve (AbstractImage &ioImage, const Math::ConvolutionKerneld &iKernel1, const Math::ConvolutionKerneld &iKernel2, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool ApplyGaussian (AbstractImage &ioImage, double iRadius, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool ApplyGaussian (AbstractImage &ioImage, double iRadius, double iVariance, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool ApplyGaussian (AbstractImage &ioImage, uint32 iWidth, uint32 iHeight, double iVariance, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool ApplyBoxBlur (AbstractImage &ioImage, uint32 iWidth, uint32 iHeight, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool ApplySelectiveBlur (AbstractImage &ioImage, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool ApplyBilateral (AbstractImage &ioImage, double iRadius, double iSigmaSpatial, double iSigmaRange, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
virtual bool RemoveIsolated (AbstractImage &ioImage, uint32 iChannelMask, ProgressNotifier &iNotifier) const

Static Public Member Functions

Specialized static services
static bool Convolve3x3 (ImageImpl< Pixel > &ioImage, const Math::ConvolutionKerneld &iKernel, double iThresholdMin=0.0, double iThresholdMax=1.0, bool ibAbsolute=false, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool Convolve5x5 (ImageImpl< Pixel > &ioImage, const Math::ConvolutionKerneld &iKernel, double iThresholdMin=0.0, double iThresholdMax=1.0, bool ibAbsolute=false, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ConvolveWxH (ImageImpl< Pixel > &ioImage, const Math::ConvolutionKerneld &iKernel, double iThresholdMin=0.0, double iThresholdMax=1.0, bool ibAbsolute=false, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool Convolve (ImageImpl< Pixel > &ioImage, const Math::ConvolutionKerneld &iKernel, double iThresholdMin=0.0, double iThresholdMax=1.0, bool ibAbsolute=false, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool Convolve (ImageImpl< Pixel > &ioImage, const Math::ConvolutionKerneld &iKernel1, const Math::ConvolutionKerneld &iKernel2, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ApplyBoxBlur (ImageImpl< Pixel > &ioImage, uint32 iWidth, uint32 iHeight, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ApplySelectiveBlur (ImageImpl< Pixel > &ioImage, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ApplyGaussian (ImageImpl< Pixel > &ioImage, double iRadius=1.5, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ApplyGaussian (ImageImpl< Pixel > &ioImage, double iRadius, double iVariance, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ApplyGaussian (ImageImpl< Pixel > &ioImage, uint32 iWidth, uint32 iHeight, double iVariance, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool ApplyBilateral (ImageImpl< Pixel > &ioImage, double iRadius=2.5, double iSigmaSpatial=1.0, double iSigmaRange=1.0, EBorderFill iBorder=BF_Nearest, uint32 iIteration=1, uint32 iChannelMask=CM_All, ProgressNotifier &iNotifier=ProgressNotifier_NULL)
static bool RemoveIsolated (ImageImpl< Pixel > &ioImage, uint32 iChannelMask, ProgressNotifier &iNotifier)

Detailed Description

template<class Pixel>
class eLynx::Image::ImageLocalProcessingImpl< Pixel >

Implementation of local to point image processing interface.

IImageLocalProcessing.png

Definition at line 31 of file ImageLocalProcessingImpl.h.


Member Typedef Documentation

template<class Pixel >
typedef Pixel eLynx::Image::ImageLocalProcessingImpl< Pixel >::Pixel_t

Definition at line 34 of file ImageLocalProcessingImpl.h.


Member Function Documentation

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve ( AbstractImage ioImage,
const Math::ConvolutionKerneld iKernel,
bool  ibAbsolute,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Convolve with a kernel.

Parameters:
ioImage image to be convolved.
iKernel the convolution kernel [WxH].
ibAbsolute true to use absolute value of convolution, false otherwise.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve ( AbstractImage ioImage,
const Math::ConvolutionKerneld iKernel,
double  iThresholdMin,
double  iThresholdMax,
bool  ibAbsolute,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Convolve with a kernel on thresholded values.

Parameters:
ioImage image to be convolved.
iKernel the convolution kernel [WxH].
iThresholdMin Threshold min to apply filter.
iThresholdMax Threshold max to apply filter.
ibAbsolute true to use absolute value of convolution, false otherwise.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve ( AbstractImage ioImage,
const Math::ConvolutionKerneld iKernel1,
const Math::ConvolutionKerneld iKernel2,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Convolve with two separable kernels [Wx1] x [1xH]. Greatly improve performance compare to convolution with [WxH] filter. Algorithm descrition: Convolution with separative kernels

checker5x1-1x5-borders.png

iBorder effects
Using iBorder with BF_Cycle on a cyclic image, image remains cyclic after convolution.
Parameters:
ioImage image to be convolved.
iKernel1 a convolution kernel [Wx1] or [1xH].
iKernel2 a convolution kernel, if iKernel1 is [Wx1] must be [1xH], else [Wx1].
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyGaussian ( AbstractImage ioImage,
double  iRadius,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Gaussian filter smooths the current image by convolving a Gaussian kernel sized by iRadius and computed variance based of radius.

Parameters:
ioImage image to be blured.
iRadius size of squared Gaussian kernel.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyGaussian ( AbstractImage ioImage,
double  iRadius,
double  iVariance,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Gaussian filter smooths the current image by convolving a Gaussian kernel sized by iRadius and with the selected iVariance.

Parameters:
ioImage image to be blured.
iRadius size of squared Gaussian kernel.
iVariance variance of Gaussian curve.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyGaussian ( AbstractImage ioImage,
uint32  iWidth,
uint32  iHeight,
double  iVariance,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Gaussian filter smooths the current image by convolving a Gaussian kernel(iWidth,iHeight) with the selected iVariance.

Parameters:
ioImage image to be blured.
iWidth width of Gaussian kernel.
iHeight height of Gaussian kernel.
iVariance variance of Gaussian curve.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyBoxBlur ( AbstractImage ioImage,
uint32  iWidth,
uint32  iHeight,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Box blur filter, this is the blur filter with best performance with int64 kernel.
Implementation is based on this article:

[1]Fast Image Convolutions
by Wojciech Jarosz
SIGGRAPH 2001
Parameters:
ioImage image to blur.
iWidth kernel width.
iHeight kernel height.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplySelectiveBlur ( AbstractImage ioImage,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Adaptive blur filter, this is a blur filter that protects edges. Based on Selective blur by Daniel Lacroix.

Parameters:
ioImage image to blur.
iBorder how to fill border.
iIteration number of iterations.
iChannelMask selected channels to be processed. Default is all.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyBilateral ( AbstractImage ioImage,
double  iRadius,
double  iVarianceSpatial,
double  iVarianceRange,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Apply bilateral filter to an image by means of a nonlinear combination of nearby image values.

[1] Bilateral Filtering for Gray and Color Images
by C. Tomasi and R. Manduchi
[2] Fast Bilateral Filtering for the Display of High-Dynamic-Range Images
by Frédo Durand and Julie Dorsey
Laboratory for Computer Science, Massachusetts Institute of Technology
[3] SEPARABLE BILATERAL FILTERING FOR FAST VIDEO PREPROCESSING
by Tuan Q. Pham and Lucas J. van Vliet
Quantitative Imaging Group, Department of Imaging Science and Technology
Delft University of Technology
Parameters:
ioImage image to be convolved.
iRadius size of squared Gaussian kernel, the higher the slower.
iVarianceSpatial variance of Gaussian spatial filter.
iVarianceRange variance of Gaussian range filter.
iBorder how to fill border.
iIteration number of iterations. Default is 1.
iChannelMask selected channels to be processed. Default is all channels.
iNotifier a notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.

template<class Pixel >
virtual bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::RemoveIsolated ( AbstractImage ioImage,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve3x3 ( ImageImpl< Pixel > &  ioImage,
const Math::ConvolutionKerneld iKernel,
double  iThresholdMin = 0.0,
double  iThresholdMax = 1.0,
bool  ibAbsolute = false,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve5x5 ( ImageImpl< Pixel > &  ioImage,
const Math::ConvolutionKerneld iKernel,
double  iThresholdMin = 0.0,
double  iThresholdMax = 1.0,
bool  ibAbsolute = false,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ConvolveWxH ( ImageImpl< Pixel > &  ioImage,
const Math::ConvolutionKerneld iKernel,
double  iThresholdMin = 0.0,
double  iThresholdMax = 1.0,
bool  ibAbsolute = false,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve ( ImageImpl< Pixel > &  ioImage,
const Math::ConvolutionKerneld iKernel,
double  iThresholdMin = 0.0,
double  iThresholdMax = 1.0,
bool  ibAbsolute = false,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::Convolve ( ImageImpl< Pixel > &  ioImage,
const Math::ConvolutionKerneld iKernel1,
const Math::ConvolutionKerneld iKernel2,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyBoxBlur ( ImageImpl< Pixel > &  ioImage,
uint32  iWidth,
uint32  iHeight,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplySelectiveBlur ( ImageImpl< Pixel > &  ioImage,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyGaussian ( ImageImpl< Pixel > &  ioImage,
double  iRadius = 1.5,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyGaussian ( ImageImpl< Pixel > &  ioImage,
double  iRadius,
double  iVariance,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyGaussian ( ImageImpl< Pixel > &  ioImage,
uint32  iWidth,
uint32  iHeight,
double  iVariance,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::ApplyBilateral ( ImageImpl< Pixel > &  ioImage,
double  iRadius = 2.5,
double  iSigmaSpatial = 1.0,
double  iSigmaRange = 1.0,
EBorderFill  iBorder = BF_Nearest,
uint32  iIteration = 1,
uint32  iChannelMask = CM_All,
ProgressNotifier iNotifier = ProgressNotifier_NULL 
) [static]

template<class Pixel >
static bool eLynx::Image::ImageLocalProcessingImpl< Pixel >::RemoveIsolated ( ImageImpl< Pixel > &  ioImage,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) [static]


The documentation for this class was generated from the following file:

Generated on 14 Apr 2009 by doxygen 1.5.8