algorithm - iOS:优化位图模糊算法

标签 algorithm ios optimization blur

根据这个问题,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。也就是说,我们不必将所有这些添加都做两次。

  • http://en.wikipedia.org/wiki/Gaussian_blur给出更好的结果

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

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

    我仍然很好奇是否有任何现有的 NEON 代码可以执行此操作,我猜即使这样也不会改进图形芯片上的工作,所以没有人费心。

关于algorithm - iOS:优化位图模糊算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789454/

相关文章:

java - 是否可以在次二次时间内为多边形构造中轴?

c# - 从数组中删除屏蔽的条目

ios - 写入服务器中的文件时,作为 HTTP POST 发送的图像被损坏

c++ - 处理指针时,C++ 编译器可以优化掉代码吗?

mysql - 为什么 MongoDB 和 MySQL 比 grep 慢?

c# - 在 C# 中快速动态模糊搜索 100k+ 字符串

linux - 在不同目录中查找具有相同名称的文件并计算重复项

ios - 了解有关解析最新 SDK/Swift 1.2 的语法问题

ios - NSAttributedString 中的 HTML 呈现速度非常慢

c++ - 类(class)成员的最佳顺序是什么?