SlideShare a Scribd company logo
1 of 24
Download to read offline
vImageのススメ
                 @shu223




12年5月26日土曜日                1
自己紹介
              • 面白法人カヤック勤務
              • Twitter @shu223
              • Blog 『Over&Outその後』
              • 1978年5月26日生まれ

12年5月26日土曜日                          2
最近つくったアプリ




              「モンアツ」で検索!(無料)
12年5月26日土曜日                    3
アジェンダ

              • vImageとは?
              • 何がいいの?
              • 使用例
              • その他諸々

12年5月26日土曜日                 4
vImageとは?
              • Accelerate.framework内のライブラリ
              • iOSデバイスのハードウェア向けに最適化
               されていて高速

              • 畳み込みや幾何変換,ヒストグラム計算
               などの画像処理系の関数をまとめたもの
               で,iOS5から利用可能


12年5月26日土曜日                                   5
何がいいの?

              • シンプルに書ける!
              • 速い!
              • 省電力!

12年5月26日土曜日                 6
畳み込み演算

   • 各種画像処理のコアとなる
        処理

   • カーネルサイズと画素数に
        応じて処理量が指数関数的
        に増大する
        カーネルサイズ7x7、
        解像度2448x3264の場合、
        演算回数は3億9152万回!
12年5月26日土曜日                7
何がいいの?

              •シンプルに書ける!
              • 速い!
              • 省電力!

12年5月26日土曜日                8
シンプルに書ける!                                   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
シンプルに書ける!                                  2/2


   • vImageを利用した畳み込み演算のコード
         vImageConvolve_ARGB8888(source, dest, NULL, 0, 0,
                                 kernel, kernelHeight,
                                 kernelWidth, divisor, NULL,
                                 flags );


         •コードがシンプルに!
         •もちろん端部処理とかオーバーフローの処理は内部で
              やってくれてる




12年5月26日土曜日                                                    10
何がいいの?

              • シンプルに書ける!
              •速い!
              • 省電力!

12年5月26日土曜日                 11
14倍高速!!




12年5月26日土曜日             12
何がいいの?

              • シンプルに書ける!
              • 速い!
              •省電力!

12年5月26日土曜日                 13
90%の節電 !!




12年5月26日土曜日               14
vImageの使い方
     • 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
vImageConvolve使用例
                            ブラー
              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
vImageConvolve使用例
                      エンボス
              static int16_t emboss_kernel[9] = {
              ! -2, 0, 0,
              ! 0, 1, 0,
              ! 0, 0, 2
              };




12年5月26日土曜日                                         17
vImageConvolve使用例
                           先鋭化
                static int16_t sharpen_kernel[9] = {
                ! -1, -1, -1,
                ! -1, 9, -1,
                ! -1, -1, -1
                };




12年5月26日土曜日                                            18
vImageConvolve使用例
              サンプルコード
               • https://github.com/shu223/
                 vImageDemo

               • vImageConvolve∼ひとつで実現可
                 能な処理をUIImageのカテゴリとし
                 て実装してあります

                •   ブラー、エッジ抽出、エンボス、先鋭化
                    etc...



12年5月26日土曜日                                   19
OpenCV vs vImage
              •   OpenCVもGPUアクセラレーションは行っている。




                                        分
              •   が、Mac OSデバイスやiOSデバイスのハードウェアに特化して最適
                  化されたものではないため、(条件を満たしていれば)vImageの方



                                      十
                  が速いと思われる




                           不
              •   iOS SDKに含まれている、という点で、利用のお手軽さではvImage
                  の方がちょっとだけ勝る

              •

              •
                   証
                  多いと思われる
                         拠
                  上位レイヤーのフィルタの種類とかではOpenCVの方ができることは



                  CoreImageとも比較が必要。GPUで処理してて畳み込みのような低
                  レイヤー処理もできたはず。



