我在 OpenCL 中实现了一个简单的图像重采样器,它使用了 Lanczos 函数。
Lanczos 定义为:
用 C 写的:
inline
float lanczos(float x, float a) {
if( x > fabs(a) ) return 0.0f;
if( x == 0.0f ) return 1.0f;
float pix = pi * x;
return sinc(pix)*sinc(pix/a);
}
为什么有 0 的特殊情况?当我将 0 传递给公式时,它返回 1。但如果我不包括对 x == 0 的检查,它就不起作用。
有人可以为我解释一下吗?弗洛里安