ViSP  2.9.0
vpImageFilter Class Reference

#include <vpImageFilter.h>

Static Public Member Functions

static void canny (const vpImage< unsigned char > &I, vpImage< unsigned char > &Ic, const unsigned int gaussianFilterSize, const double thresholdCanny, const unsigned int apertureSobel)
 
template<class T >
static double derivativeFilterX (const vpImage< T > &I, const unsigned int r, const unsigned int c)
 
template<class T >
static double derivativeFilterY (const vpImage< T > &I, const unsigned int r, const unsigned int c)
 
template<class T >
static double derivativeFilterX (const vpImage< T > &I, const unsigned int r, const unsigned int c, const double *filter, const unsigned int size)
 
template<class T >
static double derivativeFilterY (const vpImage< T > &I, const unsigned int r, const unsigned int c, const double *filter, const unsigned int size)
 
static void filter (const vpImage< double > &I, vpImage< double > &Iu, vpImage< double > &Iv, const vpMatrix &M)
 
static void filter (const vpImage< unsigned char > &I, vpImage< double > &If, const vpMatrix &M)
 
static void filter (const vpImage< unsigned char > &I, vpImage< double > &GI, const double *filter, unsigned int size)
 
static void filter (const vpImage< double > &I, vpImage< double > &GI, const double *filter, unsigned int size)
 
static unsigned char filterGaussXPyramidal (const vpImage< unsigned char > &I, unsigned int i, unsigned int j)
 
static unsigned char filterGaussYPyramidal (const vpImage< unsigned char > &I, unsigned int i, unsigned int j)
 
static void filterX (const vpImage< unsigned char > &I, vpImage< double > &dIx, const double *filter, unsigned int size)
 
static void filterX (const vpImage< double > &I, vpImage< double > &dIx, const double *filter, unsigned int size)
 
