如何在matlab中计算沿x和y轴的图像的渐变"方向"(不是幅度)?

Aad*_*adi 0 matlab

我使用了imgradientxy();但是它给出了像-600.i这样的值,需要角度范围在-180到180之间.两个方向分别.

And*_*uri 6

值为0和90.梯度在X和Y方向上计算,imgradientxy()您可以从其名称推断出来.

但是,某点的渐变定义为:

在此输入图像描述

你可以做到[Gx,Gy]=imgradientxy(img).

这意味着你的总梯度(不是"方向梯度",这是Gx和Gy是)是一个向量.该(Gxi,Gyi)矢量在点i.

计算向量的模数和角度是一个简单的代数事物:

模数,幅度,欧几里德范数或者你想要称之为:

m=norm([Gx,Gy]);
Run Code Online (Sandbox Code Playgroud)

和角度:

theta=atan(Gy/Gx); %radians
theta=atand(Gy/Gx); %degrees
Run Code Online (Sandbox Code Playgroud)