Comment mettre en œuvre rapide des filtres d'image sur la plate-forme iOS

Je suis en train de travailler sur une application iOS où l'utilisateur peut appliquer une série de filtres photo. Chaque filtre est essentiellement un ensemble de scripts Photoshop avec des paramètres spécifiques. Cette action sont les suivants:

  • Réglage des niveaux
  • Luminosité /Contraste
  • Teinte /Saturation
  • Uniques et multiples en superposition

Je l'ai répété toutes ces actions dans mon code à l'aide des expressions arithmétiques en parcourant l'ensemble des pixels de l'image. Mais quand je lance mon application sur iPhone 4, chaque filtre prend environ 3 à 4 secondes pour appliquer ce qui est tout à fait un peu de temps pour l'utilisateur d'attendre. La taille de l'image 640 x 640 px qui est @2x de mon point de vue taille, car elle est affichée sur un écran Retina. J'ai trouvé que mon principal problème est que les niveaux des modifications qui sont l'appel de la pow() fonction C chaque fois que j'ai besoin d'ajuster le gamma. Je suis à l'aide de flotteurs pas de doubles, bien sûr, parce que ARMv6 et ARMv7 sont lents avec des doubles. Essayé d'activer et de désactiver le Pouce et obtenu le même résultat.

Exemple de la plus simple filtre dans mon application qui s'exécute assez rapidement si (2 secondes). Les autres filtres comprend plusieurs expressions et pow() appelle ce qui le rend lent.

https://gist.github.com/1156760

J'ai vu quelques solutions qui sont à l'aide d'Accélérer Cadre vDSP transformations de matrice rapide d'images modifications. J'ai aussi vu OpenGL ES solutions. Je ne suis pas sûr qu'ils sont en mesure de mes besoins. Mais probablement c'est juste une question de traduire ma série de changements dans certains bonne matrice de convolution?

Tout conseil serait utile.

Merci,

Andrey.

  • Vous devriez poster cette question sur les Forums des Développeurs Apple ainsi.