主要内容

imgradient

求二维图像的梯度幅值和梯度方向

描述

GmagGdir= imgradient(渐变的)返回梯度大小,Gmag,梯度方向为Gdir,表示二维灰度或二值图像

例子

GmagGdir= imgradient(渐变的)方法返回梯度大小和方向方法

例子

GmagGdir= imgradient(渐变的)Gx孔侑从方向梯度返回梯度大小和方向Gx而且孔侑x而且y方向,分别。

例子

全部折叠

将图像读入工作区。

I = imread(“coins.png”);

计算梯度的大小和方向,指定Prewitt梯度算子。

[Gmag, Gdir] = imgradient(I,“普瑞维特”);

显示梯度大小和方向。

图imshowpair(Gmag, Gdir,“蒙太奇”);标题(“使用Prewitt方法,梯度幅度,Gmag(左),梯度方向,Gdir(右)”

图中包含一个axes对象。标题为梯度幅度Gmag(左)和梯度方向Gdir(右)的轴对象使用Prewitt方法包含一个类型为图像的对象。

将图像读入工作区。

I = imread(“coins.png”);

计算x- - -y -方向梯度。默认情况下,imgradientxy使用Sobel梯度算子。

[Gx,Gy] = imgradientxy(I);

显示方向梯度。

imshowpair (Gx Gy,“蒙太奇”)标题(“Sobel法定向梯度Gx和Gy”

图中包含一个axes对象。标题为方向梯度Gx和Gy的轴对象,使用Sobel方法包含一个类型为图像的对象。

计算梯度的大小和方向使用方向梯度。

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

显示梯度大小和方向。

imshowpair (Gmag Gdir,“蒙太奇”)标题(“梯度幅度(左)和梯度方向(右)”

图中包含一个axes对象。标题为梯度幅度(左)和梯度方向(右)的轴对象包含一个类型为图像的对象。

输入参数

全部折叠

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

数据类型:||int8|int32|uint8|uint16|uint32|逻辑

梯度运算符,指定为以下值之一。

方法 描述
“索贝尔”

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

[1 2 1 0 0 0 0 -1 -2 -1]
x方向,权重互换了。

“普瑞维特”

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

[1 1 1 0 0 0 0 -1 -1]
x方向,权重互换了。

“中央”

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

“中间”

中间差梯度。像素的梯度是相邻像素与当前像素之间的差值。在y方向,dI/dy = I(y+1) - I(y)

“罗伯特”

罗伯茨梯度算子。像素的梯度是对角相邻像素之间的差值。对于一个方向的梯度,权值为:

[1 0 0 -1]
在正交方向上,权重沿垂直轴翻转。

数据类型:字符|字符串

水平梯度,指定为数值矩阵。水平(x)轴指向增加列下标的方向。您可以使用imgradientxy函数来计算Gx

数据类型:||int8|int32|uint8|uint16|uint32

垂直梯度,指定为大小相同的数值矩阵Gx.垂直的(y)轴指向增加行下标的方向。您可以使用imgradientxy函数来计算孔侑

数据类型:||int8|int32|uint8|uint16|uint32

输出参数

全部折叠

梯度幅值,作为与图像大小相同的数字矩阵返回或者方向梯度Gx而且孔侑Gmag是一流的,除非输入图像或方向梯度是数据类型的,在这种情况下,它是数据类型

数据类型:|

梯度方向,作为与梯度大小相同的数值矩阵返回GmagGdir包含从正方向逆时针测量的角度范围[-180,180]x设在。(x-轴指向增加列下标的方向。)Gdir是一流的,除非输入图像或者方向梯度是数据类型的,在这种情况下,它是数据类型

数据类型:|

提示

  • 当在图像边界处应用梯度算子时,假设图像边界外的值等于最近的图像边界值。这类似于“复制”的边界选项imfilter

算法

采用的算法方法imgradient对于列出的每一种梯度方法,首先计算方向梯度,Gx而且孔侑,在x而且y方向,分别。水平(x)轴指向增加列下标的方向。垂直的(y)轴指向增加行下标的方向。然后从它们的正交分量计算梯度的大小和方向Gx而且孔侑

imgradient不归一化梯度输出。如果梯度输出图像的范围必须与输入图像的范围相匹配,则考虑归一化梯度图像,这取决于方法参数使用。例如,对于Sobel核,归一化因子是1/8,对于Prewitt是1/6,对于Roberts是1/2。

扩展功能

版本历史

在R2012b中介绍