2012-02-16 22 views
3

CoreImageでこの問題に念頭に着きましたが(私も顔認識が必要なため)、残念なことに、CI DistortionフィルタはまだiPhoneには含まれていません。iOS画像操作(歪み)

私はGLImageProcessing、CImg、およびImageMagickに潜入しようとしましたが、これらのいずれかを学習するための出発点を見つけるのに苦労しました。

画像の歪みが発生するアプリケーションの数があるとすれば、これは信じられないほど困難ではないことが分かっています。

私はCやC++を知らないので、絶対に必要でない限り、これらの言語を学ぶ時間がありません。これらのライブラリの1つがこのタスクを処理するための最終的なライブラリである場合には、必要になります。

誰もこれらのライブラリの経験がありますか?

iOS5専用の書籍はありますか?私が見つけた

資源:

+1

以前私はImageMagickを使用していましたが、それは私たちのOS X製品に「ちょうど良い」ものを構築するのが面倒でしたが、最終的には価値がありました。悲しいことに私はもはやそのメイクファイルを持っていないので、私はあなたにそれを与えることはできません。 –

+1

これらのライブラリの1つを使用したい場合は、書かれている言語を学ぶ時間が必要です。あなたの質問を理解できないかもしれません。 –

+0

回答者のおかげで、私が聞きたいと思ったことはありませんでした。(愚かなことに、アップル社のフィルタをまだ開発者に提供していないのです!) –

答えて

13

、コアイメージの現在の機能は、iOSにほとんど限られています。特に、あなたがデスクトップ上で見つけたようなカスタムカーネルの欠如は残念です。あなたがリストする他の選択肢(この種類のフィルタリングを行うことができないGLImageProcessingを除く)はすべてCPUバインドライブラリであり、モバイルデバイス上でライブフィルタリングを行うには非常に遅いでしょう。

しかし、私はあなたがカスタムエフェクトを取り除くことができる何かを見つけることができなかったので、今すぐ出たGPUImageというオープンソースフレームワークを指摘できます。その名前が示すように、GPUImageは、OpenGL ES 2.0シェーダを使用して静止画像とビデオのGPUアクセラレーション処理を行います。これらを使用して独自のカスタムエフェクトを作成することができます。したがって、あなたが考えることができることは何でもできるはずです。フレームワーク自体はObjective-Cであり、かなりシンプルなインターフェースを持っています。歪みフィルタの例としては、(Danny Pflughoeft's answerのコードに基づいて)次のシェーダは魚眼効果の並べ替えを行い

varying highp vec2 textureCoordinate; 
uniform sampler2D inputImageTexture; 

const mediump float bulgeFactor = 0.5; 

void main() 
{ 
    mediump vec2 processedTextureCoordinate = textureCoordinate - vec2(0.5); 
    mediump float radius = processedTextureCoordinate.x * processedTextureCoordinate.x + processedTextureCoordinate.y * processedTextureCoordinate.y; 
    mediump vec2 distortedCoordinate = vec2(pow(radius, bulgeFactor)) * processedTextureCoordinate + vec2(0.5); 

    gl_FragColor = texture2D(inputImageTexture, distortedCoordinate); 
} 

これは、ビデオストリームに効果のこの種の生成:

私のベンチマークで

Fisheye effect filter

、GPUImageは、より高速なコア・イメージ(70X CPUよりも速い)よりiPhone 4(6X速いCPUバウンド処理より)とビデオ25X上の画像4X速くコアイメージよりも処理します。最悪のケースでも、私はそれを投げることができます、それは処理速度のためにCore Imageに合っています。

フレームワークはまだかなり新しいので、私がそこに持っているストックフィルターの数は少なくなっていますが、すぐに束を追加していきます。その間、画像を処理する独自のカスタムディストーションシェーダーを作成し、必要に応じてすべてのソースコードを調整することができます。 My introductory post about itには、アプリケーションでこれを使用する方法の詳細がもう少しあります。

+0

非常にクールなBrad!シェーダとフレームワークで画像コンポストを行うことはできますか? –

+0

@JeshuaLacock - まだありません。一度に複数の画像を受け入れることができるように、フィルタにわずかな拡張子を追加する必要があります。最初にすべての単一画像フィルタを使用することに焦点を当てていましたが、 –

+0

ニース!物事を見守ることができる場所はありますか、あなたのGITを定期的にチェックすべきですか?また、私は本当にこの効果の逆のシェイダーに興味があります。 –