根据这个问题,iOS / GLES2: How to achieve Glow Effect ,我正在研究制作自己的模糊程序。
也许是这样的:
blur8bitGreyscaleBitmap(int resX, int resY, int passes, char* src, char* dest)
{
...
}
然后用轮流处理每个像素的东西填充它,将它扩散到它的邻居中,会产生微妙的模糊。多次重复这个过程会让模糊向外扩散。
还有比这更好的方法吗?
此外,这看起来就像是一种可以通过良好(可能是 NEON)优化使运行速度提高 20 倍的任务。
我正在寻找替代技术、代码和链接。
最佳答案
经过一番研究,我发现了以下内容,
可以先先模糊水平,然后再模糊垂直。这意味着,如果您将 5 个像素从左到右向下模糊到目标像素中,那就是 11+11 次操作而不是 11*11
最基本的是框模糊,简单地对框中的所有像素进行平均。这将是移动设备上实时模糊的选择。这可以进行大量优化,例如,如果第一个像素需要 A+B+C+D+E,那么对于下一个像素,我们可以简单地 -A 然后 +F。也就是说,我们不必将所有这些添加都做两次。
常用技术是使用 GLES2 着色器在图形芯片上完成工作,例如 http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/
我很好奇是否可以使用加速框架达到类似的优化水平。
我仍然很好奇是否有任何现有的 NEON 代码可以执行此操作,我猜即使这样也不会改进图形芯片上的工作,所以没有人费心。
关于algorithm - iOS:优化位图模糊算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789454/