あなたはかなり簡単にGPUImageを使用して、そのGPUImageSepiaFilterとGPUImageVignetteFilterことを行うことができます。
![Sepia and vignette filtered image](https://i.stack.imgur.com/7WoGG.png)
上記の画像は、次のコードを使用して生成した場合、GPUImageGrayscaleFilterもあります
UIImage *inputImage = [UIImage imageNamed:@"Lambeau.jpg"];
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];
GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init];
GPUImageVignetteFilter *vignetteImageFilter = [[GPUImageVignetteFilter alloc] init];
vignetteImageFilter.vignetteEnd = 0.6;
vignetteImageFilter.vignetteStart = 0.4;
[stillImageSource addTarget:stillImageFilter];
[stillImageFilter addTarget:vignetteImageFilter];
[stillImageSource processImage];
UIImage *filteredImage = [vignetteImageFilter imageFromCurrentlyProcessedOutput];
をソースイメージにグレースケールフィルタを適用したいとします。
フレームワーク名が示しているように、これはすべてGPUアクセラレーションであるため、CPUにバインドされている画像処理ルーチンよりもはるかに高速です。実際には、上記のフィルタをライブビデオに適用することができます。 iPhone 4は640x480ビデオフレームで〜2msでこのフィルタを実行できます。静止画は、UIImagesとの間でやり取りするときに必要なCore Graphics経由のラウンドトリップのために少し遅くなりますが、CPUバインドされたフィルタよりも最大6倍高速です。
現行の実装では、非A5デバイス(iPhone 3G S、iPhone 4、iPad 1)のテクスチャサイズの制限は2048x2048であるため、現在はそれ以上の画像をフィルタリングできません。私はこの限界を克服する方法に取り組んでいますが、その間に、処理前にこの解像度の制限内に収まるように画像を縮小する必要があります。
提案1:(Google検索を介して)あなたがしたいことをし、あなたのコードに統合するライブラリを見つける。提案2:あなたが望むもののアルゴリズムを見つけて、そのコードを書く。提案3:提案1と2を行い、プログラミング問題に関連する特定の質問を投稿してください。 –
具体的な質問はありません。 –
@NickBullは既に提案1と2を行っています。私がこの例のリンクを付けている理由です。これらのフィルタの実装について知っていれば助けてください。 – Gypsa