我试图了解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)
?
答案 0 :(得分:1)
vl_fast_atan2_f
是atan2
的近似(因此更快)版本(有关详情,请参阅this doc)。
仍然会在[-pi, pi]
中返回结果,因此添加2.pi
并取模数(vl_mod_2pi_f
)会将结果重新调整为[0, 2.pi]
,这就是渐变角度的表示方式。< / p>