在iPhone上使用OpenGL ES卷积图像:可行吗?

5
我已经搜索了几次,但没有得到明确的答案。我有一个矩阵,想要用离散滤波器(例如Sobel算子用于边缘检测)进行卷积。在iPhone上,是否可以通过OpenGL ES以加速的方式完成此操作?
如果可以,应该怎么做?如果不行,是否有其他高性能技巧可用于加速操作?是否有神奇的ARM汇编操作可以快速完成?最终,我想在iPhone的ARM处理器上尽可能地快速执行卷积。

无论iPhone 4和iOS 4.1支持什么,我相信它是OpenGL ES 2.0。 - gonzojive
1个回答

14

使用OpenGL ES 2.0中的可编程着色器应该可以实现这一点。我在iTunes U上的课程视频中详细介绍了OpenGL ES 2.0着色器。

虽然我自己没有做过图像卷积,但我在这里描述了一些针对Mac和iOS的GPU加速图像处理方法。这里。我提供了一个示例应用程序,它使用基于苹果Core Image滤镜开发的GLSL着色器,在iPhone的摄像头中实时跟踪颜色。

自从我写下这篇文章以来,我已经创建了一个开源框架,它基于上述示例,并具有内置的图像卷积滤镜,从Sobel边缘检测到自定义3x3卷积核。这些滤镜比CPU-bound实现快100倍。

但是,如果您想在CPU上执行此操作,则可以使用Accelerate框架在iPhone的NEON SIMD单元上运行一些操作。特别是,FFT操作(通常是图像卷积滤镜的关键组成部分,据我所知)可以通过使用苹果提供的例程获得约4-5倍的速度提升。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接