iOS:针对位图模糊优化的算法

3

继承自这个问题,iOS / GLES2: How to achieve Glow Effect,我正在研究制作自己的模糊处理程序。

也许可以尝试以下方法:

blur8bitGreyscaleBitmap(int resX, int resY, int passes, char* src, char* dest)
{
    ...
}

然后,用一种逐个处理每个像素并将其扩散到相邻像素的方法来填充它,可以创建一个微妙的模糊效果。多次迭代此过程将使模糊向外扩散。

是否有比这更好的方法?

此外,这看起来就是一项可以通过良好的(可能是NEON)优化使其运行速度提高20倍的任务。

我正在寻找其他技术、代码和链接。

1个回答

4

经过一些研究,我发现以下内容:

  • 水平模糊后再进行垂直模糊是可以的。这意味着如果你将五个像素左右上下模糊到目标像素中,需要进行11+11次操作而不是11*11次。

  • 最基本的是盒式模糊,简单地对盒子中的所有像素求平均值。这是移动设备实时模糊的选择。它可以被大量优化,例如,如果第一个像素需要A+B+C+D+E,那么对于下一个像素,我们只需-A然后+F。也就是说,我们不必做两次所有的加法。

  • http://en.wikipedia.org/wiki/Gaussian_blur 可以得到更好的结果。

  • 常见的技术是使用GLES2着色器在图形芯片上完成工作,例如http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/

    我有点好奇是否可以使用加速框架达到类似的优化水平。

    我仍然好奇是否有现成的NEON代码可以完成这项工作,我的猜测是即使有,也不会比在图形芯片上完成工作更好,因此没有人费心去做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接