2016-07-28 80 views
0

我想要做的iOS中一个闪耀的效果,看起来像这样快速径向模糊的IOS

enter image description here

我发现了一个径向模糊算法的OpenCV(https://stackoverflow.com/a/13699826/6545468) ,结果不是很满意

enter image description here

光束是“离散的”,最后的结果取决于remap(变焦)迭代,即耗时。 我还发现了一些OpenGL着色器,只是类似的实现。

那么,有没有什么办法可以在iOS应用中实现After Effects CC Radial Fast Blur(平滑和快速)?

回答

0

看着顶部的图像我会说你没有办法在一般的图像上做这么快,绝不是。虽然这真的取决于图像大小和“快速”的定义,因此可以说在1秒的大小的图像上绘制此图像将是一项挑战。

对于一般的图片,你将有2个操作步骤:

首先是重绘褪色图像N次以帆布其中N是一个数字,影响最大偏移具有像素。在顶部图像,这意味着疯狂200重绘。如果你有一些openGL系统,你可以尝试和测试绘制这么多样本需要多长时间(没有任何影响,只需重绘到纹理),如果你接近理想的结果,你可以尝试实现实际的逻辑。

第二步是获取每个片段(像素)的周围相关样本,这是高斯模糊最常用的过程。此过程通常使用7x7至11x11范围内的像素矩阵,并且仍然是缓慢且繁重的操作,对于大图像效果不是很模糊。在你的情况下,我们正在查看大约200x200的样本,这是一个总NO-NO,我甚至不打算尝试它。

如果您尝试组合2个过程,可能会变得有趣。您可以尝试使用第二个程序首先模糊输入图像,这将有效地将对象放大几个像素。然后,您可以(仅用于照亮)使用第一个步骤以减少样本数量重新绘制模糊图像。例如,如果模糊的大小约为5个像素,那么您可能可以减少2-3次的重绘次数,这可能是相当的性能增益。这个过程不会让你的效果如同你在图像上一样清晰,但你在这里很幸运:你发布的第二张图片已经完成了你所需要的测试。只需创建一个您已经使用的图像的模糊版本,并测试需要多少个样本才能获得好的结果。

仍然有很多可能的优化可能影响质量或不影响质量。如果你正在进行高斯模糊处理,通常可以安全地对图像进行一下采样。每个维度的缩放比例可以将碎片数量减少4,这当然是值得尝试的事情。我会尝试以下方法:

  • 画出图像下采样缓冲器直接应用使用上的纹理
  • 线性模式重绘一些N个样本上的下采样缓冲器的光泽效果的高斯模糊
  • 重绘结果上采样缓冲区(原始大小)应用一些高斯模糊再次
  • 绘制原始图像在产生阴影

如果你会做任何这些让河畔e保持表现的轨迹。完成后,如果你分享了结果(即使你失败了),这将是很好的。