iPhone 4S上的GPUImage Kuwahara滤镜

我正在使用Brad Larson的GPUImage框架。 但是,当我试图应用滤波器半径为5.0f kuwahara滤波器,我得到了iPhone 4S的文物。 (在更高性能的设备上工作正常)

源图像大小是2048x2048px.

通过阅读原始开发人员的评论,我了解到有一种看门狗定时器,当GPU花费太长时间运行时会触发。

所以我的问题是,什么是最大可能的分辨率为iPhone 4S我可以申请Kuwahara滤波器半径5.0f没有得到文物?

真的没有硬性的限制。 你看到的平铺工件是由于OpenGL ES看门狗定时器在花费太长时间后中止场景渲染。 如果你有一个花费时间大于2秒的框架来渲染,你的框架渲染将以这种方式被杀死。

确切的时间是硬件function,系统负载,着色器复杂性和iOS版本的function。 在GPUImage中,你几乎只能用Kuwahara滤镜看到这个,因为我使用了荒谬未被优化的着色器。 这是从一个出版物,这是使用桌面GPU这是做,这是一个像这样的移动GPU最坏的情况下操作。 有人提供了一个固定半径的版本,这个版本的速度要快得多,但是如果你想在除了最新的设备之外的任何东西上使用这个版本,那么你需要创build你自己的优化版本。

科威拉滤清器使方形的文物和非常复杂。

  1. 您可以使用通用的Kuwahara滤波器(例如8段)。
  2. 您可以手动生成着色器,而无需选定半径的周期。 为了减less从纹理读取的数量,你可以把戏:
    • 生成恒定半径的着色器。
    • 像素偏移量必须取决于当前半径和常数半径的比率。

你得到一些文物,但他们是艺术的(如帆布)。 而且科威拉将会更快。