网上有一篇非常快的模糊算法实现:SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现)。
名字叫 Exponential blur(指数模糊)。
在搜材料时搜到只搜到了代码:blur.cpp
两个链接的核心代码就是
*zR += (alpha * ((R << zprec) - *zR)) >> aprec;
事实上可以看出代码实现的就是 Deriche filter里提到的公式: a first order IIR, which equation is: y[n] = a*x[n] + (1-a)*y[n-1] 。
一阶的alpha参数代码里使用的是:
int alpha = (int)((1 << aprec) * (1.0f - std::exp(-2.3f / (radius + 1.f))