关于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