Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

imgradientxy

查找二维图像的定向梯度

说明

示例

[Gx,Gy] = imgradientxy(I) 返回灰度或二值图像 I 的定向梯度 GxGy

示例

[Gx,Gy] = imgradientxy(I,method) 使用指定的 method 返回定向梯度。

示例

全部折叠

将图像读入工作区。

I = imread('coins.png');

使用 Prewitt 梯度算子计算 xy 定向梯度。

[Gx, Gy] = imgradientxy(I,'prewitt');

显示定向梯度。

figure
imshowpair(Gx, Gy, 'montage');
title('Directional Gradients: x-direction, Gx (left), y-direction, Gy (right), using Prewitt method')

Figure contains an axes object. The axes object with title Directional Gradients: x-direction, Gx (left), y-direction, Gy (right), using Prewitt method contains an object of type image.

将图像读入工作区。

I = imread('coins.png');

计算 xy- 定向梯度。默认情况下,imgradientxy 使用 Sobel 梯度算子。

[Gx,Gy] = imgradientxy(I);

显示定向梯度。

imshowpair(Gx,Gy,'montage')
title('Directional Gradients Gx and Gy, Using Sobel Method')

Figure contains an axes object. The axes object with title Directional Gradients Gx and Gy, Using Sobel Method contains an object of type image.

使用定向梯度计算梯度幅值和方向。

[Gmag,Gdir] = imgradient(Gx,Gy);

显示梯度幅值和方向。

imshowpair(Gmag,Gdir,'montage')
title('Gradient Magnitude (Left) and Gradient Direction (Right)')

Figure contains an axes object. The axes object with title Gradient Magnitude (Left) and Gradient Direction (Right) contains an object of type image.

输入参数

全部折叠

输入图像,指定为二维灰度图像或二维二值图像。

数据类型: single | double | int8 | int32 | uint8 | uint16 | uint32 | logical

梯度算子,指定为下列值之一。

方法描述
'sobel'

Sobel 梯度算子。像素的梯度是 3×3 邻域内像素的加权和。在垂直 (y) 方向,权重为:

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]
在 x 方向,权重被转置。

'prewitt'

Prewitt 梯度算子。像素的梯度是 3×3 邻域内像素的加权和。在垂直 (y) 方向,权重为:

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]
在 x 方向,权重被转置。

'central'

中心差分梯度。一个像素的梯度是相邻像素的加权差。在 y 方向为 dI/dy = (I(y+1) - I(y-1))/2

'intermediate'

中间差分梯度。一个像素的梯度是相邻像素和当前像素之间的差。在 y 方向为 dI/dy = I(y+1) - I(y)

数据类型: char | string

输出参数

全部折叠

水平梯度,以与图像 I 大小相同的数值矩阵形式返回。水平 (x) 轴指向列下标递增的方向。Gx 的数据类型为 double,除非输入图像 I 的数据类型为 single,在这种情况下,Gx 的数据类型为 single

数据类型: single | double

垂直梯度,以与图像 I 大小相同的数值矩阵形式返回。垂直 (y) 轴指向行下标递增的方向。Gy 的数据类型为 double(输入图像 I 的数据类型为 single 时,Gy 的数据类型为 single)。

数据类型: single | double

提示

  • 当在图像边界应用梯度算子时,图像边界之外的值假定为等于最接近的图像边界值。

算法

算法用于计算相对于 x 轴和 y 轴的定向梯度。x 轴沿向右的列定义,而 y 轴沿向下的行定义。

imgradientxy 不会对梯度输出进行归一化。如果梯度输出图像的范围必须与输入图像的范围匹配,请考虑对梯度图像进行归一化,具体取决于所使用的 method 参数。例如,对于 Sobel 核,归一化因子是 1/8,对于 Prewitt 是 1/6。

扩展功能

版本历史记录

在 R2012b 中推出

全部展开