我试图了解 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
请参阅此文档)的近似(因此更快)版本。
它仍然返回结果,[-pi, pi]
因此添加2.pi
并取模(vl_mod_2pi_f
)将结果重新缩放为[0, 2.pi]
梯度角的表示方式。