2011-07-08 10 views

答えて

3

iPhone 4以降ではほとんどリアルタイムになります。 iPhone 3GSは少し不安定になります。 iPhone 3以前はお勧めしません。

55

ここで、Core ImageはしばらくiOS上にあったので、いくつかのハードパフォーマンスの数字について話すことができます。 GPUImageフレームワークのテストの一部としてベンチマークアプリケーションを作成し、生のCPUベースのフィルタ、コアイメージフィルタ、およびライブビデオフィードを使用したGPUImageフィルタのパフォーマンスをプロファイリングしました。 、コアイメージのために

   iPhone 4 (iOS 5) | iPhone 4S (iOS 6) 
------------------------------------------------ 
CPU   458 ms (2.2 FPS)  183 ms (5.5 FPS) 
Core Image 106 ms (6.7 FPS)  8.2 ms (122 FPS) 
GPUImage  2.5 ms (400 FPS)  1.8 ms (555 FPS) 

:以下は倍(ミリ秒単位)は、それぞれ(二つの異なるOSのバージョンを実行している2つの異なるハードウェアモデル)、iPhoneのカメラから640x480の映像フレーム上の単一のガンマフィルタを適用するためにかかったましたこれは、iPhone 4の単純なガンマフィルタでは最大9.4 FPSになりますが、iPhone 4Sでは60 FPSをはるかに上回ります。これは設定可能な最も単純なCore Imageフィルタのケースです。そのため、複雑な操作でもパフォーマンスは確実に変わります。これは、Core ImageがiOS 5を実行しているiPhone 4でiPhoneのカメラレートと一致するほど高速にライブ処理を行うことはできないようですが、iOS 6では、iPhone 4S以上でライブのフィルタリングを行うのに十分速く処理します。

このベンチマークのソースは、これらの番号の入手先を確認したい場合は、my GitHub repositoryにあります。

私はこの回答を私のオリジナルから更新しましたが、これはCore Imageのパフォーマンスにとって非常に重要でした。私が比較の基礎として使用していたセピアトーンフィルターは、私自身と同じ操作をしていなかったので、貧弱なベンチマークでした。 iOS 6ではCore Imageフィルタのパフォーマンスも大幅に向上し、iPhone 4S以降のライブビデオを処理するのに十分な高速性を実現しました。また、いくつかのケース、like large-radius blursが見つかりました。ここでCore Imageは私のGPUImageフレームワークよりも大幅に優れています。後世のため

前の答えは、:すべてのパフォーマンス関連の問題と同様に

、答えはあなたのフィルタの複雑さに依存し、画像サイズを濾過され、およびデバイスの性能特性ます」再実行します。

MacでCore Imageが利用できるようになったため、フレームワークを学習するためのリソースとしてCore Image Programming Guideを紹介します。 NDAを考慮して、iOS固有の要素についてはコメントできませんが、ビデオを見ることを強くお勧めします。セッション422 - iOSとMac OS XでCore Imageを使用する。

Core Image画像処理のために、OpenGL ES 2.0シェーダが既存のデバイスで画像処理を処理する速度を調べることができます。私はを見つけて、iPhone4が480x320のリアルタイムビデオのシンプルなシェーダを使って60のFPS処理を行うことができることを発見しました。そこにサンプルアプリケーションをダウンロードし、シェーダおよび/またはビデオ入力サイズを特定のデバイスが適切なフレームレートでこの処理を処理できるかどうかを判断します。 Core Imageは少しのオーバーヘッドを追加するかもしれませんが、フィルタチェーンの編成方法についても賢明な最適化があります。

iPhone 3G Sと3世代iPod touchの中で最も遅い互換性のあるデバイスは、iPhone 4よりもはるかに低速ではありません。iPad 2は大量のフラグメント処理機能を備えています。

+0

上記の比較表にはどのような種類のCIContextを使用しましたか? CPUまたはGPUベース?ところで、私はあなたのGPUImageフレームワークを垣間見るだけでした。 GJ! –

+1

@Błażej - 私が知る限り、GPUベース。私はこれらの数字を検証しなければなりませんでしたが、Core ImageがiPhone 4で処理するときにGPUに過負荷をかけているように見えます。Core Imageは、iPhone 3G S、iPhone 4ではなく新しいA5ベースのデバイスをターゲットにしていたようです。または元のiPad。 –

+0

Hey Brad、Core ImageとGPUImage(名前に基づく)の両方がGPUベースのコンピューティングなので、ホエーGPUImageははるかに高速ですか? – tom

6

IMHO、iOS6.0以降、Core Imageは常に最初のオプションです。 好きな機能がいくつかあります:

  1. コアイメージ入力パラメータサポートglTexture2d;
  2. コアイメージ出力パラメータはglTexture2dをサポートします。
  3. CIをGPU専用に使用することができます。例えば、CIContextを初期化する。 _CIglContext = [CIContext contextWithEAGLContext:_glContext options:opts];
  4. 多くのフィルタがiOSプラットフォーム、93フィルタなどで使用できるようになりましたか?
  5. アプリケーションを一時的にバックグラウンドで実行しているときに、CPUでバッファを排他的に処理することを選択できますが、これはお勧めしません。

これらはすべてWWDC2012セッションビデオ、コアイメージの部分に記載されています。見てみると、そこにあなたの解決策が見つかるかもしれません。

関連する問題