Visual Servoing Platform
version 3.2.0 under development (2019-01-22)
|
#include <visp3/core/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, const bool convolve=false) |
static void | filter (const vpImage< unsigned char > &I, vpImage< double > &If, const vpMatrix &M, const bool convolve=false) |
static void | sepFilter (const vpImage< unsigned char > &I, vpImage< double > &If, const vpColVector &kernelH, const vpColVector &kernelV) |
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) |
static void | gaussianBlur (const vpImage< double > &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) |
static double | getSobelKernelX (double *filter, unsigned int size) |
static double | getSobelKernelY (double *filter, unsigned int size) |
Various image filter, convolution, etc...
Definition at line 66 of file vpImageFilter.h.
|
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:
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). |
Definition at line 297 of file vpImageFilter.cpp.
References vpImageConvert::convert().
Referenced by vpMeNurbs::seekExtremitiesCanny().
|
inlinestatic |
Apply a 1x3 derivative filter to an image pixel.
I | : Image to filter |
r | : coordinates (row) of the pixel |
c | : coordinates (column) of the pixel |
Definition at line 81 of file vpImageFilter.h.
Referenced by vpFeatureLuminance::buildFrom(), and getGradX().
|
inlinestatic |
Apply a 1 x size Derivative Filter in X to an image pixel.
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 |
Definition at line 116 of file vpImageFilter.h.
|
inlinestatic |
Apply a 3x1 derivative filter to an image pixel.
I | : Image to filter |
r | : coordinates (row) of the pixel |
c | : coordinates (column) of the pixel |
Definition at line 95 of file vpImageFilter.h.
Referenced by vpFeatureLuminance::buildFrom(), and getGradY().
|
inlinestatic |
Apply a size x 1 Derivative Filter in Y to an image pixel.
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 |
Definition at line 143 of file vpImageFilter.h.
|
static |
Apply a filter to an image:
I | : Image to filter |
Iu | : Filtered image along the horizontal axis (u = columns). |
Iv | : Filtered image along the vertical axis (v = rows). |
M | : Filter kernel. |
convolve | : If true, perform a convolution otherwise a correlation. |
Definition at line 126 of file vpImageFilter.cpp.
References vpImage< Type >::getHeight(), vpArray2D< Type >::getRows(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by vpTemplateTracker::getGaussianBluredImage(), vpTemplateTrackerMI::getMI(), vpTemplateTrackerMI::getMI256(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerMIForwardCompositional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), vpTemplateTrackerMIESM::initHessienDesired(), vpTemplateTrackerMIForwardAdditional::initHessienDesired(), vpTemplateTrackerMIInverseCompositional::initHessienDesired(), vpTemplateTracker::initTracking(), vpTemplateTrackerZNCCForwardAdditional::trackNoPyr(), vpTemplateTrackerSSDForwardCompositional::trackNoPyr(), vpTemplateTrackerMIForwardCompositional::trackNoPyr(), vpTemplateTrackerSSDESM::trackNoPyr(), vpTemplateTrackerSSDForwardAdditional::trackNoPyr(), vpTemplateTrackerZNCCInverseCompositional::trackNoPyr(), vpTemplateTrackerSSDInverseCompositional::trackNoPyr(), vpTemplateTrackerMIESM::trackNoPyr(), vpTemplateTrackerMIForwardAdditional::trackNoPyr(), and vpTemplateTrackerMIInverseCompositional::trackNoPyr().
|
static |
Apply a filter to an image.
I | : Image to filter |
If | : Filtered image. |
M | : Filter kernel. |
convolve | : If true, perform a convolution otherwise a correlation. |
The convolution is almost the same operation:
Only pixels in the input image fully covered by the kernel are considered.
Definition at line 76 of file vpImageFilter.cpp.
References vpArray2D< Type >::getCols(), vpImage< Type >::getHeight(), vpArray2D< Type >::getRows(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
static |
Apply a separable filter.
Definition at line 326 of file vpImageFilter.cpp.
References vpImage< Type >::destroy(), filterX(), and filterY().
|
static |
Apply a separable filter.
Definition at line 338 of file vpImageFilter.cpp.
References vpImage< Type >::destroy(), filterX(), and filterY().
|
inlinestatic |
Definition at line 169 of file vpImageFilter.h.
Referenced by getGaussXPyramidal().
|
inlinestatic |
Definition at line 174 of file vpImageFilter.h.
Referenced by getGaussYPyramidal().
|
static |
Definition at line 346 of file vpImageFilter.cpp.
References filterXLeftBorder(), filterXRightBorder(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by filter(), filterX(), gaussianBlur(), and getGradYGauss2D().
|
static |
Definition at line 364 of file vpImageFilter.cpp.
References filterX(), filterXLeftBorder(), filterXRightBorder(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
inlinestatic |
Definition at line 183 of file vpImageFilter.h.
|
inlinestatic |
Definition at line 228 of file vpImageFilter.h.
|
inlinestatic |
Definition at line 196 of file vpImageFilter.h.
Referenced by filterX().
|
inlinestatic |
Definition at line 241 of file vpImageFilter.h.
|
inlinestatic |
Definition at line 212 of file vpImageFilter.h.
References vpImage< Type >::getWidth().
Referenced by filterX().
|
inlinestatic |
Definition at line 257 of file vpImageFilter.h.
References vpImage< Type >::getWidth().
|
static |
Definition at line 381 of file vpImageFilter.cpp.
References filterYBottomBorder(), filterYTopBorder(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by filter(), filterY(), gaussianBlur(), and getGradXGauss2D().
|
static |
Definition at line 401 of file vpImageFilter.cpp.
References filterY(), filterYBottomBorder(), filterYTopBorder(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
inlinestatic |
Definition at line 275 of file vpImageFilter.h.
|
inlinestatic |
Definition at line 352 of file vpImageFilter.h.
|
inlinestatic |
Definition at line 304 of file vpImageFilter.h.
References vpImage< Type >::getHeight().
Referenced by filterY().
|
inlinestatic |
Definition at line 336 of file vpImageFilter.h.
References vpImage< Type >::getHeight().
|
inlinestatic |
Definition at line 288 of file vpImageFilter.h.
Referenced by filterY().
|
inlinestatic |
Definition at line 320 of file vpImageFilter.h.
|
static |
Apply a Gaussian blur to an image.
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. |
Definition at line 432 of file vpImageFilter.cpp.
References vpImage< Type >::destroy(), filterX(), filterY(), and getGaussianKernel().
Referenced by vp::unsharpMask().
|
static |
Apply a Gaussian blur to a double image.
I | : Input double 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. |
Definition at line 455 of file vpImageFilter.cpp.
References vpImage< Type >::destroy(), filterX(), filterY(), and getGaussianKernel().
|
inlinestatic |
Apply a 5x5 Gaussian filter to an image pixel.
fr | : Image to filter |
r | : coordinates (row) of the pixel |
c | : coordinates (column) of the pixel |
Definition at line 376 of file vpImageFilter.h.
|
static |
Return the coefficients of a Gaussian derivative filter that may be used to compute spatial image derivatives after applying a Gaussian blur.
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 517 of file vpImageFilter.cpp.
References vpImageException::incorrectInitializationError, and vpMath::sqr().
Referenced by vpTemplateTracker::setGaussianFilterSize(), and vpTemplateTracker::vpTemplateTracker().
|
static |
Return the coefficients of a Gaussian filter.
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 478 of file vpImageFilter.cpp.
References vpImageException::incorrectInitializationError, and vpMath::sqr().
Referenced by gaussianBlur(), vpTemplateTracker::setGaussianFilterSize(), and vpTemplateTracker::vpTemplateTracker().
|
static |
Definition at line 700 of file vpImageFilter.cpp.
References vpImageConvert::convert(), getGaussXPyramidal(), getGaussYPyramidal(), vpImage< Type >::getHeight(), and vpImage< Type >::getWidth().
Referenced by vpTemplateTracker::initHessienDesiredPyr(), vpTemplateTracker::initTrackingPyr(), and vpTemplateTracker::trackPyr().
|
static |
Definition at line 732 of file vpImageFilter.cpp.
References filterGaussXPyramidal(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by getGaussPyramidal().
|
static |
Definition at line 759 of file vpImageFilter.cpp.
References filterGaussYPyramidal(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by getGaussPyramidal().
Definition at line 546 of file vpImageFilter.cpp.
References derivativeFilterX(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by getGradXGauss2D(), vpTemplateTrackerMIInverseCompositional::initCompInverse(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), and vpTemplateTrackerMIESM::initHessienDesired().
|
static |
Definition at line 584 of file vpImageFilter.cpp.
References derivativeFilterX(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
static |
Definition at line 601 of file vpImageFilter.cpp.
References derivativeFilterX(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
static |
Compute the gradient along X after applying a gaussian filter along Y.
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 673 of file vpImageFilter.cpp.
References filterY(), and getGradX().
Referenced by vpTemplateTrackerZNCCInverseCompositional::initCompInverse(), vpTemplateTrackerMIInverseCompositional::initCompInverse(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerMIForwardCompositional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), vpTemplateTrackerMIESM::initHessienDesired(), vpTemplateTrackerMIForwardAdditional::initHessienDesired(), vpTemplateTracker::initTracking(), vpTemplateTrackerZNCCForwardAdditional::trackNoPyr(), vpTemplateTrackerSSDForwardCompositional::trackNoPyr(), vpTemplateTrackerMIForwardCompositional::trackNoPyr(), vpTemplateTrackerSSDESM::trackNoPyr(), vpTemplateTrackerSSDForwardAdditional::trackNoPyr(), vpTemplateTrackerMIESM::trackNoPyr(), and vpTemplateTrackerMIForwardAdditional::trackNoPyr().
Definition at line 563 of file vpImageFilter.cpp.
References derivativeFilterY(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
Referenced by getGradYGauss2D(), vpTemplateTrackerMIInverseCompositional::initCompInverse(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), and vpTemplateTrackerMIESM::initHessienDesired().
|
static |
Definition at line 618 of file vpImageFilter.cpp.
References derivativeFilterY(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
static |
Definition at line 642 of file vpImageFilter.cpp.
References derivativeFilterY(), vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), and vpImage< Type >::resize().
|
static |
Compute the gradient along Y after applying a gaussian filter along X.
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 691 of file vpImageFilter.cpp.
References filterX(), and getGradY().
Referenced by vpTemplateTrackerZNCCInverseCompositional::initCompInverse(), vpTemplateTrackerMIInverseCompositional::initCompInverse(), vpTemplateTrackerZNCCForwardAdditional::initHessienDesired(), vpTemplateTrackerMIForwardCompositional::initHessienDesired(), vpTemplateTrackerZNCCInverseCompositional::initHessienDesired(), vpTemplateTrackerMIESM::initHessienDesired(), vpTemplateTrackerMIForwardAdditional::initHessienDesired(), vpTemplateTracker::initTracking(), vpTemplateTrackerZNCCForwardAdditional::trackNoPyr(), vpTemplateTrackerSSDForwardCompositional::trackNoPyr(), vpTemplateTrackerMIForwardCompositional::trackNoPyr(), vpTemplateTrackerSSDESM::trackNoPyr(), vpTemplateTrackerSSDForwardAdditional::trackNoPyr(), vpTemplateTrackerMIESM::trackNoPyr(), and vpTemplateTrackerMIForwardAdditional::trackNoPyr().
|
static |
Get Sobel kernel for X-direction.
filter | : Pointer to a double array already allocated. |
size | : Kernel size computed as: kernel_size = size*2 + 1 (max size is 20). |
Definition at line 793 of file vpImageFilter.cpp.
References vpArray2D< Type >::data, vpException::dimensionError, vpArray2D< Type >::getCols(), vpArray2D< Type >::getRows(), getSobelKernelY(), and vpMatrix::t().
Referenced by vpMbTracker::setProjectionErrorKernelSize(), and vpMbTracker::vpMbTracker().
|
static |
Get Sobel kernel for Y-direction.
filter | : Pointer to a double array already allocated. |
size | : Kernel size computed as: kernel_size = size*2 + 1 (max size is 20). |
Definition at line 813 of file vpImageFilter.cpp.
References vpMatrix::conv2(), vpArray2D< Type >::data, vpException::dimensionError, vpArray2D< Type >::getCols(), and vpArray2D< Type >::getRows().
Referenced by getSobelKernelX(), vpMbTracker::setProjectionErrorKernelSize(), and vpMbTracker::vpMbTracker().
|
static |
Apply a filter to an image using two separable kernels. For instance, the Sobel kernel can be decomposed to:
Thus, the convolution operation can be performed as:
Using two separable kernels reduce the number of operations and can be faster for large kernels.
I | : Image to filter |
If | : Filtered image. |
kernelH | : Separable kernel (performed first). |
kernelV | : Separable kernel (performed last). |
Definition at line 224 of file vpImageFilter.cpp.
References vpImage< Type >::getHeight(), vpImage< Type >::getWidth(), vpImage< Type >::resize(), and vpArray2D< Type >::size().