Simon Gladman
Simonは初期のSwift言語のチャンピオンです。彼のブログ(http://flexmonkey.blogspot.co.uk)はiOSのテクノロジーを探求・検証する際の人気のソースになっています。いくつものiOSアプリをリリースしており、その中にnode.jsベースのiPad用画像処理アプリであるNodalityも含まれています。余暇は、物理・粒子シミュレーション・画像処理・今までにないユーザインタラクションといったよりクリエイティブな方向性の取り組みをしています。
Core ImageはAppleが提供している画像処理・解析用フレームワークです。170以上の組み込みフィルタ(単独でも組み合わせても使えます)とカスタムフィルタを自分で作ることもできるので、Core Imageは静止画および動画に適用可能な視覚効果に対するとてつもないポテンシャルを提供しています。この講演では、Core Imageの基本から上級テクニックまでご紹介します。
CoreImageは画像処理解析フレームワークで静止画動画を処理できます。170位上のフィルタがあります。シンプルなリニアチェーンやグラフで使うことも出来ます。そしてパフォーマンスが高いです。metalで処理したり。そしてCoreImageが無制限の可能性、我々が0からOpenGLでフィルタを作れる。画像処理に加えて画像解析も行える。CIDetecterでバーコードを認識したり。他のフレームワーク、SceneKitと使ったり出来る。
画像処理アルゴリズムがありアウトプットを生成
軽量、並行可能、フィルターを複数かけたり出来る。
CIImage で画像を扱え、UIImage返還時にフィルタが実行される。
Fundamentalとして。フィルタをコンパイルして実行し、GPU、CPUへ行く。理想的には一つを使って同じコンテキストを再利用することが考えられる。異なるスレッドで共有できる。
フィルタにはカテゴリがある。
一つのクラスでフィルタを提供して使うことが出来ます。
すべての利用可能なカテゴリが示されます。
Filterを探すオープンソースがあり、ほぼすべてのFilterを試せます。
Generator以外は画像のインプットを受け付けます。
フィルタインスタンスを作ってパラメータを設定していく。
便利なメソッドで簡単にもできます
お互いコンポジットしてブレンドしていくことが出来る
暗くしていって
コンポジットで重ねる
それぞれのステップ、バッファを作ったと考えられますが、これらを連結して一つのカーネルに出来ます
ラップして一つのフィルタにします
ビルトインフィルタとして使うには登録します
フィルタベンダの中身
ビルトインフィルタと同じように使えます
カーネルアウトプット画像をそれぞれ見ていきましょう、ループを作って。
WarpKernelがピクセルのポジションを変えます。色は付けられません。
ClorKernelはピクセルのある場所の色を変えます。
ワープカーネルを細かく見ていきます。
回転スケールなど
逆さまにしたい場合 pixcel y を全体の高さから引くということをする
もう一つのワープカーネルです。
カラーカーネルは色を変更します
若干輝度の高いイメージを作ります
カラーカーネルは他のピクセルにアクセスしませんがサンプルコードのコーディネーターはわかっています
このようなタイル化は可能です。
CIImageはGenerateされたものは無限の大きさになるのでCrop?
これらのフィルタを適用する中で最終的にUIImageにアウトプットが必要です
この時ちょっと時間がかかります。
UIImageをCIImageのために作るとパフォーマンスに影響します。コンテンツモードをサポートしていないということで奇妙な結果になります。 2つの方法があります。パフォーマンス改善のためにCIContextを使い回す
コンテンツモードが尊重されるようになり、CoreImageFilterはGPUで描画します。静的なイメージなら良いが、ビデオならより早いアプローチが必要になります。
さらにシンプルに、サブクラスを利用できる
QA
もう一つのGPImageViewがありますがGPUのほうが良いと思うが、カメラからのインプットに高いパフォーマンスを示すと思いますが、どうなりますか
CoreImageもGPU使います。選択できます。どちらがパフォーマンスが良いかは私にはよくわからないです。
GLKViewに描画して高速化する話は、このへんでちらっと触れています。ObjCですすみません。 / Core Image の遷移エフェクトを使う https://t.co/w0JTjPutdb #tryswiftconf
— Tsutsumi Shuichi (@shu223) 2016年3月4日
ご本人のツイートより。これもplaygroundで遊べる。話だけじゃなく手を動かしたらおもしろいかも。 #tryswiftconf https://t.co/BeTZqOpnql
— すてィーろ (@stilo) 2016年3月4日
なるほど、GLKViewかー #tryswiftconf
— akio(あきお) (@akio0911) 2016年3月4日
アプリがバックグラウンドに遷移したときにGPU使い続けるのはNGなので(落ちる)、処理先をCPUにしてやり直す必要があるのに注意。 #tryswiftconf
— Hirohito Kato ⌘ (@hkato193) 2016年3月4日
「基本から上級テクニックまで! Core Imageによる画像処理入門 #tryswiftconf」をトゥギャりました。 https://t.co/Y9dznji4i9
— トゥギャッター開発まとめ (@tg__dev) 2016年3月4日
気に入った記事は はてなブックマーク
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!