首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios中的快速径向模糊

ios中的快速径向模糊
EN

Stack Overflow用户
提问于 2016-07-28 03:55:23
回答 1查看 865关注 0票数 0

我想在iOS中做一个发光效果,如下所示

我在OpenCV (https://stackoverflow.com/a/13699826/6545468)中找到了一种径向模糊算法,结果并不令人满意。

光束是“离散的”,最终的结果取决于remap(变焦)的迭代,这是一种耗时的方法。我还发现了一些OpenGL阴影,只是类似的实现。

那么,在iOS应用程序(平滑和快速)中有什么方法可以实现后效应CC径向快速模糊吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-28 09:34:12

看一下最上面的图像,我想说,在一般的图像上,你没有办法这么快地完成。虽然这确实取决于图像大小和“快速”的定义,所以让我们说,在大小为1024x1024的图像上绘制小于1秒的图像将是一个挑战。

对于一般的图像,您将有两个步骤:

首先是将褪色的图像N时间重画到画布上,其中N是最大效果偏移所具有的许多像素。在最上面的图片上,这意味着疯狂的200次重绘。如果您有一些openGL系统,您可以尝试并测试绘制这么多样本需要多长时间(没有任何效果,只需重绘到纹理),如果您获得了接近期望的结果,则可以尝试实现实际的逻辑.

第二种方法是获取每个片段(像素)周围的相关样本,这是高斯模糊最常用的处理方法。这个过程通常使用从7x7到11x11范围内的像素矩阵,并且仍然是一个缓慢和繁重的操作,而且在大图像上效果也不是很模糊。在你的例子中,我们再次看了大约200x200个样本,这是一个完全没有-不,我甚至不会费心尝试它。

如果你尝试将这两种程序结合起来,事情可能会变得有趣。首先,您可以尝试用第二个步骤模糊输入图像,这将有效地将对象放大几个像素。然后,您可以(只是为了光线)重新绘制模糊的图像使用第一个步骤,减少样本数。例如,如果模糊的大小约为5像素,那么您可能可以减少2-3倍的重绘次数,这可能是相当高的性能增益。这个过程不会使效果像你所拥有的图像那么尖锐,但是你在这里很幸运:你发布的第二个图像已经做了你需要测试的事情。只需创建您已经使用的图像的模糊版本,并测试需要多少样本才能获得良好的结果。

仍然有很多可能的优化,这些优化可能影响或不影响效果的质量。如果你正在做一个高斯模糊,它通常是安全的下来-采样图像一点。每维2的标度可以将碎片的数量减少4,这肯定是值得尝试的。我将尝试以下几点:

  • 直接将图像绘制到下采样缓冲区,在纹理上使用线性模式的高斯模糊。
  • 重绘N个样本,以反映下采样缓冲器的发光效应
  • 再次使用高斯模糊将结果重绘到上采样缓冲区(原始大小)。
  • 在生成的阴影上绘制原始图像。

如果您要这样做,请确保跟踪性能。完成之后,如果您能够共享结果(即使失败了),那就太好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38626837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档