Image Filtering#
Detailed Description#
Functions and classes described in this section are used to perform various linear or non-linear filtering operations on 2D images.
Note
An example containing all basic morphology operators like erode and dilate can be found at opencv_source_code/samples/gpu/morphology.cpp
Classes#
Name |
Description |
|---|---|
|
Common interface for all CUDA filters : View details |
Function Documentation#
createBoxFilter()#
Ptr< Filter > cv::cuda::createBoxFilter(
int srcType,
int dstType,
Size ksize,
Point anchor = Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates a normalized 2D box filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Input image type. Only CV_8UC1, CV_8UC4 and CV_32FC1 are supported for now.dstType— Output image type. Only the same type as src is supported for now.ksize— Kernel size.anchor— Anchor point. The default value Point(-1, -1) means that the anchor is at the kernel center.borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createBoxMaxFilter()#
Ptr< Filter > cv::cuda::createBoxMaxFilter(
int srcType,
Size ksize,
Point anchor = Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates the maximum filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
Parameters
srcType— Input/output image type. Only CV_8UC1 and CV_8UC4 are supported.ksize— Kernel size.anchor— Anchor point. The default value (-1) means that the anchor is at the kernel center.borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createBoxMinFilter()#
Ptr< Filter > cv::cuda::createBoxMinFilter(
int srcType,
Size ksize,
Point anchor = Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates the minimum filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
Parameters
srcType— Input/output image type. Only CV_8UC1 and CV_8UC4 are supported.ksize— Kernel size.anchor— Anchor point. The default value (-1) means that the anchor is at the kernel center.borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createColumnSumFilter()#
Ptr< Filter > cv::cuda::createColumnSumFilter(
int srcType,
int dstType,
int ksize,
int anchor = -1,
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates a vertical 1D box filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
Parameters
srcType— Input image type. Only CV_8UC1 type is supported for now.dstType— Output image type. Only CV_32FC1 type is supported for now.ksize— Kernel size.anchor— Anchor point. The default value (-1) means that the anchor is at the kernel center.borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createDerivFilter()#
Ptr< Filter > cv::cuda::createDerivFilter(
int srcType,
int dstType,
int dx,
int dy,
int ksize,
bool normalize = false,
double scale = 1,
int rowBorderMode = BORDER_DEFAULT,
int columnBorderMode = -1 )
#include <opencv2/cudafilters.hpp>
Creates a generalized Deriv operator.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
Parameters
srcType— Source image type.dstType— Destination array type.dx— Derivative order in respect of x.dy— Derivative order in respect of y.ksize— Aperture size. See getDerivKernels for details.normalize— Flag indicating whether to normalize (scale down) the filter coefficients or not. See getDerivKernels for details.scale— Optional scale factor for the computed derivative values. By default, no scaling is applied. For details, see getDerivKernels .rowBorderMode— Pixel extrapolation method in the vertical direction. For details, see borderInterpolate.columnBorderMode— Pixel extrapolation method in the horizontal direction.
createGaussianFilter()#
Ptr< Filter > cv::cuda::createGaussianFilter(
int srcType,
int dstType,
Size ksize,
double sigma1,
double sigma2 = 0,
int rowBorderMode = BORDER_DEFAULT,
int columnBorderMode = -1 )
#include <opencv2/cudafilters.hpp>
Creates a Gaussian filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Source image type.dstType— Destination array type.ksize— Aperture size. See getGaussianKernel for details.sigma1— Gaussian sigma in the horizontal direction. See getGaussianKernel for details.sigma2— Gaussian sigma in the vertical direction. If 0, then \(\texttt{sigma2}\leftarrow\texttt{sigma1}\) .rowBorderMode— Pixel extrapolation method in the vertical direction. For details, see borderInterpolate.columnBorderMode— Pixel extrapolation method in the horizontal direction.
createLaplacianFilter()#
Ptr< Filter > cv::cuda::createLaplacianFilter(
int srcType,
int dstType,
int ksize = 1,
double scale = 1,
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates a Laplacian operator.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Input image type. Supports CV_8U , CV_16U and CV_32F one and four channel image.dstType— Output image type. Only the same type as src is supported for now.ksize— Aperture size used to compute the second-derivative filters (see getDerivKernels). It must be positive and odd. Only ksize = 1 and ksize = 3 are supported.scale— Optional scale factor for the computed Laplacian values. By default, no scaling is applied (see getDerivKernels ).borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createLinearFilter()#
Ptr< Filter > cv::cuda::createLinearFilter(
int srcType,
int dstType,
InputArray kernel,
Point anchor = Point(-1, -1),
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates a non-separable linear 2D filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Input image type. Supports CV_8U , CV_16U and CV_32F one and four channel image.dstType— Output image type. Only the same type as src is supported for now.kernel— 2D array of filter coefficients.anchor— Anchor point. The default value Point(-1, -1) means that the anchor is at the kernel center.borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createMorphologyFilter()#
Ptr< Filter > cv::cuda::createMorphologyFilter(
int op,
int srcType,
InputArray kernel,
Point anchor = Point(-1, -1),
int iterations = 1 )
#include <opencv2/cudafilters.hpp>
Creates a 2D morphological filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
op— Type of morphological operation. The following types are possible:MORPH_ERODE erode
MORPH_DILATE dilate
MORPH_OPEN opening
MORPH_CLOSE closing
MORPH_GRADIENT morphological gradient
MORPH_TOPHAT “top hat”
MORPH_BLACKHAT “black hat”
srcType— Input/output image type. Only CV_8UC1, CV_8UC4, CV_32FC1 and CV_32FC4 are supported.kernel— 2D 8-bit structuring element for the morphological operation.anchor— Anchor position within the structuring element. Negative values mean that the anchor is at the center.iterations— Number of times erosion and dilation to be applied.
createRowSumFilter()#
Ptr< Filter > cv::cuda::createRowSumFilter(
int srcType,
int dstType,
int ksize,
int anchor = -1,
int borderMode = BORDER_DEFAULT,
Scalar borderVal = Scalar::all(0) )
#include <opencv2/cudafilters.hpp>
Creates a horizontal 1D box filter.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
Parameters
srcType— Input image type. Only CV_8UC1 type is supported for now.dstType— Output image type. Only CV_32FC1 type is supported for now.ksize— Kernel size.anchor— Anchor point. The default value (-1) means that the anchor is at the kernel center.borderMode— Pixel extrapolation method. For details, see borderInterpolate .borderVal— Default border value.
createScharrFilter()#
Ptr< Filter > cv::cuda::createScharrFilter(
int srcType,
int dstType,
int dx,
int dy,
double scale = 1,
int rowBorderMode = BORDER_DEFAULT,
int columnBorderMode = -1 )
#include <opencv2/cudafilters.hpp>
Creates a vertical or horizontal Scharr operator.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Source image type.dstType— Destination array type.dx— Order of the derivative x.dy— Order of the derivative y.scale— Optional scale factor for the computed derivative values. By default, no scaling is applied. See getDerivKernels for details.rowBorderMode— Pixel extrapolation method in the vertical direction. For details, see borderInterpolate.columnBorderMode— Pixel extrapolation method in the horizontal direction.
createSeparableLinearFilter()#
Ptr< Filter > cv::cuda::createSeparableLinearFilter(
int srcType,
int dstType,
InputArray rowKernel,
InputArray columnKernel,
Point anchor = Point(-1,-1),
int rowBorderMode = BORDER_DEFAULT,
int columnBorderMode = -1 )
#include <opencv2/cudafilters.hpp>
Creates a separable linear filter. In-place processing is supported.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Source array type.dstType— Destination array type.rowKernel— Horizontal filter coefficients. Support kernels with size <= 32 . noArray() is supported to ignore the row filtering.columnKernel— Vertical filter coefficients. Support kernels with size <= 32 . noArray() is supported to ignore the column filtering.anchor— Anchor position within the kernel. Negative values mean that anchor is positioned at the aperture center.rowBorderMode— Pixel extrapolation method in the vertical direction For details, see borderInterpolate.columnBorderMode— Pixel extrapolation method in the horizontal direction.
createSobelFilter()#
Ptr< Filter > cv::cuda::createSobelFilter(
int srcType,
int dstType,
int dx,
int dy,
int ksize = 3,
double scale = 1,
int rowBorderMode = BORDER_DEFAULT,
int columnBorderMode = -1 )
#include <opencv2/cudafilters.hpp>
Creates a Sobel operator.
Note
If applied in a CUDA Stream, a distinct filter instance must be created for each Stream. Sharing a single instance across multiple streams is unsupported and may lead to undefined behavior due to stream-specific internal state.
See also
Parameters
srcType— Source image type.dstType— Destination array type.dx— Derivative order in respect of x.dy— Derivative order in respect of y.ksize— Size of the extended Sobel kernel. Possible values are 1, 3, 5 or 7.scale— Optional scale factor for the computed derivative values. By default, no scaling is applied. For details, see getDerivKernels .rowBorderMode— Pixel extrapolation method in the vertical direction. For details, see borderInterpolate.columnBorderMode— Pixel extrapolation method in the horizontal direction.