static double filterX (const vpImage< unsigned char > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterXLeftBorder (const vpImage< unsigned char > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterXRightBorder (const vpImage< unsigned char > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterX (const vpImage< double > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterXLeftBorder (const vpImage< double > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterXRightBorder (const vpImage< double > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static void filterY (const vpImage< unsigned char > &I, vpImage< double > &dIx, const double *filter, unsigned int size)
 
static void filterY (const vpImage< double > &I, vpImage< double > &dIx, const double *filter, unsigned int size)
 
static double filterY (const vpImage< unsigned char > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterYTopBorder (const vpImage< unsigned char > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterYBottomBorder (const vpImage< unsigned char > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterYTopBorder (const vpImage< double > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterYBottomBorder (const vpImage< double > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static double filterY (const vpImage< double > &I, unsigned int r, unsigned int c, const double *filter, unsigned int size)
 
static void gaussianBlur (const vpImage< unsigned char > &I, vpImage< double > &GI, unsigned int size=7, double sigma=0., bool normalize=true)
 
template<class T >
static double gaussianFilter (const vpImage< T > &fr, const unsigned int r, const unsigned int c)
 
static void getGaussPyramidal (const vpImage< unsigned char > &I, vpImage< unsigned char > &GI)
 
static void getGaussXPyramidal (const vpImage< unsigned char > &I, vpImage< unsigned char > &GI)
 
static void getGaussYPyramidal (const vpImage< unsigned char > &I, vpImage< unsigned char > &GI)
 
static void getGaussianKernel (double *filter, unsigned int size, double sigma=0., bool normalize=true)
 
static void getGaussianDerivativeKernel (double *filter, unsigned int size, double sigma=0., bool normalize=true)
 
static void getGradX (const vpImage< unsigned char > &I, vpImage< double > &dIx)
 
static void getGradX (const vpImage< unsigned char > &I, vpImage< double > &dIx, const double *filter, unsigned int size)
 
static void getGradX (const vpImage< double > &I, vpImage< double > &dIx, const double *filter, unsigned int size)
 
static void getGradXGauss2D (const vpImage< unsigned char > &I, vpImage< double > &dIx, const double *gaussianKernel, const double *gaussianDerivativeKernel, unsigned int size)
 
static void getGradY (const vpImage< unsigned char > &I, vpImage< double > &dIy)
 
static void getGradY (const vpImage< unsigned char > &I, vpImage< double > &dIy, const double *filter, unsigned int size)
 
static void getGradY (const vpImage< double > &I, vpImage< double > &dIy, const double *filter, unsigned int size)
 
static void getGradYGauss2D (const vpImage< unsigned char > &I, vpImage< double > &dIy, const double *gaussianKernel, const double *gaussianDerivativeKernel, unsigned int size)
 

Detailed Description

Various image filter, convolution, etc...

Definition at line 71 of file vpImageFilter.h.

Member Function Documentation

void vpImageFilter::canny ( const vpImage< unsigned char > &  Isrc,
vpImage< unsigned char > &  Ires,
const unsigned int  gaussianFilterSize,
const double  thresholdCanny,
const unsigned int  apertureSobel 
)
static

Apply the Canny edge operator on the image Isrc and return the resulting image Ires.

The following example shows how to use the method:

#include <visp/vpConfig.h>
#include <visp/vpImage.h>
#include <visp/vpImageFilter.h>
int main()
{
#if VISP_HAVE_OPENCV_VERSION >= 0x020100 // Cany uses OpenCV v>=2.1.0
// Constants for the Canny operator.
const unsigned int gaussianFilterSize = 5;
const double thresholdCanny = 15;
const unsigned int apertureSobel = 3;
// Image for the Canny edge operator
//First grab the source image Isrc.
//Apply the Canny edge operator and set the Icanny image.
vpImageFilter::canny(Isrc, Icanny, gaussianFilterSize, thresholdCanny, apertureSobel);
#endif
return (0);
}
Parameters
Isrc: Image to apply the Canny edge detector to.
Ires: Filtered image (255 means an edge, 0 otherwise).
gaussianFilterSize: The size of the mask of the Gaussian filter to apply (an odd number).
thresholdCanny: The threshold for the Canny operator. Only value greater than this value are marked as an edge).
apertureSobel: Size of the mask for the Sobel operator (odd number).
Examples:
tutorial-image-filter.cpp.

Definition at line 176 of file vpImageFilter.cpp.

References vpImageConvert::convert().

template<class T >
static double vpImageFilter::derivativeFilterX ( const vpImage< T > &  I,
const unsigned int  r,
const unsigned int  c 
)
inlinestatic

Apply a 1x3 derivative filter to an image pixel.

Parameters
I: Image to filter
rcoordinates (row) of the pixel
c: coordinates (column) of the pixel

Definition at line 91 of file vpImageFilter.h.

Referenced by vpFeatureLuminance::buildFrom(), and getGradX().

template<class T >
static double vpImageFilter::derivativeFilterX ( const vpImage< T > &  I,
const unsigned int  r,
const unsigned int  c,
const double *  filter,
const unsigned int  size 
)
inlinestatic

Apply a 1 x size Derivative Filter in X to an image pixel.

Parameters
I: Image to filter
r: coordinates (row) of the pixel
c: coordinates (column) of the pixel
filter: coefficients of the filter to be initialized using vpImageFilter::getGaussianDerivativeKernel().
size: size of the filter
See also
vpImageFilter::getGaussianDerivativeKernel()

Definition at line 128 of file vpImageFilter.h.

template<class T >
static double vpImageFilter::derivativeFilterY ( const vpImage< T > &  I,
const unsigned int  r,
const unsigned int  c 
)
inlinestatic

Apply a 3x1 derivative filter to an image pixel.

Parameters
I: Image to filter
r: coordinates (row) of the pixel
c: coordinates (column) of the pixel

Definition at line 107 of file vpImageFilter.h.

Referenced by vpFeatureLuminance::buildFrom(), and getGradY().

template<class T >
static double vpImageFilter::derivativeFilterY ( const vpImage< T > &  I,
const unsigned int  r,
const unsigned int  c,
const double *  filter,
const unsigned int  size 
)
inlinestatic

Apply a size x 1 Derivative Filter in Y to an image pixel.

Parameters
I: Image to filter
r: coordinates (row) of the pixel
c: coordinates (column) of the pixel
filter: coefficients of the filter to be initialized using vpImageFilter::getGaussianDerivativeKernel().
size: size of the filter
See also
vpImageFilter::getGaussianDerivativeKernel()

Definition at line 158 of file vpImageFilter.h.

void vpImageFilter::filter ( const vpImage< unsigned char > &  I,
vpImage< double > &  If,
const vpMatrix M 
)
static

Apply a filter to an image.

Parameters
I: Image to filter
If: Filtered image.
M: Filter coefficients.

Definition at line 59 of file vpImageFilter.cpp.

References vpImage< Type >::getHeight(), vpMatrix::getRows(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().

void vpImageFilter::filter ( const vpImage< unsigned char > &  I,
vpImage< double > &  GI,
const double *  filter,
unsigned int  size 
)
static

Apply a separable filter.

Definition at line 199 of file vpImageFilter.cpp.

References vpImage< Type >::destroy(), filterX(), and filterY().

void vpImageFilter::filter ( const vpImage< double > &  I,
vpImage< double > &  GI,
const double *  filter,
unsigned int  size 
)
static

Apply a separable filter.

Definition at line 210 of file vpImageFilter.cpp.

References vpImage< Type >::destroy(), filterX(), and filterY().

static unsigned char vpImageFilter::filterGaussXPyramidal ( const vpImage< unsigned char > &  I,
unsigned int  i,
unsigned int  j 
)
inlinestatic

Definition at line 188 of file vpImageFilter.h.

Referenced by getGaussXPyramidal().

static unsigned char vpImageFilter::filterGaussYPyramidal ( const vpImage< unsigned char > &  I,
unsigned int  i,
unsigned int  j 
)
inlinestatic

Definition at line 192 of file vpImageFilter.h.

Referenced by getGaussYPyramidal().

void vpImageFilter::filterX ( const vpImage< unsigned char > &  I,
vpImage< double > &  dIx,
const double *  filter,
unsigned int  size 
)
static
void vpImageFilter::filterX ( const vpImage< double > &  I,
vpImage< double > &  dIx,
const double *  filter,
unsigned int  size 
)
static
static double vpImageFilter::filterX ( const vpImage< unsigned char > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 200 of file vpImageFilter.h.

static double vpImageFilter::filterX ( const vpImage< double > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 252 of file vpImageFilter.h.

static double vpImageFilter::filterXLeftBorder ( const vpImage< unsigned char > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 216 of file vpImageFilter.h.

Referenced by filterX().

static double vpImageFilter::filterXLeftBorder ( const vpImage< double > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 267 of file vpImageFilter.h.

static double vpImageFilter::filterXRightBorder ( const vpImage< unsigned char > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 234 of file vpImageFilter.h.

References vpImage< Type >::getWidth().

Referenced by filterX().

static double vpImageFilter::filterXRightBorder ( const vpImage< double > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 285 of file vpImageFilter.h.

References vpImage< Type >::getWidth().

void vpImageFilter::filterY ( const vpImage< unsigned char > &  I,
vpImage< double > &  dIx,
const double *  filter,
unsigned int  size 
)
static
void vpImageFilter::filterY ( const vpImage< double > &  I,
vpImage< double > &  dIx,
const double *  filter,
unsigned int  size 
)
static
static double vpImageFilter::filterY ( const vpImage< unsigned char > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 305 of file vpImageFilter.h.

static double vpImageFilter::filterY ( const vpImage< double > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 384 of file vpImageFilter.h.

static double vpImageFilter::filterYBottomBorder ( const vpImage< unsigned char > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 336 of file vpImageFilter.h.

References vpImage< Type >::getHeight().

Referenced by filterY().

static double vpImageFilter::filterYBottomBorder ( const vpImage< double > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 368 of file vpImageFilter.h.

References vpImage< Type >::getHeight().

static double vpImageFilter::filterYTopBorder ( const vpImage< unsigned char > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 320 of file vpImageFilter.h.

Referenced by filterY().

static double vpImageFilter::filterYTopBorder ( const vpImage< double > &  I,
unsigned int  r,
unsigned int  c,
const double *  filter,
unsigned int  size 
)
inlinestatic

Definition at line 352 of file vpImageFilter.h.

void vpImageFilter::gaussianBlur ( const vpImage< unsigned char > &  I,
vpImage< double > &  GI,
unsigned int  size = 7,
double  sigma = 0.,
bool  normalize = true 
)
static

Apply a Gaussian blur to an image.

Parameters
I: Input image.
GI: Filtered image.
size: Filter size. This value should be odd.
sigma: Gaussian standard deviation. If it is equal to zero or negative, it is computed from filter size as sigma = (size-1)/6.
normalize: Flag indicating whether to normalize the filter coefficients or not.
Examples:
tutorial-image-filter.cpp.

Definition at line 320 of file vpImageFilter.cpp.

References vpImage< Type >::destroy(), filterX(), filterY(), and getGaussianKernel().

template<class T >
static double vpImageFilter::gaussianFilter ( const vpImage< T > &  fr,
const unsigned int  r,
const unsigned int  c 
)
inlinestatic

Apply a 5x5 Gaussian filter to an image pixel.

Parameters
fr: Image to filter
r: coordinates (row) of the pixel
c: coordinates (column) of the pixel

Definition at line 408 of file vpImageFilter.h.

void vpImageFilter::getGaussianDerivativeKernel ( double *  filter,
unsigned int  size,
double  sigma = 0.,
bool  normalize = true 
)
static

Return the coefficients of a Gaussian derivative filter that may be used to compute spatial image derivatives after applying a Gaussian blur.

Parameters
filter: Pointer to the filter kernel that should refer to a (size+1)/2 array. The first value refers to the central coefficient, the next one to the right coefficients. Left coefficients could be deduced by symmetry.
size: Filter size. This value should be odd.
sigma: Gaussian standard deviation. If it is equal to zero or negative, it is computed from filter size as sigma = (size-1)/6.
normalize: Flag indicating whether to normalize the filter coefficients or not.

Definition at line 380 of file vpImageFilter.cpp.

References vpImageException::incorrectInitializationError, and vpMath::sqr().

Referenced by vpTemplateTracker::setGaussianFilterSize(), and vpTemplateTracker::vpTemplateTracker().

void vpImageFilter::getGaussianKernel ( double *  filter,
unsigned int  size,
double  sigma = 0.,
bool  normalize = true 
)
static

Return the coefficients of a Gaussian filter.

Parameters
filter: Pointer to the filter kernel that should refer to a (size+1)/2 array. The first value refers to the central coefficient, the next one to the right coefficients. Left coefficients could be deduced by symmetry.
size: Filter size. This value should be odd.
sigma: Gaussian standard deviation. If it is equal to zero or negative, it is computed from filter size as sigma = (size-1)/6.
normalize: Flag indicating whether to normalize the filter coefficients or not.

Definition at line 340 of file vpImageFilter.cpp.

References vpImageException::incorrectInitializationError, and vpMath::sqr().

Referenced by gaussianBlur(), vpTemplateTracker::setGaussianFilterSize(), and vpTemplateTracker::vpTemplateTracker().

void vpImageFilter::getGaussXPyramidal ( const vpImage< unsigned char > &  I,
vpImage< unsigned char > &  GI 
)
static
void vpImageFilter::getGaussYPyramidal ( const vpImage< unsigned char > &  I,
vpImage< unsigned char > &  GI 
)
static
void vpImageFilter::getGradX ( const vpImage< unsigned char > &  I,
vpImage< double > &  dIx,
const double *  filter,
unsigned int  size 
)
static
void vpImageFilter::getGradX ( const vpImage< double > &  I,
vpImage< double > &  dIx,
const double *  filter,
unsigned int  size 
)
static
void vpImageFilter::getGradXGauss2D ( const vpImage< unsigned char > &  I,
vpImage< double > &  dIx,
const double *  gaussianKernel,
const double *  gaussianDerivativeKernel,
unsigned int  size 
)
static

Compute the gradient along X after applying a gaussian filter along Y.

Parameters
I: Input image
dIx: Gradient along X.
gaussianKernel: Gaussian kernel which values should be computed using vpImageFilter::getGaussianKernel().
gaussianDerivativeKernel: Gaussian derivative kernel which values should be computed using vpImageFilter::getGaussianDerivativeKernel().
size: Size of the Gaussian and Gaussian derivative kernels.

Definition at line 566 of file vpImageFilter.cpp.

References filterY(), and getGradX().

Referenced by vpTemplateTrackerZNCCInverseCompositional::initCompInverse(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), vpTemplateTracker::initTracking(), vpTemplateTrackerZNCCForwardAdditional::trackNoPyr(), vpTemplateTrackerSSDForwardCompositional::trackNoPyr(), vpTemplateTrackerSSDESM::trackNoPyr(), and vpTemplateTrackerSSDForwardAdditional::trackNoPyr().

void vpImageFilter::getGradY ( const vpImage< unsigned char > &  I,
vpImage< double > &  dIy,
const double *  filter,
unsigned int  size 
)
static
void vpImageFilter::getGradY ( const vpImage< double > &  I,
vpImage< double > &  dIy,
const double *  filter,
unsigned int  size 
)
static
void vpImageFilter::getGradYGauss2D ( const vpImage< unsigned char > &  I,
vpImage< double > &  dIy,
const double *  gaussianKernel,
const double *  gaussianDerivativeKernel,
unsigned int  size 
)
static

Compute the gradient along Y after applying a gaussian filter along X.

Parameters
I: Input image
dIy: Gradient along Y.
gaussianKernel: Gaussian kernel which values should be computed using vpImageFilter::getGaussianKernel().
gaussianDerivativeKernel: Gaussian derivative kernel which values should be computed using vpImageFilter::getGaussianDerivativeKernel().
size: Size of the Gaussian and Gaussian derivative kernels.

Definition at line 581 of file vpImageFilter.cpp.

References filterX(), and getGradY().

Referenced by vpTemplateTrackerZNCCInverseCompositional::initCompInverse(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), vpTemplateTracker::initTracking(), vpTemplateTrackerZNCCForwardAdditional::trackNoPyr(), vpTemplateTrackerSSDForwardCompositional::trackNoPyr(), vpTemplateTrackerSSDESM::trackNoPyr(), and vpTemplateTrackerSSDForwardAdditional::trackNoPyr().