2010-11-24 12 views
5

私は数回の周りでグーグルをしましたが、私はまっすぐ答えを得ていません。私は離散的なフィルタ(例えば、エッジ検出のためのSobel演算子)で畳み込みたい行列を持っています。 iPhoneでOpenGL ESを使ってこれを高速化することは可能ですか?iPhoneでOpenGL ESでイメージをコンボリューションする:可能ですか?

どうすればよいですか?そうでない場合は、操作を高速化するために使用できる他の高性能技がありますか?それを高速に実行できるWizardly ARMアセンブリ操作ですか?最終的に、私はiPhoneのARMプロセッサでできるだけ速く畳み込みを実行したいと考えています。

+0

ES 1.1または2.0? – genpfault

+0

iPhone 4とiOS 4.1がサポートしているものは、OpenGL ES 2.0 – gonzojive

答えて

14

OpenGL ES 2.0のプログラム可能なシェーダを使用してこれを行うことができます。私はiTunes UのクラスのビデオでOpenGL ES 2.0シェーダについて詳しく説明します。

私は自分自身でイメージコンボリューションを行っていませんが、私はMacとiOSのGPUアクセラレートされたイメージ処理について説明しています here。私は sample applicationを提示しています.GLSLシェーダ(Appleによって開発されたCore Imageフィルタに基づいています)は、iPhoneのカメラフィードからリアルタイムの色を追跡します。

私はこれを書いて以来、Sobelエッジ検出からカスタム3x3畳み込みカーネルに至る画像コンボリューションフィルタを内蔵している上記の例に基づいてopen source frameworkを作成しました。これらは、CPUバインドの実装よりも最大100倍速く実行できます。

ただし、CPUでこれを行う場合は、Accelerate frameworkを使用して、iPhoneのNEON SIMDユニットでいくつかの操作を実行できる場合があります。特に、FFT演算(通常は画像畳み込みフィルタの主要コンポーネント、またはこれまで聞いたことがある)は、ここでAppleが提供するルーチンを使用して〜4〜5倍のスピードアップを得ることができます。

関連する問題