【发布时间】:2015-07-31 08:25:16
【问题描述】:
我需要一个非常快的 atan2 来从 sobel 值中获取梯度(我正在实施精明的边缘算法。)。有谁知道一个非常快速的实现,最好是内在函数(SIMD)或非常快速的近似值。 (我认为一个近似值就足够了,因为这些值四舍五入到 0°、45°、90°、135°)
提前致谢
添加:我知道英特尔在 SVML 中的 IPP atan2 很遗憾我无法使用它。
【问题讨论】:
-
如果您只四舍五入到几个角度值,只需检查参数的符号并将它们的大小比率与已知阈值进行比较。
-
为什么你认为
std::atan2()很慢?你测量过它的CPU时间吗?你看过 C++ 编译器在 Release 模式下生成的反汇编吗?atan2不是已经是一条 FPU 指令了吗? -
慢是一种观点。第一个 std::atan2 对我的目的来说太准确了,它不使用 simd 指令。
标签: c++ trigonometry intrinsics