我试图了解VLFeat SIFT算法的内部工作原理,并且在计算图像梯度时会注意到以下声明:
*grad++ = vl_mod_2pi_f (vl_fast_atan2_f (gy, gx) + 2*VL_PI);
我想知道此表达式是否与
vl_fast_atan2_f (gy, gx)
不同,因为我们要添加2 PI
,并且RHS上的表达式的模数应计算为atan2(gy, gx)
吗? 最佳答案
vl_fast_atan2_f
是atan2
的近似版本(因此更快)(有关更多详细信息,请参见this doc)。
仍然会在[-pi, pi]
中返回结果,因此加2.pi
并取模数(vl_mod_2pi_f
)将结果重新缩放为[0, 2.pi]
,这就是表示坡度角的方式。
关于c - VLFeat:vlmodulo_2pi_f函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30558610/