文档

imgradient

图像的梯度大小和方向

语法

[Gmag,Gdir] = imgradient(I)
[Gmag,Gdir] = imgradient(I,method)
[gpuarrayGmag,gpuarrayGdir] = imgradient(gpuarrayI,___
[Gmag,Gdir] = imgradient(Gx,Gy)
[gpuarrayGmag,gpuarrayGdir] = imgradient(gpuarrayGx,gpuarrayGy)

描述

GmagGdir= imgradient(返回梯度大小,Gmag,为梯度方向,Gdir,为灰度或二值图像

例子

GmagGdir= imgradient(方法返回指定的梯度大小和方向方法

例子

gpuarrayGmaggpuarrayGdir= imgradient(gpuarrayI___对GPU进行操作。输入图像和返回值是gpuArrays。此语法需要并行计算工具箱™。

例子

GmagGdir= imgradient(Gx孔侑的方向渐变返回梯度大小和方向x设在,Gx,以及y设在,孔侑,如返回的imgradientxy.的x-axis指向增加列下标的方向y-axis指向行下标增加的方向。

例子

gpuarrayGmaggpuarrayGdir= imgradient(gpuarrayGxgpuarrayGy对GPU进行操作。输入x而且y梯度和返回值是gpuArrays。此语法需要“并行计算工具箱”。

例子

全部折叠

将图像读入工作区。

I = imread(“coins.png”);

计算梯度幅度和方向,指定Prewitt梯度算子。

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

显示梯度大小和方向。

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

读取图像和计算梯度幅度和梯度方向使用Prewitt的梯度算子。

读取图像。

I = gpuArray(imread(“coins.png”));imshow(我)

计算梯度和显示。

[Gmag, Gdir] = imgradient(I,“普瑞维特”);figure, imshow(Gmag, []), title(“梯度大小”imshow(Gdir, []), title(的梯度方向

将图像读入工作区。

I = imread(“coins.png”);

计算x- - -y -方向梯度,默认使用Sobel梯度操作符。

[Gx, Gy] = imgradientxy(I);

显示方向渐变。

图imshowpair(Gx, Gy,“蒙太奇”)标题(方向梯度,Gx和Gy,使用索贝尔方法

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

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

显示梯度大小和方向。

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


                   

读取图像并返回方向梯度,Gx而且孔侑,以及梯度大小和方向,Gmag而且Gdir,使用默认的Sobel梯度算子。

读取图像。

I = gpuArray(imread(“coins.png”))

计算梯度并显示它们。请注意,当您指定一个gpuArray到imgradientxy,它返回Gx而且孔侑gpuArrays。结果与前面的示例相同。

[Gx, Gy] = imgradientxy(I);[Gmag, Gdir] = imgradient(Gx, Gy);figure, imshow(Gmag, []), title(“梯度大小”imshow(Gdir, []), title(的梯度方向imshow(Gx, []), title(方向梯度:X轴) figure, imshow(Gy, []), title(“方向梯度:Y轴”

输入参数

全部折叠

输入图像,指定为灰度或二值图像,即必须是非稀疏的数字或逻辑2-D矩阵。

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

输入图像,指定为二维灰度或二进制gpuArray图像。

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

渐变运算符,指定为以下值之一。

方法 描述
“索贝尔” Sobel梯度运算符(默认)
“普瑞维特” Prewitt梯度算子
“中央”

中心差梯度:dI/dx = I(x+1) - I(x-1) /2

“中间”

中间差梯度:dI/dx = I(x+1) - I(x)

“罗伯特” 罗伯茨梯度算子

数据类型:字符|字符串

沿方向梯度x-axis(水平),指定为与图像大小相等的非稀疏矩阵,通常由imgradientxy

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

沿方向梯度y-axis(垂直),指定为与图像大小相等的非稀疏矩阵,通常由imgradientxy

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

沿方向梯度x-axis,指定为gpuArray,通常由imgradientxy

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

沿方向梯度y-axis,指定为gpuArray,通常由imgradientxy

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

输出参数

全部折叠

梯度幅度,作为与图像大小相同的非稀疏矩阵返回Gmag是一流的,除非输入图像是一流的在这种情况下,它是一流的

数据类型:|

梯度大小,返回为与图像大小相同的非稀疏gpuArrayGmag是一流的,除非输入图像是一流的在这种情况下,它是一流的

数据类型:|

梯度方向,返回为与图像大小相同的非稀疏矩阵Gdir包含在从正方向逆时针测量的范围[-180 180]内的角度(以角度为单位)x设在。(x-axis指向增加列下标的方向。)Gdir是双类的,除非输入图像是单类的,在这种情况下,它是单类的。

Gx而且孔侑gpuArrays,Gdir是一个gpuArray。

数据类型:|

梯度方向,返回为与图像大小相同的非稀疏gpuArrayGdir包含在从正方向逆时针测量的范围[-180 180]内的角度(以角度为单位)x设在。(x-axis指向增加列下标的方向。)Gdir是双类的,除非输入图像是单类的,在这种情况下,它是单类的。

数据类型:|

提示

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

算法

采用的算法方法imgradient对于列出的每个梯度方法,首先是计算方向梯度,Gx而且孔侑,关于x设在和y设在。的x-axis沿着往右的列定义,而y-axis是沿着向下的行定义的。然后从它们的正交分量计算梯度大小和方向Gx而且孔侑

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

在R2012b中引入

这个话题有用吗?