12年5月26日土曜日                                              20
ドキュメント
              • WWDC2011のセッションビデオ&スライド
               •   概要を知るには一番わかりやすい

              • vImage Programming Guide
               •   処理前後のサンプル画像や、フィルタ配列の図も
                   あってわかりやすい

              • vImageリファレンス
               •   たくさんあるので必要に応じてどうぞ・・・

                   •   Conversion / Convolution / Decompression /
                       Geometry / Histogram / Morphology / Transform   
                       etc...

12年5月26日土曜日                                                               21
vImageを使用している
                画像処理ライブラリ

              • NYXImagesKit
               • vImage, vDSP, CoreImageを併用
               • gihyo.jpにて連載中の第3回記事で紹介しました
                •   『iOSアプリ開発で使いこなしたいとっておきのOSS』

                •   fladdictさんその節はありがとうございました



12年5月26日土曜日                                       22
まとめ

       iOS5以降で画像処理やる
       ならvImageの使用を検討
       してみるといいかもしれま
       せん!
12年5月26日土曜日             23
ご清聴ありがとうございました




12年5月26日土曜日           24

More Related Content

What's hot

まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 
自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018h-otter
 
アプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnetアプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnetKazumune Katagiri
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 
使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのこと使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのことKasumi Morita
 
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!Takaya Saeki
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようYuusuke Takeuchi
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜Masaya Kogawa
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?Yosuke Onoue
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」Shunsuke Watanabe
 
Virtual boxからVM Importする
Virtual boxからVM ImportするVirtual boxからVM Importする
Virtual boxからVM ImportするShinji Saito
 
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるづや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるzuya
 
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作Maboroshi.inc
 

What's hot (16)

まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018自作クラウド基盤 n0stack in ICTSC 2018
自作クラウド基盤 n0stack in ICTSC 2018
 
アプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnetアプリしか作れないけどAzureに触ってみた #ngtnet
アプリしか作れないけどAzureに触ってみた #ngtnet
 
なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのこと使う前に知っておきたいSVGのこと
使う前に知っておきたいSVGのこと
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!
 
LT #nds37
LT #nds37LT #nds37
LT #nds37
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
 
タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜タスクランナー導入 〜とあるWordPress制作環境〜
タスクランナー導入 〜とあるWordPress制作環境〜
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
 
Virtual boxからVM Importする
Virtual boxからVM ImportするVirtual boxからVM Importする
Virtual boxからVM Importする
 
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみるづや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
 
My dev env
My dev envMy dev env
My dev env
 
CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作CSS Nite LP26 CodeKitで始める次世代Web制作
CSS Nite LP26 CodeKitで始める次世代Web制作
 

Viewers also liked

Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門cocopon
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーSatoshi Asano
 
Amazon ec2とは何か?
Amazon ec2とは何か?Amazon ec2とは何か?
Amazon ec2とは何か?Shinya_131
 
Herokuで作るdevise認証サイト
Herokuで作るdevise認証サイトHerokuで作るdevise認証サイト
Herokuで作るdevise認証サイトFukui Osamu
 
120529 railsとか勉強会v2
120529 railsとか勉強会v2120529 railsとか勉強会v2
120529 railsとか勉強会v2Yoshiteru Toki
 
PFIセミナー2015/05/28 食とIT
PFIセミナー2015/05/28 食とITPFIセミナー2015/05/28 食とIT
PFIセミナー2015/05/28 食とITHokuto Kagaya
 
いまさら聞けないUnity小技
いまさら聞けないUnity小技いまさら聞けないUnity小技
いまさら聞けないUnity小技Yuichi Ishii
 
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」Kaoru Nasuno
 
Unity5.3の機能まとめ
Unity5.3の機能まとめUnity5.3の機能まとめ
Unity5.3の機能まとめKeigo Ando
 
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2Daiki Shimada
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門tak9029
 

Viewers also liked (16)

Sencha study
Sencha studySencha study
Sencha study
 
Air printで遊んでみた
Air printで遊んでみたAir printで遊んでみた
Air printで遊んでみた
 
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
 
mq 使ってみたよ
mq 使ってみたよmq 使ってみたよ
mq 使ってみたよ
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマー
 
