狠狠撸
Submit Search
惫滨尘补驳别のススメ
?
11 likes
?
3,262 views
Shuichi Tsutsumi
Follow
1 of 24
Download now
Download to read offline
More Related Content
惫滨尘补驳别のススメ
1.
惫滨尘补驳别のススメ
@shu223 12年5月26日土曜日 1
2.
自己绍介
? 面白法人カヤック勤務 ? Twitter @shu223 ? Blog 『Over&Outその後』 ? 1978年5月26日生まれ 12年5月26日土曜日 2
3.
最近つくったアプリ
「モンアツ」で検索!(無料) 12年5月26日土曜日 3
4.
アジェンダ
? 惫滨尘补驳别とは? ? 何がいいの? ? 使用例 ? その他諸々 12年5月26日土曜日 4
5.
惫滨尘补驳别とは?
? Accelerate.framework内のライブラリ ? iOSデバイスのハードウェア向けに最適化 されていて高速 ? 畳み込みや幾何変換,ヒストグラム計算 などの画像処理系の関数をまとめたもの で,iOS5から利用可能 12年5月26日土曜日 5
6.
何がいいの?
? シンプルに书ける! ? 速い! ? 省電力! 12年5月26日土曜日 6
7.
畳み込み演算
? 各種画像処理のコアとなる 処理 ? カーネルサイズと画素数に 応じて処理量が指数関数的 に増大する カーネルサイズ7x7、 解像度2448x3264の場合、 演算回数は3億9152万回! 12年5月26日土曜日 7
8.
何がいいの?
?シンプルに书ける! ? 速い! ? 省電力! 12年5月26日土曜日 8
9.
シンプルに书ける!
1/2 ? vImageを利用しない畳み込み演算のコード for (i=0; i<imageHeight; i++) { for (j=0; j<imageWidth; j++) { int accumulator = 0; for (ik=0; jk<kernelHeight; ik++) { for (jk=0; jk<kernelWidth; jk++) { accumulator += kernel[k][l] * src[i+ik-kernelHeight/2][j+jk-kernelWidth/2]; } } dst[i][j] = accumulator; } } ?このままだとものすごく遅い! ?実際には、端部の処理とかオーバーフローの処理とかも必要 ?ちゃんと書くと数百行に!! 12年5月26日土曜日 9
10.
シンプルに书ける!
2/2 ? vImageを利用した畳み込み演算のコード vImageConvolve_ARGB8888(source, dest, NULL, 0, 0, kernel, kernelHeight, kernelWidth, divisor, NULL, flags ); ?コードがシンプルに! ?もちろん端部処理とかオーバーフローの処理は内部で やってくれてる 12年5月26日土曜日 10
11.
何がいいの?
? シンプルに书ける! ?速い! ? 省電力! 12年5月26日土曜日 11
12.
14倍高速!! 12年5月26日土曜日
12
13.
何がいいの?
? シンプルに书ける! ? 速い! ?省電力! 12年5月26日土曜日 13
14.
90%の節電 !! 12年5月26日土曜日
14
15.
惫滨尘补驳别の使い方
? Accelerateフレームワークをプロジェクトに追加し、 Accelerate.hをインポートすればOK ? とりあえずvImageConvolve_ARGB8888() ひとつ で色々できる vImageConvolve_ARGB8888(source, dest, NULL, 0, 0, kernel, kernelHeight, kernelWidth, divisor, NULL, flags ); 第5引数の kernel に渡す配列によって様々なフィル タを実現できる 12年5月26日土曜日 15
16.
惫滨尘补驳别颁辞苍惫辞濒惫别使用例
ブラー static int16_t gaussianblur_kernel[25] = { ! 1, 4, 6, 4, 1, ! 4, 16, 24, 16, 4, ! 6, 24, 36, 24, 6, ! 4, 16, 24, 16, 4, ! 1, 4, 6, 4, 1 }; 12年5月26日土曜日 16
17.
惫滨尘补驳别颁辞苍惫辞濒惫别使用例
エンボス static int16_t emboss_kernel[9] = { ! -2, 0, 0, ! 0, 1, 0, ! 0, 0, 2 }; 12年5月26日土曜日 17
18.
惫滨尘补驳别颁辞苍惫辞濒惫别使用例
先鋭化 static int16_t sharpen_kernel[9] = { ! -1, -1, -1, ! -1, 9, -1, ! -1, -1, -1 }; 12年5月26日土曜日 18
19.
惫滨尘补驳别颁辞苍惫辞濒惫别使用例
サンプルコード ? https://github.com/shu223/ vImageDemo ? vImageConvolve~ひとつで実現可 能な処理をUIImageのカテゴリとし て実装してあります ? ブラー、エッジ抽出、エンボス、先鋭化 etc... 12年5月26日土曜日 19
20.
OpenCV vs vImage
? OpenCVもGPUアクセラレーションは行っている。 分 ? が、Mac OSデバイスやiOSデバイスのハードウェアに特化して最適 化されたものではないため、(条件を満たしていれば)vImageの方 十 が速いと思われる 不 ? iOS SDKに含まれている、という点で、利用のお手軽さではvImage の方がちょっとだけ勝る ? ? 証 多いと思われる 拠 上位レイヤーのフィルタの種類とかではOpenCVの方ができることは CoreImageとも比較が必要。GPUで処理してて畳み込みのような低 レイヤー処理もできたはず。 12年5月26日土曜日 20
21.
ドキュメント
? WWDC2011のセッションビデオ&スライド ? 概要を知るには一番わかりやすい ? vImage Programming Guide ? 処理前後のサンプル画像や、フィルタ配列の図も あってわかりやすい ? vImageリファレンス ? たくさんあるので必要に応じてどうぞ??? ? Conversion / Convolution / Decompression / Geometry / Histogram / Morphology / Transform??? etc... 12年5月26日土曜日 21
22.
惫滨尘补驳别を使用している
画像処理ライブラリ ? NYXImagesKit ? vImage, vDSP, CoreImageを併用 ? gihyo.jpにて連載中の第3回記事で紹介しました ? 『iOSアプリ開発で使いこなしたいとっておきのOSS』 ? ?addictさんその節はありがとうございました 12年5月26日土曜日 22
23.
まとめ
iOS5以降で画像処理やる ならvImageの使用を検討 してみるといいかもしれま せん! 12年5月26日土曜日 23
24.
ご清聴ありがとうございました 12年5月26日土曜日
24
Download