Sind die Core-Image-Filter in iOS 5.0 schnell genug für Echtzeit-video-Verarbeitung?
Nun, dass Apple portiert, die Core Image-framework über iOS 5.0, Frage ich mich: ist Core Image ist schnell genug, um anzuwenden, live-Filter und Effekte-Kamera-video?
Außerdem, was wäre ein guter Ausgangspunkt, um zu lernen, die Core Image-framework für iOS 5.0?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun, die Core Image wurde auf iOS für eine Weile, wir können darüber reden ein paar harten performance-zahlen. Ich erstellte eine benchmark-Anwendung als Teil der Tests für mein GPUImage Rahmen und profilierte die performance der raw-CPU-basierte Filter, die Core-Image-Filter und GPUImage Filter mit live-video-feeds. Der folgenden waren die Zeiten (in Millisekunden) an, nahmen jeder Anwendung eines einzigen gamma-filter, auf einem 640 x 480 video-frame aus der iPhone-Kamera (für zwei verschiedene hardware-Modelle mit zwei verschiedenen OS-Versionen):
Für Core Image, dies entspricht einer maximalen 9,4 FPS für eine einfache gamma-filter auf dem iPhone 4, aber auch über 60 FPS für das gleiche auf einem iPhone 4S. Dies ist über die einfachste Core-Image-filter, falls Sie einrichten können, so wird die Leistung sicherlich variieren bei komplexeren Operationen. Dieses würde scheinen, zu zeigen, dass die Core-Image-nicht-live-Verarbeitung schnell genug, um die übereinstimmung der iPhone-Kamera-rate auf dem iPhone 4 mit iOS 5, aber wie von iOS 6, die it-Prozesse video mehr als schnell genug, um live-filtern auf dem iPhone 4S und oben.
Quelle für diese benchmarks finden Sie in mein GitHub-repository), wenn Sie möchten, um zu sehen, wo ich diese zahlen aus.
Habe ich aktualisiert diese Antwort von meinem original, die wurde zu kritisch von Core-Image-Leistung. Die sepia-filter, das ich als Grundlage für den Vergleich war, nicht wenn Sie den gleichen Vorgang wie meine eigenen, so war es ein schlechter benchmark. Die Leistung von Core-Image-Filter auch deutlich verbessert in iOS 6, die dazu beigetragen, dass Sie mehr als schnell genug, um den Prozess live video auf dem iPhone 4S und bis. Auch habe ich seit dem fanden mehrere Fälle, wie groß der radius verwischt, wo die Core-Image deutlich übertrifft meine GPUImage Rahmen.
Vorherige Antwort für die Nachwelt:
Wie bei jeder Leistung-bezogene Frage, die Antwort hängt von der Komplexität der Filter, die Größe des Bildes gefiltert werden, und die performance-Eigenschaften des Geräts, laufen Sie, auf.
Weil die Core-Image hat gewesen verfügbar für eine Weile auf dem Mac, kann ich Sie auf die Die Core-Image-Programming Guide als Ressource für das lernen Rahmen. Ich kann nicht kommentieren, die iOS-spezifischen Elemente, angesichts der NDA, aber ich empfehle das video, für WWDC 2011 Sitzung 422 - Mit Core-Image auf iOS und Mac OS X.
Core-Image (meistens) verwendet die GPU für die Bildverarbeitung, so dass Sie sehen könnten, wie schnell OpenGL ES 2.0 Shader-Griff-Bildverarbeitung auf vorhandene Geräte. Ich haben einige Arbeit in diesem Bereich vor kurzem, und gefunden, dass das iPhone 4 tun könnten 60 FPS Verarbeitung mit einem einfachen shader auf Echtzeit-video zugeführt und in eine 480 x 320. Sie laden könnte meine Beispiel-Anwendung, und versuchen Sie zum anpassen der shader-und /oder video-input-Größe zu ermitteln, ob Ihr spezielles Gerät behandeln konnte, diese Verarbeitung zu einem anständigen framerate. Die Core-Image hinzufügen kann, ein wenig Aufwand, aber es hat auch einige clevere Optimierungen dafür, wie es organisiert-filter-Ketten.
Den langsamsten kompatible Geräte gibt, wäre das iPhone 3G S und die 3. generation iPod touch, aber Sie sind nicht so viel langsamer als das iPhone 4. Das iPad 2 bläst Sie alle Weg mit seiner massiven fragment Rechenleistung.
IMHO, Core Image ist immer Ihre erste Wahl sein, da iOS6.0.
Es gibt einige gute features, die Sie r gonna, wie zum Beispiel:
_CIglContext = [CIContext contextWithEAGLContext:_glContext options:opts]
;Diese sind alle genannten in WWDC2012 session Videos, die Core-Image-Teil. Mal schauen, vielleicht finden Sie Ihre Lösung.
Wird es nahezu in Echtzeit auf das iPhone 4 und weiterleiten. iPhone 3GS wird ein wenig abgehackt. iPhone 3 und vor wird nicht empfohlen.