我用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的检查,它就不起作用。
有没有人能帮我解释一下?弗洛里安
发布于 2011-01-15 00:04:30
天啊..。我已经研究lanczos函数好几个小时了.没有注意到sinc实际上是:
sinc -> sin(x)/x所以对于0的特殊情况是防止被零除。简单明了。
https://stackoverflow.com/questions/4692996
复制相似问题