Amazon ec2とは何か?
Amazon ec2とは何か?Amazon ec2とは何か?
Amazon ec2とは何か?
 
Herokuで作るdevise認証サイト
Herokuで作るdevise認証サイトHerokuで作るdevise認証サイト
Herokuで作るdevise認証サイト
 
120529 railsとか勉強会v2
120529 railsとか勉強会v2120529 railsとか勉強会v2
120529 railsとか勉強会v2
 
PFIセミナー2015/05/28 食とIT
PFIセミナー2015/05/28 食とITPFIセミナー2015/05/28 食とIT
PFIセミナー2015/05/28 食とIT
 
20150414seminar
20150414seminar20150414seminar
20150414seminar
 
いまさら聞けないUnity小技
いまさら聞けないUnity小技いまさら聞けないUnity小技
いまさら聞けないUnity小技
 
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
論文輪読資料「FaceNet: A Unified Embedding for Face Recognition and Clustering」
 
Unity5.3の機能まとめ
Unity5.3の機能まとめUnity5.3の機能まとめ
Unity5.3の機能まとめ
 
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
 
深層学習とTensorFlow入門
深層学習とTensorFlow入門深層学習とTensorFlow入門
深層学習とTensorFlow入門
 
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
 

Similar to vImageのススメ

vImageのススメ(改訂版)
vImageのススメ(改訂版)vImageのススメ(改訂版)
vImageのススメ(改訂版)Shuichi Tsutsumi
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Koichi Sakata
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話terurou
 
作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月Takuya Ueda
 
JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+Hiroaki Okubo
 
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015Ryo Nakamaru
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らないKuniyoshi Tone
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
ShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみKohei Kadowaki
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]MakotoItoh
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテストYoichiro Sakurai
 
Visual Studio 2012 Native Debugger Feature
Visual Studio 2012 Native Debugger FeatureVisual Studio 2012 Native Debugger Feature
Visual Studio 2012 Native Debugger FeatureKazushi Kamegawa
 
アート・オブ・アジャイル・デベロップメント読書会#1
アート・オブ・アジャイル・デベロップメント読書会#1アート・オブ・アジャイル・デベロップメント読書会#1
アート・オブ・アジャイル・デベロップメント読書会#1Sosuke Kimura
 
Hivemall Talk@SIGMOD-J Oct.4, 2014.
Hivemall Talk@SIGMOD-J Oct.4, 2014.Hivemall Talk@SIGMOD-J Oct.4, 2014.
Hivemall Talk@SIGMOD-J Oct.4, 2014.Makoto Yui
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみたYasuhiro Yoshimura
 
CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介Narihira Takuya
 

Similar to vImageのススメ (20)

vImageのススメ(改訂版)
vImageのススメ(改訂版)vImageのススメ(改訂版)
vImageのススメ(改訂版)
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月作って分かるKnockoutJS@ALM11月
作って分かるKnockoutJS@ALM11月
 
JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+
 
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らない
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
ShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみ
 
Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]Unity名古屋セミナー [Shadowgun]
Unity名古屋セミナー [Shadowgun]
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテスト
 
Visual Studio 2012 Native Debugger Feature
Visual Studio 2012 Native Debugger FeatureVisual Studio 2012 Native Debugger Feature
Visual Studio 2012 Native Debugger Feature
 
アート・オブ・アジャイル・デベロップメント読書会#1
アート・オブ・アジャイル・デベロップメント読書会#1アート・オブ・アジャイル・デベロップメント読書会#1
アート・オブ・アジャイル・デベロップメント読書会#1
 
Hivemall Talk@SIGMOD-J Oct.4, 2014.
Hivemall Talk@SIGMOD-J Oct.4, 2014.Hivemall Talk@SIGMOD-J Oct.4, 2014.
Hivemall Talk@SIGMOD-J Oct.4, 2014.
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
 
CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介
 

More from Shuichi Tsutsumi

Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyoCore MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyoShuichi Tsutsumi
 
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略Shuichi Tsutsumi
 
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconfUIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconfShuichi Tsutsumi
 
UIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconfUIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconfShuichi Tsutsumi
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDCShuichi Tsutsumi
 
