cv.Sobel - MATLAB File Help |
Calculates the first, second, third, or mixed image derivatives using an extended Sobel operator
dst = cv.Sobel(src)
dst = cv.Sobel(..., 'OptionName', optionValue, ...)
src
.dst
. default 0DDepth=-1
(default), the output image will have the same depth as the
source.
SDepth = uint8 --> DDepth = -1, int16, single, double
SDepth = uint16, int16 --> DDepth = -1, single, double
SDepth = single --> DDepth = -1, single, double
SDepth = double --> DDepth = -1, double
In all cases except one, the KSize x KSize
separable kernel is used to
calculate the derivative. When KSize=1
, the 3x1
or 1x3
kernel is used
(that is, no Gaussian smoothing is done). KSize=1
can only be used for the
first or the second x- or y- derivatives.
There is also the special value KSize=-1
or KSize='Scharr'
that
corresponds to the 3x3
Scharr filter that may give more accurate results
than the 3x3
Sobel. The Scharr aperture is:
[-3 0 3; -10 0 10; -3 0 3]
for the x-derivative, or transposed for the y-derivative.
The function calculates an image derivative by convolving the image with the appropriate kernel:
partial^(XOrder+YOrder) src
dst = ---------------------------------------
partial x^(XOrder) partial y^(YOrder)
The Sobel operators combine Gaussian smoothing and differentiation, so the
result is more or less resistant to the noise. Most often, the function is
called with (XOrder = 1
, YOrder = 0
, KSize = 3
) or (XOrder = 0
,
YOrder = 1
, KSize = 3
) to calculate the first x- or y- image derivative.
The first case corresponds to a kernel of:
[-1 0 1; -2 0 2; -1 0 1]
The second case corresponds to a kernel of:
[-1 -2 -1; 0 0 0; 1 2 1]