【问题标题】:Convolving an image with OpenGL ES on iPhone: possible?在 iPhone 上使用 OpenGL ES 卷积图像:可能吗?
【发布时间】:2010-11-24 19:30:57
【问题描述】:

我已经用谷歌搜索了几次,但我没有得到一个直接的答案。我有一个矩阵,我想与一个离散滤波器(例如用于边缘检测的 Sobel 算子)进行卷积。是否可以在 iPhone 上使用 OpenGL ES 以加速的方式做到这一点?

如果是,如何?如果不是,我可以使用其他高性能技巧来加速操作吗?可以快速完成的神奇 ARM 汇编操作?最终,我希望在 iPhone 的 ARM 处理器上尽可能快地执行卷积。

【问题讨论】:

  • 无论 iPhone 4 和 iOS 4.1 支持什么,我相信都是 OpenGL ES 2.0

标签: iphone performance opengl-es computer-vision


【解决方案1】:

您应该能够使用 OpenGL ES 2.0 下的可编程着色器来执行此操作。我在iTunes U 上的课程视频中更详细地描述了 OpenGL ES 2.0 着色器。

虽然我自己没有做过图像卷积,但我描述了一些用于 Mac 和 iOS 的 GPU 加速图像处理here。我展示了一个sample application,它使用 GLSL 着色器(基于 Apple 开发的 Core Image 过滤器)从 iPhone 的摄像头馈送中进行实时颜色跟踪。

自从我写这篇文章以来,我已经基于上面的示例创建了一个open source framework,它具有内置的图像卷积过滤器,范围从 Sobel 边缘检测到自定义 3x3 卷积核。它们的运行速度比受 CPU 限制的实现快 100 倍。

但是,如果您要在 CPU 上执行此操作,您也许可以使用Accelerate framework 在 iPhone 的 NEON SIMD 单元上运行一些操作。特别是,FFT 运算(通常是图像卷积滤波器中的关键组件,或者我听说过)可以通过使用 Apple 在此处提供的例程获得约 4-5 倍的加速。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多