Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Matlab中的imgradient函数_Matlab - Fatal编程技术网

关于Matlab中的imgradient函数

关于Matlab中的imgradient函数,matlab,Matlab,我对imgradient函数中使用的方程有疑问。 在127行中: 为什么Gy必须是负数?图像中的y轴是反向的(它向下而不是向上增加)。这会使角度按顺时针方向增加,而不是按习惯的逆时针方向增加。通过翻转渐变的y分量,这条线计算“正常”意义上的角度 使用@Dan在评论中链接的图表: 在该图中,y向上增加,角度逆时针增加。在图像中,坐标系被翻转。这导致了违反直觉的角度。因此,他们将y轴反转以计算角度。它强制y轴位于第四象限:。为什么你要强迫它在第四象限,我不知道。@Dan:如果它在第一象限,它会强迫

我对
imgradient
函数中使用的方程有疑问。 在127行中:


为什么
Gy
必须是负数?

图像中的y轴是反向的(它向下而不是向上增加)。这会使角度按顺时针方向增加,而不是按习惯的逆时针方向增加。通过翻转渐变的y分量,这条线计算“正常”意义上的角度

使用@Dan在评论中链接的图表:


在该图中,y向上增加,角度逆时针增加。在图像中,坐标系被翻转。这导致了违反直觉的角度。因此,他们将y轴反转以计算角度。

它强制y轴位于第四象限:。为什么你要强迫它在第四象限,我不知道。@Dan:如果它在第一象限,它会强迫它在第四象限。@CrisLuengo我的意思是我不知道为什么你需要在
imgradient
函数的逻辑方面这样做,如中所述,我不确定OP是否询问
-
的功能,或者为什么在函数逻辑方面有必要确保
Gdir
位于第四个四元组(尽管这实际上是假设
Gy
Gx
都是正的)。抱歉,我仍然无法获得您编写的内容
atan2
能够将结果从
-PI
返回到
PI
。。。为什么我们还要加上负数呢。也许你有别的解释方法?提前谢谢@ggplayerlek:图像中计算的梯度方向(即不带负号)将指向用户可能会发现错误的方向。因为你觉得+45度的方向会被计算为-45度。他们在那里加上负号来翻转角度,因此返回的值对您来说是直观的。另一种方法是将负数放在等式中的
atan2
前面。
    Gdir = atan2(-Gy,Gx)*180/pi; % Radians to degrees