2010-11-24 15 views
5

He buscado en Google algunas veces, pero no he recibido una respuesta directa. Tengo una matriz que me gustaría combinar con un filtro discreto (por ejemplo, el operador Sobel para la detección de bordes). ¿Es posible hacer esto de forma acelerada con OpenGL ES en el iPhone?Convolviendo una imagen con OpenGL ES en iPhone: ¿es posible?

Si es así, ¿cómo? Si no es así, ¿hay otros trucos de alto rendimiento que pueda usar para acelerar la operación? Operaciones de ensamblaje ARM mágico que pueden hacerlo rápido En última instancia, quiero realizar la convolución más rápida posible en el procesador ARM de un iPhone.

+0

ES 1.1 o 2.0? – genpfault

+0

Cualquiera que sea el soporte para iPhone 4 e iOS 4.1, que creo que es OpenGL ES 2.0 – gonzojive

Respuesta

14

Debería poder hacer esto usando sombreadores programables en OpenGL ES 2.0. Describo los sombreadores OpenGL ES 2.0 con más detalle en el video de mi clase en iTunes U.

Aunque no he realizado yo mismo la convolución de imagen, describo algunos procesadores de imagen acelerados por GPU para Mac y iOS here. Presento un sample application que usa sombreadores GLSL (basados ​​en los filtros Core Image desarrollados por Apple) que hace un seguimiento en color en tiempo real de la alimentación de la cámara del iPhone.

Desde que escribí esto, he creado un open source framework basado en el ejemplo anterior que tiene filtros de convolución de imagen incorporados, que van desde la detección de bordes de Sobel hasta los núcleos de convolución personalizados de 3x3. Pueden ejecutarse hasta 100 veces más rápido que las implementaciones de CPU.

Sin embargo, si tuviera que hacer esto en la CPU, es posible que pueda utilizar el Accelerate framework para ejecutar algunas de las operaciones en la unidad NEON SIMD del iPhone. En particular, las operaciones de FFT (que generalmente son un componente clave en los filtros de convolución de imágenes, o eso he escuchado) pueden obtener una aceleración de ~ 4-5X usando las rutinas que Apple proporciona aquí.

Cuestiones relacionadas