Documentation

This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

Directional gradients of an image

Syntax

• ``````[Gx,Gy] = imgradientxy(I)``````
example
• ``````[Gx,Gy] = imgradientxy(I,method)``````
example
• ``````[gpuarrayGx,gpuarrayGy] = imgradientxy(gpuarrayI,___)``````
example

Description

example

``````[Gx,Gy] = imgradientxy(I)``` returns the directional gradients, `Gx` and `Gy`, the same size as the input image `I`.When applying the gradient operator at the boundaries of the image, values outside the bounds of the image are assumed to equal the nearest image border value.```

example

``````[Gx,Gy] = imgradientxy(I,method)``` returns the directional gradients using the specified `method`.```

example

``````[gpuarrayGx,gpuarrayGy] = imgradientxy(gpuarrayI,___)``` performs the operation on a GPU. The input image and the return values are gpuArrays. This syntax requires the Parallel Computing Toolbox™```

Examples

collapse all

Read image into workspace.

```I = imread('coins.png'); ```

Calculate gradient magnitude and gradient direction using Prewitt gradient operator.

```[Gx, Gy] = imgradientxy(I,'prewitt'); figure; imshowpair(Gx, Gy, 'montage'); title('Directional Gradients: x-direction, Gx (left), y-direction, Gy (right), using Prewitt method') axis off; ```

Read image into a gpuArray.

```I = gpuArray(imread('coins.png')); imshow(I)```

Calculate gradient magnitude and gradient direction using Prewitt's gradient operator and display images.

```[Gx, Gy] = imgradientxy(I,'prewitt'); figure, imshow(Gx, []), title('Directional gradient: X axis') figure, imshow(Gy, []), title('Directional gradient: Y axis')```

Read image into workspace.

```I = imread('coins.png'); ```

Calculate x and y directional gradients and then gradient magnitude and direction.

```[Gx, Gy] = imgradientxy(I); [Gmag, Gdir] = imgradient(Gx, Gy); figure; imshowpair(Gmag, Gdir, 'montage'); axis off; title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Sobel method') figure; imshowpair(Gx, Gy, 'montage'); axis off; title('Directional Gradients, Gx and Gy, using Sobel method') ```

Read image and return directional gradients, `Gx` and `Gx`, as well as gradient magnitude and direction, `Gmag` and `Gdir`, utilizing default Sobel gradient operator.

Read image into a gpuArray.

```I = gpuArray(imread('coins.png')); imshow(I) ```

Calculate gradient and display images.

```[Gx, Gy] = imgradientxy(I); [Gmag, Gdir] = imgradient(Gx, Gy); figure, imshow(Gmag, []), title('Gradient magnitude') figure, imshow(Gdir, []), title('Gradient direction') figure, imshow(Gx, []), title('Directional gradient: X axis') figure, imshow(Gy, []), title('Directional gradient: Y axis')```

Input Arguments

collapse all

Input image, specified as a grayscale or binary image, that is, a numeric or logical 2-D matrix that must be nonsparse, or a gpuArray.

Data Types: `single` | `double` | `int8` | `int32` | `uint8` | `uint16` | `uint32` | `logical`

Input image, specified as a 2-D grayscale or binary gpuArray image.

Data Types: `single` | `double` | `int8` | `int32` | `uint8` | `uint16` | `uint32` | `logical`

Gradient operator, specified as one of the following values.

MethodDescription
`'sobel'`Sobel gradient operator (default)
`'prewitt'`Prewitt gradient operator
`'central'`

Central difference gradient: ```dI/dx = (I(x+1)- I(x-1))/2```

`'intermediate'`

Intermediate difference gradient: ```dI/dx = I(x+1) - I(x)```

Data Types: `char`

Output Arguments

collapse all

Directional gradient along the x-axis, returned as non-sparse matrix equal in size to image `I`. The x-axis points in the direction of increasing column subscripts. The output matrices are of class `double`, unless the input image is of class `single`, in which case they are of class `single`.

When the input image `I` is a gpuArray, `Gx` is a gpuArray.

Data Types: `single` | `double`

Directional gradient along the x-axis, returned as non-sparse gpuArray equal in size to image `I`. The x-axis points in the direction of increasing column subscripts. The output matrices are of class `double`, unless the input image is of class `single`, in which case they are of class `single`.

Data Types: `single` | `double`

Directional gradients along the y-axis, returned as non-sparse matrix equal in size to image `I`. The y-axis points in the direction of increasing row subscripts. The output matrices are of class `double`, unless the input image is of class `single`, in which case they are of class `single`.

Data Types: `single` | `double`

Directional gradients along the y-axis, returned as non-sparse gpuArray equal in size to image `I`. The y-axis points in the direction of increasing row subscripts. The output matrices are of class `double`, unless the input image is of class `single`, in which case they are of class `single`.

Data Types: `single` | `double`

collapse all

Tips

• When applying the gradient operator at the boundaries of the image, values outside the bounds of the image are assumed to equal the nearest image border value.

Algorithms

The algorithmic approach is to compute directional gradients with respect to the x-axis and y-axis. The x-axis is defined along the columns going right and the y-axis is defined along the rows going down.

`imgradientxy` does not normalize the gradient output. If the range of the gradient output image has to match the range of the input image, consider normalizing the gradient image, depending on the `method` argument used. For example, with a Sobel kernel, the normalization factor is 1/8, and for Prewitt, it is 1/6.