代码之家  ›  专栏  ›  技术社区  ›  gonzojive

在iPhone上用opengles卷积图像:可能吗?

  •  5
  • gonzojive  · 技术社区  · 15 年前

    我在网上搜索了几次,但都没有得到一个明确的答案。我有一个矩阵,我想卷积一个离散滤波器(例如,Sobel算子边缘检测)。用iPhone上的OpenGL-ES可以加速实现吗?

    如果是,怎么做?如果不是,还有其他的高性能技巧可以用来加速操作吗?能快速完成的神奇手臂装配操作?最终,我想在iPhone的ARM处理器上尽可能快地执行卷积运算。

    1 回复  |  直到 13 年前
        1
  •  14
  •   Cœur Gustavo Armenta    6 年前

    您应该能够使用OpenGL ES 2.0下的可编程明暗器来实现这一点。我在我的课上的视频中更详细地描述了OpenGL ES 2.0着色器 iTunes U .

    虽然我自己没有做过图像卷积,但我描述了一些用于Mac和iOS的GPU加速图像处理 here . 我提出 sample application 它使用GLSL着色器(基于苹果公司开发的核心图像过滤器),从iPhone的相机feed实时跟踪颜色。

    自从我写了这个,我就创造了一个 open source framework 基于上面的例子,它内置了图像卷积滤波器,从Sobel边缘检测到定制的3x3卷积核。它们的运行速度可以比CPU限制的实现快100倍。

    但是,如果要在CPU上执行此操作,则可以使用 Accelerate framework 在iPhone的NEON SIMD设备上运行一些操作。尤其是FFT运算(通常是图像卷积滤波器中的一个关键部分,我也听说过)可以通过使用Apple提供的例程获得大约4-5X的加速。