OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
图API:图像滤波器

详细描述

函数

GMat cv::gapi::bilateralFilter (const GMat &src, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT)
 将双边滤波器应用于图像。
 
GMat cv::gapi::blur (const GMat &src, const Size &ksize, const Point &anchor=Point(-1,-1), int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 使用归一化盒式滤波器模糊图像。
 
GMat cv::gapi::boxFilter (const GMat &src, int dtype, const Size &ksize, const Point &anchor=Point(-1,-1), bool normalize=true, int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 使用盒式滤波器模糊图像。
 
GMat cv::gapi::dilate (const GMat &src, const Mat &kernel, const Point &anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
 使用特定的结构元素膨胀图像。
 
GMat cv::gapi::dilate3x3 (const GMat &src, int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
 使用3x3矩形结构元素膨胀图像。
 
GMat cv::gapi::erode (const GMat &src, const Mat &kernel, const Point &anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
 使用特定的结构元素腐蚀图像。
 
GMat cv::gapi::erode3x3 (const GMat &src, int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
 使用3x3矩形结构元素腐蚀图像。
 
GMat cv::gapi::filter2D (const GMat &src, int ddepth, const Mat &kernel, const Point &anchor=Point(-1,-1), const Scalar &delta=Scalar(0), int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 用卷积核卷积图像。
 
GMat cv::gapi::gaussianBlur (const GMat &src, const Size &ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 使用高斯滤波器模糊图像。
 
GMat cv::gapi::Laplacian (const GMat &src, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
 计算图像的拉普拉斯算子。
 
GMat cv::gapi::medianBlur (const GMat &src, int ksize)
 使用中值滤波器模糊图像。
 
GMat cv::gapi::morphologyEx (const GMat &src, const MorphTypes op, const Mat &kernel, const Point &anchor=Point(-1,-1), const int iterations=1, const BorderTypes borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
 执行高级形态学变换。
 
GMat cv::gapi::sepFilter (const GMat &src, int ddepth, const Mat &kernelX, const Mat &kernelY, const Point &anchor, const Scalar &delta, int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 将可分离线性滤波器应用于矩阵(图像)。
 
GMat cv::gapi::Sobel (const GMat &src, int ddepth, int dx, int dy, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 使用扩展的Sobel算子计算图像的一阶、二阶、三阶或混合导数。
 
std::tuple< GMat, GMatcv::gapi::SobelXY (const GMat &src, int ddepth, int order, int ksize=3, double scale=1, double delta=0, int borderType=BORDER_DEFAULT, const Scalar &borderValue=Scalar(0))
 使用扩展的Sobel算子计算图像的一阶、二阶、三阶或混合导数。
 

函数文档

◆ bilateralFilter()

GMat cv::gapi::bilateralFilter ( const GMat & src,
int d,
double sigmaColor,
double sigmaSpace,
int borderType = BORDER_DEFAULT )
Python
cv.gapi.bilateralFilter(src, d, sigmaColor, sigmaSpace[, borderType]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

将双边滤波器应用于图像。

该函数对输入图像应用双边滤波,如http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html中所述,双边滤波可以很好地减少不需要的噪声,同时保持边缘相当清晰。但是,与大多数滤波器相比,它非常慢。

Sigma 值:为简单起见,您可以将两个 sigma 值设置为相同。如果它们很小(< 10),则滤波器不会产生太大影响,而如果它们很大(> 150),则它们将产生非常强的影响,使图像看起来像“卡通”。

滤波器大小:大型滤波器 (d > 5) 非常慢,因此建议对实时应用使用 d=5,而对于需要大量噪声滤波的离线应用,则可以使用 d=9。

此过滤器不能就地工作。

注意
函数文本 ID 为“org.opencv.imgproc.filters.bilateralfilter”
参数
src源 8 位或浮点型,单通道或三通道图像。
d滤波过程中使用的每个像素邻域的直径。如果它是非正数,则根据 sigmaSpace 计算。
sigmaColor颜色空间中的滤波器 sigma。参数值越大,像素邻域内(参见 sigmaSpace)的颜色差异越大,混合在一起的颜色面积就越大。
sigmaSpace坐标空间中的滤波器 sigma。参数值越大,只要颜色足够接近(参见 sigmaColor),像素之间的影响就越大。当 d>0 时,它指定邻域大小,而不管 sigmaSpace 如何。否则,d 与 sigmaSpace 成比例。
borderType用于外推图像外部像素的边界模式,参见 BorderTypes
返回
与 src 大小和类型相同的目标图像。

◆ blur()

GMat cv::gapi::blur ( const GMat & src,
const Size & ksize,
const Point & anchor = Point(-1,-1),
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.blur(src, ksize[, anchor[, borderType[, borderValue]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用归一化盒式滤波器模糊图像。

该函数使用内核平滑图像

\[\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}\]

调用blur(src, ksize, anchor, borderType) 等效于 boxFilter(src, src.type(), ksize, anchor, true, borderType)

支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本 ID 为“org.opencv.imgproc.filters.blur”
参数
src源图像。
ksize模糊内核大小。
anchor锚点;默认值 Point(-1,-1) 表示锚点位于内核中心。
borderType用于外推图像外部像素的边界模式,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
boxFilterbilateralFilterGaussianBlurmedianBlur

◆ boxFilter()

GMat cv::gapi::boxFilter ( const GMat & src,
int dtype,
const Size & ksize,
const Point & anchor = Point(-1,-1),
bool normalize = true,
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.boxFilter(src, dtype, ksize[, anchor[, normalize[, borderType[, borderValue]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用盒式滤波器模糊图像。

该函数使用内核平滑图像

\[\texttt{K} = \alpha \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \end{bmatrix}\]

其中

\[\alpha = \begin{cases} \frac{1}{\texttt{ksize.width*ksize.height}} & \texttt{当 } \texttt{normalize=true} \\1 & \texttt{否则} \end{cases}\]

未归一化的盒式滤波器用于计算每个像素邻域的各种积分特征,例如图像导数的协方差矩阵(用于密集光流算法等)。如果您需要计算可变大小窗口上的像素总和,请使用 cv::integral

支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本 ID 为“org.opencv.imgproc.filters.boxfilter”
参数
src源图像。
dtype输出图像深度(-1 用于设置输入图像数据类型)。
ksize模糊内核大小。
anchor内核内的锚点位置。默认值 \((-1,-1)\) 表示锚点位于内核中心。
normalize标志,指定内核是否按其面积进行归一化。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
sepFiltergaussianBlurmedianBlurintegral

◆ dilate()

GMat cv::gapi::dilate ( const GMat & src,
const Mat & kernel,
const Point & anchor = Point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue() )
Python
cv.gapi.dilate(src, kernel[, anchor[, iterations[, borderType[, borderValue]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用特定的结构元素膨胀图像。

该函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在其上取最大值。

\[\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\]

膨胀可以应用多次 (iterations)。对于多通道图像,每个通道独立处理。支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本 ID 为“org.opencv.imgproc.filters.dilate”
参数
src输入图像。
kernel用于膨胀的结构元素;如果 elemenat=Mat(),则使用 3 x 3 的矩形结构元素。可以使用 getStructuringElement 创建内核。
anchor元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素中心。
iterations应用膨胀的次数。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界情况下的边界值。
另请参见
erodemorphologyExgetStructuringElement

◆ dilate3x3()

GMat cv::gapi::dilate3x3 ( const GMat & src,
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue() )
Python
cv.gapi.dilate3x3(src[, iterations[, borderType[, borderValue]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用3x3矩形结构元素膨胀图像。

该函数使用指定的结构元素膨胀源图像,该结构元素确定像素邻域的形状,在其上取最大值。

\[\texttt{dst} (x,y) = \max _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\]

膨胀可以应用多次 (iterations)。对于多通道图像,每个通道独立处理。支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本 ID 为“org.opencv.imgproc.filters.dilate”
参数
src输入图像。
iterations应用膨胀的次数。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界情况下的边界值。
另请参见
dilateerode3x3

◆ erode()

GMat cv::gapi::erode ( const GMat & src,
const Mat & kernel,
const Point & anchor = Point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue() )
Python
cv.gapi.erode(src, kernel[, anchor[, iterations[, borderType[, borderValue]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用特定的结构元素腐蚀图像。

该函数使用指定的结构元素腐蚀源图像,该结构元素确定像素邻域的形状,在其上取最小值。

\[\texttt{dst} (x,y) = \min _{(x',y'): \, \texttt{element} (x',y') \ne0 } \texttt{src} (x+x',y+y')\]

腐蚀可以应用多次 (iterations)。对于多通道图像,每个通道独立处理。支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本 ID 为“org.opencv.imgproc.filters.erode”
参数
src输入图像。
kernel用于腐蚀的结构元素;如果 element=Mat(),则使用 3 x 3 的矩形结构元素。可以使用 getStructuringElement 创建内核。
anchor元素内锚点的位置;默认值 (-1, -1) 表示锚点位于元素中心。
iterations应用腐蚀的次数。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界情况下的边界值。
另请参见
dilatemorphologyEx

◆ erode3x3()

GMat cv::gapi::erode3x3 ( const GMat & src,
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue() )
Python
cv.gapi.erode3x3(src[, iterations[, borderType[, borderValue]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用3x3矩形结构元素腐蚀图像。

该函数使用矩形结构元素(以矩形中心为锚点)腐蚀源图像。腐蚀可以应用多次 (iterations)。对于多通道图像,每个通道独立处理。支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本 ID 为“org.opencv.imgproc.filters.erode”
参数
src输入图像。
iterations应用腐蚀的次数。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界情况下的边界值。
另请参见
腐蚀膨胀3x3

◆ filter2D()

GMat cv::gapi::filter2D ( const GMat & src,
int 目标深度,
const Mat & kernel,
const Point & anchor = Point(-1,-1),
const Scalar & delta = Scalar(0),
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.filter2D(src, ddepth, kernel[, anchor[, delta[, borderType[, borderValue]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

用卷积核卷积图像。

该函数将任意线性滤波器应用于图像。当孔径部分位于图像外部时,函数将根据指定的边界模式对异常像素值进行插值。

该函数实际上计算的是相关性,而不是卷积。

\[\texttt{dst} (x,y) = \sum _{ \substack{0\leq x' < \texttt{kernel.cols}\\{0\leq y' < \texttt{kernel.rows}}}} \texttt{kernel} (x',y')* \texttt{src} (x+x'- \texttt{anchor.x} ,y+y'- \texttt{anchor.y} )\]

也就是说,内核不会围绕锚点镜像。如果您需要真正的卷积,请使用flip翻转内核并将新的锚点设置为(kernel.cols - anchor.x - 1, kernel.rows - anchor.y - 1)

支持的矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本ID为“org.opencv.imgproc.filters.filter2D”
参数
src输入图像。
目标深度目标图像的所需深度
kernel卷积核(或更确切地说是相关核),单通道浮点矩阵;如果要将不同的内核应用于不同的通道,请使用split将图像分割成单独的颜色平面并分别处理它们。
anchor内核的锚点,指示滤波点在内核内的相对位置;锚点应位于内核内;默认值(-1,-1)表示锚点位于内核中心。
增量值存储到dst之前添加到已滤波像素的可选值。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
sepFilter

◆ gaussianBlur()

GMat cv::gapi::gaussianBlur ( const GMat & src,
const Size & ksize,
double sigmaX,
double sigmaY = 0,
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.gaussianBlur(src, ksize, sigmaX[, sigmaY[, borderType[, borderValue]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用高斯滤波器模糊图像。

该函数使用指定的Gaussian核对源图像进行filter2D滤波。输出图像必须与输入图像具有相同的类型和通道数。

支持的输入矩阵数据类型为 CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本ID为“org.opencv.imgproc.filters.gaussianBlur”
参数
src输入图像;
ksize高斯核大小。ksize.width和ksize.height可以不同,但它们都必须为正奇数。或者,它们可以为零,然后根据sigma计算它们。
sigmaXX方向上的高斯核标准差。
sigmaYY方向上的高斯核标准差;如果sigmaY为零,则将其设置为等于sigmaX,如果两个sigma都为零,则分别根据ksize.width和ksize.height计算它们(详情请参见cv::getGaussianKernel);为了完全控制结果,无论未来所有语义的可能修改如何,建议指定所有ksize、sigmaX和sigmaY。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
sepFilterboxFiltermedianBlur

◆ Laplacian()

GMat cv::gapi::Laplacian ( const GMat & src,
int 目标深度,
int ksize = 1,
double scale = 1,
double delta = 0,
int borderType = BORDER_DEFAULT )
Python
cv.gapi.Laplacian(src, ddepth[, ksize[, scale[, delta[, borderType]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

计算图像的拉普拉斯算子。

该函数通过将使用Sobel算子计算的二阶x和y导数相加来计算源图像的拉普拉斯算子。

\[\texttt{dst} = \Delta \texttt{src} = \frac{\partial^2 \texttt{src}}{\partial x^2} + \frac{\partial^2 \texttt{src}}{\partial y^2}\]

ksize > 1时执行此操作。当ksize == 1时,通过使用以下3x3孔径对图像进行滤波来计算拉普拉斯算子。

\[\vecthreethree {0}{1}{0}{1}{-4}{1}{0}{1}{0}\]

注意
函数文本ID为“org.opencv.imgproc.filters.laplacian”
参数
src源图像。
目标深度目标图像的所需深度。
ksize用于计算二阶导数滤波器的孔径大小。详情请参见getDerivKernels。大小必须为正奇数。
缩放因子计算的拉普拉斯值可选缩放因子。默认情况下,不应用缩放。详情请参见getDerivKernels
增量值存储到dst之前添加到结果的可选增量值。
borderType像素外推方法,请参见BorderTypesBORDER_WRAP不支持。
返回
与src大小和通道数相同的目标图像。
另请参见
SobelScharr

◆ medianBlur()

GMat cv::gapi::medianBlur ( const GMat & src,
int ksize )
Python
cv.gapi.medianBlur(src, ksize) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用中值滤波器模糊图像。

该函数使用\(\texttt{ksize} \times \texttt{ksize}\)孔径的中值滤波器平滑图像。多通道图像的每个通道都独立处理。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 如果硬件支持,则四舍五入到最接近的偶数;否则,四舍五入到最接近的数。中值滤波器内部使用cv::BORDER_REPLICATE来处理边界像素,请参见cv::BorderTypes
  • 函数文本ID为“org.opencv.imgproc.filters.medianBlur”
参数
src输入矩阵(图像)
ksize孔径线性大小;它必须是奇数且大于1,例如:3、5、7……
另请参见
boxFiltergaussianBlur

◆ morphologyEx()

GMat cv::gapi::morphologyEx ( const GMat & src,
const MorphTypes op,
const Mat & kernel,
const Point & anchor = Point(-1,-1),
const int iterations = 1,
const BorderTypes borderType = BORDER_CONSTANT,
const Scalar & borderValue = morphologyDefaultBorderValue() )
Python
cv.gapi.morphologyEx(src, op, kernel[, anchor[, iterations[, borderType[, borderValue]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

执行高级形态学变换。

该函数可以使用腐蚀和膨胀作为基本操作来执行高级形态学变换。

任何操作都可以就地进行。对于多通道图像,每个通道都独立处理。

注意
  • 函数文本ID为“org.opencv.imgproc.filters.morphologyEx”
  • 迭代次数是腐蚀或膨胀操作将应用的次数。例如,具有两次迭代的开运算(MORPH_OPEN) 等效于依次应用:腐蚀 -> 腐蚀 -> 膨胀 -> 膨胀(而不是腐蚀 -> 膨胀 -> 腐蚀 -> 膨胀)。
参数
src输入图像。
op形态学运算的类型,参见MorphTypes
kernel结构元素。可以使用getStructuringElement创建。
anchor元素内的锚点位置。两个负值都意味着锚点位于内核中心。
iterations应用腐蚀和膨胀的次数。
borderType像素外推方法,请参见BorderTypesBORDER_WRAP不支持。
borderValue在恒定边界情况下为边界值。默认值具有特殊含义。
另请参见
dilateerodegetStructuringElement

◆ sepFilter()

GMat cv::gapi::sepFilter ( const GMat & src,
int 目标深度,
const Mat & kernelX,
const Mat & kernelY,
const Point & anchor,
const Scalar & 增量值,
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.sepFilter(src, ddepth, kernelX, kernelY, anchor, delta[, borderType[, borderValue]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

将可分离线性滤波器应用于矩阵(图像)。

该函数将可分离线性滤波器应用于矩阵。也就是说,首先,使用一维内核kernelX过滤src的每一行。然后,使用一维内核kernelY过滤结果的每一列。返回最终结果。

支持的矩阵数据类型为CV_8UC1CV_8UC3CV_16UC1CV_16SC1CV_32FC1。输出图像必须与输入图像具有相同的类型、大小和通道数。

注意
  • 在浮点计算的情况下,如果硬件支持,则进行四舍五入到最接近的偶数(如果不支持,则四舍五入到最接近的值)。
  • 函数文本ID为“org.opencv.imgproc.filters.sepfilter”
参数
src源图像。
目标深度目标图像的所需深度(支持src.depth()和ddepth的以下组合
 src.depth() = CV_8U, ddepth = -1/CV_16S/CV_32F/CV_64F
 src.depth() = CV_16U/CV_16S, ddepth = -1/CV_32F/CV_64F
 src.depth() = CV_32F, ddepth = -1/CV_32F/CV_64F
 src.depth() = CV_64F, ddepth = -1/CV_64F

当ddepth=-1时,输出图像将与源图像具有相同的深度)

参数
kernelX用于过滤每一行的系数。
kernelY用于过滤每一列的系数。
anchor内核内的锚点位置。默认值 \((-1,-1)\) 表示锚点位于内核中心。
增量值添加到过滤结果中的值,然后将其存储。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
boxFiltergaussianBlurmedianBlur

◆ Sobel()

GMat cv::gapi::Sobel ( const GMat & src,
int 目标深度,
int dx,
int dy,
int ksize = 3,
double scale = 1,
double delta = 0,
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.Sobel(src, ddepth, dx, dy[, ksize[, scale[, delta[, borderType[, borderValue]]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用扩展的Sobel算子计算图像的一阶、二阶、三阶或混合导数。

在除一种情况外的所有情况下,都使用\(\texttt{ksize} \times \texttt{ksize}\)可分离内核来计算导数。当\(\texttt{ksize = 1}\)时,使用\(3 \times 1\)或\(1 \times 3\)内核(即,不进行高斯平滑)。ksize = 1只能用于第一次或第二次x或y导数。

还有一个特殊值ksize = FILTER_SCHARR (-1),它对应于\(3\times3\) Scharr滤波器,它可能比\(3\times3\) Sobel给出更精确的结果。Scharr孔径为

\[\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\]

用于x导数,或y导数的转置。

该函数通过将图像与适当的内核进行卷积来计算图像导数

\[\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\]

Sobel算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。大多数情况下,该函数以(xorder = 1, yorder = 0, ksize = 3)或(xorder = 0, yorder = 1, ksize = 3)调用,以计算第一x或y图像导数。第一种情况对应于以下内核:

\[\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\]

第二种情况对应于以下内核:

\[\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\]

注意
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本ID为“org.opencv.imgproc.filters.sobel”
参数
src输入图像。
目标深度输出图像深度,参见组合;对于8位输入图像,它将导致截断的导数。
dxx导数的阶数。
dyy导数的阶数。
ksize扩展Sobel内核的大小;它必须是奇数。
缩放因子计算导数值的可选比例因子;默认情况下,不应用缩放(有关详细信息,请参见cv::getDerivKernels)。
增量值可选的delta值,在将它们存储到dst之前添加到结果中。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
filter2DgaussianBlurcartToPolar

◆ SobelXY()

std::tuple< GMat, GMat > cv::gapi::SobelXY ( const GMat & src,
int 目标深度,
int order,
int ksize = 3,
double scale = 1,
double delta = 0,
int borderType = BORDER_DEFAULT,
const Scalar & borderValue = Scalar(0) )
Python
cv.gapi.SobelXY(src, ddepth, order[, ksize[, scale[, delta[, borderType[, borderValue]]]]]) -> 返回值

#include <opencv2/gapi/imgproc.hpp>

使用扩展的Sobel算子计算图像的一阶、二阶、三阶或混合导数。

在除一种情况外的所有情况下,都使用\(\texttt{ksize} \times \texttt{ksize}\)可分离内核来计算导数。当\(\texttt{ksize = 1}\)时,使用\(3 \times 1\)或\(1 \times 3\)内核(即,不进行高斯平滑)。ksize = 1只能用于第一次或第二次x或y导数。

还有一个特殊值ksize = FILTER_SCHARR (-1),它对应于\(3\times3\) Scharr滤波器,它可能比\(3\times3\) Sobel给出更精确的结果。Scharr孔径为

\[\vecthreethree{-3}{0}{3}{-10}{0}{10}{-3}{0}{3}\]

用于x导数,或y导数的转置。

该函数通过将图像与适当的内核进行卷积来计算图像导数

\[\texttt{dst} = \frac{\partial^{xorder+yorder} \texttt{src}}{\partial x^{xorder} \partial y^{yorder}}\]

Sobel算子结合了高斯平滑和微分,因此结果或多或少地能抵抗噪声。大多数情况下,该函数以(xorder = 1, yorder = 0, ksize = 3)或(xorder = 0, yorder = 1, ksize = 3)调用,以计算第一x或y图像导数。第一种情况对应于以下内核:

\[\vecthreethree{-1}{0}{1}{-2}{0}{2}{-1}{0}{1}\]

第二种情况对应于以下内核:

\[\vecthreethree{-1}{-2}{-1}{0}{0}{0}{1}{2}{1}\]

注意
  • 第一个返回的矩阵对应于dx导数,第二个对应于dy导数。
  • 如果硬件支持,则进行四舍五入到最接近的偶数,否则四舍五入到最接近的数。
  • 函数文本ID为“org.opencv.imgproc.filters.sobelxy”
参数
src输入图像。
目标深度输出图像深度,参见组合;对于8位输入图像,它将导致截断的导数。
order导数的阶数。
ksize扩展Sobel内核的大小;它必须是奇数。
缩放因子计算导数值的可选比例因子;默认情况下,不应用缩放(有关详细信息,请参见cv::getDerivKernels)。
增量值可选的delta值,在将它们存储到dst之前添加到结果中。
borderType像素外推方法,参见 cv::BorderTypes
borderValue在恒定边界类型的情况下为边界值
另请参见
filter2DgaussianBlurcartToPolar