Deep Learning on iOS #360iDev
Deep Learning on iOS #360iDevDeep Learning on iOS #360iDev
Deep Learning on iOS #360iDevShuichi Tsutsumi
 
Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"Shuichi Tsutsumi
 
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Shuichi Tsutsumi
 
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Shuichi Tsutsumi
 
オープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyoオープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyoShuichi Tsutsumi
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Shuichi Tsutsumi
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2Shuichi Tsutsumi
 
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜Shuichi Tsutsumi
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編Shuichi Tsutsumi
 
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つUI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つShuichi Tsutsumi
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話Shuichi Tsutsumi
 

More from Shuichi Tsutsumi (20)

Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyoCore MLのアップデートを3倍楽しむ方法 #wwdctokyo
Core MLのアップデートを3倍楽しむ方法 #wwdctokyo
 
エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略エンジニアという仕事を楽しみ続けるためのキャリア戦略
エンジニアという仕事を楽しみ続けるためのキャリア戦略
 
Depth in Depth #iOSDC
Depth in Depth #iOSDCDepth in Depth #iOSDC
Depth in Depth #iOSDC
 
UIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconfUIImageView vs Metal [日本語版] #tryswiftconf
UIImageView vs Metal [日本語版] #tryswiftconf
 
UIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconfUIImageView vs Metal #tryswiftconf
UIImageView vs Metal #tryswiftconf
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
 
Deep Learning on iOS #360iDev
Deep Learning on iOS #360iDevDeep Learning on iOS #360iDev
Deep Learning on iOS #360iDev
 
Client-Side Deep Learning
Client-Side Deep LearningClient-Side Deep Learning
Client-Side Deep Learning
 
Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"Building iOS apps using "Bluetooth Low Energy"
Building iOS apps using "Bluetooth Low Energy"
 
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
Practical Core Bluetooth in IoT & Wearable projects @ AltConf 2016
 
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
Practical Core Bluetooth in IoT & Wearable projects @ UIKonf 2016
 
オープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyoオープンソースエコシステム #demodaytokyo
オープンソースエコシステム #demodaytokyo
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2
 
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
 
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つUI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
 
Apple Watch 間通信
Apple Watch 間通信Apple Watch 間通信
Apple Watch 間通信
 
OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

vImageのススメ

  • 1. vImageのススメ @shu223 12年5月26日土曜日 1
  • 2. 自己紹介 • 面白法人カヤック勤務 • Twitter @shu223 • Blog 『Over&Outその後』 • 1978年5月26日生まれ 12年5月26日土曜日 2
  • 3. 最近つくったアプリ 「モンアツ」で検索!(無料) 12年5月26日土曜日 3
  • 4. アジェンダ • vImageとは? • 何がいいの? • 使用例 • その他諸々 12年5月26日土曜日 4
  • 5. vImageとは? • 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
  • 13. 何がいいの? • シンプルに書ける! • 速い! •省電力! 12年5月26日土曜日 13
  • 15. vImageの使い方 • 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. vImageConvolve使用例 ブラー 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. vImageConvolve使用例 エンボス static int16_t emboss_kernel[9] = { ! -2, 0, 0, ! 0, 1, 0, ! 0, 0, 2 }; 12年5月26日土曜日 17
  • 18. vImageConvolve使用例 先鋭化 static int16_t sharpen_kernel[9] = { ! -1, -1, -1, ! -1, 9, -1, ! -1, -1, -1 }; 12年5月26日土曜日 18
  • 19. vImageConvolve使用例 サンプルコード • 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. vImageを使用している 画像処理ライブラリ • NYXImagesKit • vImage, vDSP, CoreImageを併用 • gihyo.jpにて連載中の第3回記事で紹介しました • 『iOSアプリ開発で使いこなしたいとっておきのOSS』 • fladdictさんその節はありがとうございました 12年5月26日土曜日 22
  • 23. まとめ iOS5以降で画像処理やる ならvImageの使用を検討 してみるといいかもしれま せん! 12年5月26日土曜日 23