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

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

Implementation of local to point image processing interface. More...

#include <ImageLocalProcessingImpl.h>

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

List of all members.

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
 Convolve with a kernel.
virtual bool Convolve (AbstractImage &ioImage, const Math::ConvolutionKerneld &iKernel, double iThresholdMin, double iThresholdMax, bool ibAbsolute, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Convolve with a kernel on thresholded values.
virtual bool Convolve (AbstractImage &ioImage, const Math::ConvolutionKerneld &iKernel1, const Math::ConvolutionKerneld &iKernel2, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Convolve with two separable kernels [Wx1] x [1xH].
virtual bool ApplyGaussian (AbstractImage &ioImage, double iRadius, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Gaussian filter smooths the current image by convolving a Gaussian kernel sized by iRadius and computed variance based of radius.
virtual bool ApplyGaussian (AbstractImage &ioImage, double iRadius, double iVariance, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Gaussian filter smooths the current image by convolving a Gaussian kernel sized by iRadius and with the selected iVariance.
virtual bool ApplyGaussian (AbstractImage &ioImage, uint32 iWidth, uint32 iHeight, double iVariance, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Gaussian filter smooths the current image by convolving a Gaussian kernel(iWidth,iHeight) with the selected iVariance.
virtual bool ApplyBoxBlur (AbstractImage &ioImage, uint32 iWidth, uint32 iHeight, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Box blur filter, this is the blur filter with best performance with int64 kernel.
virtual bool ApplySelectiveBlur (AbstractImage &ioImage, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Adaptive blur filter, this is a blur filter that protects edges.
virtual bool ApplyBilateral (AbstractImage &ioImage, double iRadius, double iSigmaSpatial, double iSigmaRange, EBorderFill iBorder, uint32 iIteration, uint32 iChannelMask, ProgressNotifier &iNotifier) const
 Apply bilateral filter to an image by means of a nonlinear combination of nearby image values.

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)

Detailed Description

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

Implementation of local to point image processing interface.

IImageLocalProcessing.png

Member Function Documentation

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:
ioImageimage to be convolved.
iRadiussize of squared Gaussian kernel, the higher the slower.
iVarianceSpatialvariance of Gaussian spatial filter.
iVarianceRangevariance of Gaussian range filter.
iBorderhow to fill border.
iIterationnumber of iterations. Default is 1.
iChannelMaskselected channels to be processed. Default is all channels.
iNotifiera 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:
ioImageimage to blur.
iWidthkernel width.
iHeightkernel height.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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:
ioImageimage to be blured.
iRadiussize of squared Gaussian kernel.
iVariancevariance of Gaussian curve.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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:
ioImageimage to be blured.
iRadiussize of squared Gaussian kernel.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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:
ioImageimage to be blured.
iWidthwidth of Gaussian kernel.
iHeightheight of Gaussian kernel.
iVariancevariance of Gaussian curve.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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:
ioImageimage to blur.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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:
ioImageimage to be convolved.
iKernelthe convolution kernel [WxH].
iThresholdMinThreshold min to apply filter.
iThresholdMaxThreshold max to apply filter.
ibAbsolutetrue to use absolute value of convolution, false otherwise.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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,
bool  ibAbsolute,
EBorderFill  iBorder,
uint32  iIteration,
uint32  iChannelMask,
ProgressNotifier iNotifier 
) const [virtual]

Convolve with a kernel.

Parameters:
ioImageimage to be convolved.
iKernelthe convolution kernel [WxH].
ibAbsolutetrue to use absolute value of convolution, false otherwise.
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera 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:
ioImageimage to be convolved.
iKernel1a convolution kernel [Wx1] or [1xH].
iKernel2a convolution kernel, if iKernel1 is [Wx1] must be [1xH], else [Wx1].
iBorderhow to fill border.
iIterationnumber of iterations.
iChannelMaskselected channels to be processed. Default is all.
iNotifiera notifier for progression, log and cancel.
Returns:
Method running status.

Implements eLynx::Image::IImageLocalProcessing.


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

Generated on Thu Dec 9 2010 by doxygen 1.7.2