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

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

光束是“离散的”,最终的结果取决于remap(变焦)的迭代,这是一种耗时的方法。我还发现了一些OpenGL阴影,只是类似的实现。
那么,在iOS应用程序(平滑和快速)中有什么方法可以实现后效应CC径向快速模糊吗?
发布于 2016-07-28 09:34:12
看一下最上面的图像,我想说,在一般的图像上,你没有办法这么快地完成。虽然这确实取决于图像大小和“快速”的定义,所以让我们说,在大小为1024x1024的图像上绘制小于1秒的图像将是一个挑战。
对于一般的图像,您将有两个步骤:
首先是将褪色的图像N时间重画到画布上,其中N是最大效果偏移所具有的许多像素。在最上面的图片上,这意味着疯狂的200次重绘。如果您有一些openGL系统,您可以尝试并测试绘制这么多样本需要多长时间(没有任何效果,只需重绘到纹理),如果您获得了接近期望的结果,则可以尝试实现实际的逻辑.
第二种方法是获取每个片段(像素)周围的相关样本,这是高斯模糊最常用的处理方法。这个过程通常使用从7x7到11x11范围内的像素矩阵,并且仍然是一个缓慢和繁重的操作,而且在大图像上效果也不是很模糊。在你的例子中,我们再次看了大约200x200个样本,这是一个完全没有-不,我甚至不会费心尝试它。
如果你尝试将这两种程序结合起来,事情可能会变得有趣。首先,您可以尝试用第二个步骤模糊输入图像,这将有效地将对象放大几个像素。然后,您可以(只是为了光线)重新绘制模糊的图像使用第一个步骤,减少样本数。例如,如果模糊的大小约为5像素,那么您可能可以减少2-3倍的重绘次数,这可能是相当高的性能增益。这个过程不会使效果像你所拥有的图像那么尖锐,但是你在这里很幸运:你发布的第二个图像已经做了你需要测试的事情。只需创建您已经使用的图像的模糊版本,并测试需要多少样本才能获得良好的结果。
仍然有很多可能的优化,这些优化可能影响或不影响效果的质量。如果你正在做一个高斯模糊,它通常是安全的下来-采样图像一点。每维2的标度可以将碎片的数量减少4,这肯定是值得尝试的。我将尝试以下几点:
如果您要这样做,请确保跟踪性能。完成之后,如果您能够共享结果(即使失败了),那就太好了。
https://stackoverflow.com/questions/38626837
复制相似问题