查找二维图像的梯度大小和方向
Syntax
[Gmag,Gdir] = imgradient(I)
[Gmag,Gdir] = imgradient(I,method)
[Gmag,Gdir] = imgradient(Gx,Gy)
Description
[Gmag,Gdir] = imgradient(I)返回二维灰度或二进制图像I的梯度大小Gmag和梯度方向Gdir。
[Gmag,Gdir] = imgradient(I,method)使用指定的方法返回梯度大小和方向。
[Gmag,Gdir] = imgradient(Gx,Gy)分别从x和y方向的方向梯度Gx和Gy返回梯度大小和方向。
Examples
使用Prewitt方法计算梯度幅度和方向
clear all
close all
clc
I = imread('coins.png');
%计算梯度大小和方向,并指定Prewitt梯度算子。
[Gmag, Gdir] = imgradient(I,'prewitt');
%显示梯度大小和方向。
figure
imshowpair(Gmag, Gdir, 'montage');
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method')
使用方向梯度计算梯度幅度和方向
clear all
close all
clc
I = imread('coins.png');
%计算x和y方向的梯度。 默认情况下,imgradientxy使用Sobel梯度运算符。
[Gx,Gy] = imgradientxy(I);
%显示方向梯度
imshowpair(Gx,Gy,'montage')
title('Directional Gradients Gx and Gy, Using Sobel Method')
%使用方向梯度计算梯度大小和方向。
[Gmag,Gdir] = imgradient(Gx,Gy);
%显示梯度大小和方向。
imshowpair(Gmag,Gdir,'montage')
title('Gradient Magnitude (Left) and Gradient Direction (Right)')
Input Arguments
method — Gradient operator
‘sobel’ (default) | ‘prewitt’ | ‘central’ | ‘intermediate’ | ‘roberts’
Gradient operator, specified as one of the following values.
Method | Description |
---|---|
‘sobel’ | Sobel梯度算子。 像素的梯度是3 x 3邻域中像素的加权和。 对于垂直(y)方向上的渐变,权重为:[1 2 1 [ 1 2 1 ; 0 0 0; -1 -2 -1 ] 权重在x方向上进行转置。 |
‘prewitt’ | Prewitt梯度算子。 像素的梯度是3 x 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) |
‘roberts’ | 罗伯茨梯度算子。 像素的梯度是对角相邻像素之间的差。 对于一个方向上的渐变,权重为:[ 1 0 ; 0 -1 ] 在正交方向上,权重沿垂直轴翻转。 |
Gx — Horizontal gradient
水平渐变,指定为数字矩阵。 水平(x)轴指向列下标增加的方向。 可以使用imgradientxy函数来计算Gx。
Gy — Vertical gradient
同Gx类似
Output Arguments
Gmag —梯度量级
梯度大小,以与图像I大小相同的数字矩阵或方向梯度Gx和Gy返回。 Gmag是双类的,除非输入图像或方向梯度是单类的,在这种情况下,它是单类的。
Gdir — Gradient direction梯度方向,以与梯度幅度Gmag相同大小的数字矩阵形式返回。 Gdir包含从正x轴逆时针测量的[-180,180]范围内的角度。 (x轴指向增加的列下标的方向。)Gdir为double类,除非输入图像I或方向梯度为single类,在这种情况下,它为single类。
Tip
当在图像的边界处应用梯度算符时,假定图像边界之外的值等于最近的图像边界值。 这类似于imfilter中的“replicate”边界选项。
Algorithms
对于所列的每种梯度方法,算法都是渐进的,首先要分别计算x和y方向的方向梯度Gx和Gy。 水平(x)轴指向列下标增加的方向。 垂直(y)轴指向行下标增加的方向。 然后根据其正交分量Gx和Gy计算梯度的大小和方向。
不渐进不会将梯度输出标准化。 如果梯度输出图像的范围必须与输入图像的范围匹配,请考虑根据所使用的方法参数对梯度图像进行规格化。 例如,对于Sobel内核,归一化因子为1/8,对于Prewitt,归一化因子为1/6,对于Roberts,归一化因子为1/2。