SlideShare a Scribd company logo
画像処理ライブラリOpenCVで
出来ること・出来ないこと
名古屋工業大学
福嶋 慶繁
http://fukushima.web.nitech.ac.jp/
セッション番号I-6
2016/10/14 Design Solution Forum 2016
経歴
– 2004 名古屋大学 卒業(村瀬研究室)
– 2009 名古屋大学大学院 博士課程 修了(谷本研究室)
– 2009 名古屋工業大学 助教
– 2015 名古屋工業大学 准教授
– http://fukushima.web.nitech.ac.jp/
著書,記事など
– コンピュータビジョン~アルゴリズムと応用
– Qiita:OpenCV Advent Calendar 2015
– OpenCV.jp(の一部)
略歴 2
専門
– 画像処理
• 画像符号化,映像符号化
• 画像のノイズ除去
• エッジ保存平滑化フィルタの高速化
– 3次元画像処理
• ステレオマッチング
• 任意視点画像合成
• デプスマップのデノイズ
• デプスセンサのキャリブレーション
• マルチカメラアレイ
• AR,VR
– 並列画像処理
• 画像処理のベクトル化・並列化
• 画像処理コンパイラ
略歴 3
OpenCVは,オープンソースの画像処理ラ
イブラリとしてデファクトスタンダートの
地位を確立しています.
また,Java, Pythonへの拡張やAndroid,
iOSへの対応など,クロスプラットフォーム
なライブラリとして,ますます存在感を強
めています.
本講演では,このOpenCVを使って何がど
こまで出来るのかを,アルゴリズムを使う
立場からとアルゴリズムを開発する立場か
らの両面から話します.
発表概要の抜粋 4
イントロダクション
5
コンピュータビジョンのオープンソースラ
イブラリ
世界でもっとも使われてるオープンソース
の画像処理のライブラリ
–10Mダウンロード
–500K+行のコード
Open Computer Vision (OpenCV) 6
公式
–C++
–Python
–Java
–Matlab
–C(サポート対象外)
非公式
–C#, Go, Processing, Lua, Ruby, PHP, Haskell, etc…
–https://github.com/atinfinity/lab/wiki/OpenCV-
binding%E3%81%BE%E3%81%A8%E3%82%81
対応言語 7
デスクトップ
–Windows
–Linux
–Mac OS
–FreeBSD
モバイル
–Android
–iOS
–ARM Linux
プラットフォーム 8
OpenCVの歴史 9
OpenCV Started
Alpha Release at CVPR 2000. Windows only.
Beta 1. Linux support
Release 1.0 Release 1.1
Release 2.0. C++
Release 2.1. Full Python support
Release 2.4 LTS
Release 2.2. Android Support
Release 3.0
Refactored
Willow
Support
OpenCV
Foundation
Intel
Support
Google Summer of
Code
Nvidia
Support
Renewed
Intel Support
Release 2.3. GPU Support. Modules
Magic Leap
Development
team has moved
to Itseez
1997 前身であるIntel Processing Library (IPL)の登場
2000 OpenCV alpha
2001~2005 OpenCV betaが5つ
2006 OpenCV 1.0
2008 Willow Garageがサポート, OpenCV 1.1pre
2009 OpenCV 2.0
2015 Itseezに移管,OpenCV 3.0,OpenCV3.1
2016年 IntelがItseezを買収
現在:OpenCV 3.1(2015-12-21)
OpenCVの歴史 10
これまでの「ずっと枯れないライブラリ」
という評判を一新するために
OpenCV+Contribに分離
– OpenCV:枯れたアルゴリズム.本体がコミット
– Contrib:最新のアルゴリズム.各自がコミット.
開発モデルの変更 11
OpenCV
2.x
OpenCV 3.x
contributions
OpenCV
3.x
外部ライブラリで速くする
マルチコア並列化をする
SIMDベクトル化をする
CUDA(GPU)を使う
OpenCL(GPU)を使う
アクセラレータ1 12
CPU
– IPP-ICV: OpenCV3.0からロイヤリティフリー
– HALモジュール:ハードウェア最適化
– Universal Intrinsics:NEONとSSEの一般化
– Parallel_for_:マルチコア並列化の一般化
GPU
– CUDA
• 独自実装
• NVIDIA 実装の関数群のラッパー
– OpenCL
• Transparent API (T-API)
• UMatを使えば,実行ファイルが自動でGPU,CPUの切り替えを行ってくれ
るexeを作成可能に.
• おまけ:OpenCLの独自カーネルが書きやすい.
アクセラレータ2 13
Intelから無償提供された,画像処理ライブ
ラリIntel Performance Primitive (IPP) のサブ
セットで,様々な処理が高速化する
–例えば,OpenCVのネイティブFFTは相当遅い
IPP-ICV 14
現在100個程度の関数をカバー
CPUを1として何倍高速化したか?
T-APIのパフォーマンス 15
CPU - AMD A10-6800k, iGPU - HD8670D, dGPU - Radeon HD7790
Mat
–基本
–参照カウンターによるメモリ管理により明示的に
開放する必要がない
–関数を使うだけなら確保する必要もあまりない
Umat
–OpenCLが使えるときは,GPUを使うようになる
Mat
gpuMat
–CUDAをつかって開発したもの
–NVidiaが提供した関数をラップしたもの
MatとUMatとgpuMat 16
まだ,全てをやってはいけません!
–OpenCLはiOSやAndriod, Windows Phoneで公式
サポートされていない
–大きな画像や複雑な画像以外は,コピーのオー
バーヘッドが大きすぎます.
• メディアンフィルタはFullHDくらいで初めて
OpenCLが早くなる
• Farnebackオプティカルフロー推定は480pですら
OpenCLが早い
–CPUのコードとOpenCLのコードの結果がまだ
違ったりする.
すべてUMatにすべきか? 17
そもそも誰がRGBが正しいと決めたんだ?
– 昔はRGBとBGRどちらも良く使われていた.
• OpenCVの大元は,Intel Processing Library(1997)
– 波長的にはBGRでは?
– WindowsのビットマップはBGR順
でも,実はOpenCVのコード自体も間違っている
ことも...
– cvtColor(src, dest, COLOR_BGR2YUV)
• このコード,公式がRGBとBGRを間違えている.
OpenCVはなぜBGR? 18
使う・アプリを作る
~モジュールの詳解~
19
データ構造,行列演算 (core)
基本的な画像処理 (imgproc)
画像入出力,符号化 (imgcodecs)
カメラ,映像入出力 (videoio)
簡易GUI (highgui)
3次元可視化 (viz)
形状マッチング (shape)
動きベクトル推定,特徴点追跡
(video)
カメラキャリブレーション・ステレ
オマッチング,ポイントクラウド
(calib3d)
コンピュテーショナルフォトグラ
フィ・デノイズ・HDR (photo)
パノラマ生成 (stitching)
手振れ補正 (videostab)
超解像 (superres)
機械学習 (ml)
特徴点・特徴量計算
(features2d)
物体検出 (objectdetect)
多次元空間のクラスタリングや
サーチ問題 (flann)
CUDA使った高速化関連モジュー
ル(cudaarithm, cudabgsegm,
cudacodec, cudafeatures2d,
cudafilters, cudaimgproc,
cudalegacy, cudaobjdetect,
cudaoptflow, cudastereo,
cudawarping, cudev)
出来ること(OpenCV 3.x) 20
※モジュール単位で記述:分解の粒度は開発した時期で分類によるのでばらばら.
 ARマーカー (aruco)
 背景セグメンテーション (bgsegm)
 知覚モデルに従う処理 (bioinspired)
 キャリブレーションパタンのカスタム (ccalib)
 ビジュアルデバッガ (cvv)
 様々なデータセットをダウンロード(datasets)
 ディープラーニング (dnn)
 デフォマブル パートモデル (dpm)
 顔認識 (face)
 ファジー (fuzzy)
 Hdf5フォーマット (hdf)
 線記述子 (line_descriptor)
 Matlab連携ブリッジ (matlab)
 オプティカルフロー推定 (optflow)
 グラフプロット (plot)
 画像のレジストレーション (reg)
 RGB+デプス処理 (rgbd)
 顕著性マップ (saliency)
 ストラクチャーフロムモーション (sfm)
 ステレオマッチング (stereo)
 カメラープロジェクタ用パタン投影 (structured_light)
 3次元点マッチング (surface_matching)
 文字認識 (text)
 トラッキング (tracking)
 拡張特徴量計算モジュール (xfeatures2d)
 拡張画像処理モジュール (ximgproc)
 拡張物体検出モジュール (xobjdetect)
 拡張コンピュテーショナルフォトグラフィモジュール
(xphoto)
出来ること(OpenCV Contrib.) 21
BMP
PPM・PGM・PBM
JPEG
JPEG2000
PNG
TIFF
OpenEXR
WebP
画像入出力,符号化 (imgcodecs) 22
「豊富な画像入出力」
IOのための追加コードが
ほとんど必要ない!
豊富なUSBカメラからのIO
Kinect,CREATIVE SENZ3DからのIO
動画像からの入力,保存
–MPEG1,2,4,H.264, H.265, …
カメラ,映像入出力 (videoio) 23
画像表示が1行:imshow
トラックバーをつけることが出来る
Qtを使った拡張をするともっと便利に
–画値値表示,保存,ズーム,ボタン追加など
簡易GUI (highgui) 24
デフォルト With Qt
色変換
閾値処理
フィルタリング
2値画像処理・モルフォロジー演算
セグメンテーション
ヒストグラム処理
拡大縮小・幾何変換
構造解析,形状記述子
基本的な画像処理 (imgproc) 25
ニューラルネットワーク(ANN)
サポートベクターマシン (SVM)
期待値最大化法 (EM)
決定木 (DTrees)
ブースティング木 (Boost)
ランダムフォレスト (RTrees)
K近傍法 (KNearest)
ロジスティック回帰 (LogisticRegression)
単純ベイズ分類器 (NormalBayesClassifier)
機械学習 (ml) 26
テンプレートではなく形のマッチング
形状マッチング (shape) 27
~0.5~157
3次元処理 (calib3d) 283次元処理 (calib3d)
ステレオマッチング
3次元処理 (calib3d) 29
3次元ポイントクラウドの可視化
OpenCVをvtkと一緒にコンパイルする必要
有
3次元可視化 (viz) 30
コンピュテーショナルフォトグラフィ(photo) 31
入力画像 詳細強調
エンピツ画風アニメ調
コンピュテーショナルフォトグラフィ(photo) 32
High Dynamic Range Imaging (HDRI)
ArUco: a minimal library for Augmented
Reality applications based on OpenCV
OpenCVベースのシンプルなARツール
ARマーカー (aruco) 33
https://www.youtube.com/watch?v=CzD48UkGsK8
画像からの文字認識
–文字検出
–文字認識
• HMMベース
• tesseract-ocrのラッパー
文字認識 (text) 34
CaffeとTorchのラッパー
ファイルIOで間接的に操作しているだけ?
今のところ,あえてOpenCV使ってdnnをす
る理由がない.
ディープラーニング (dnn) 35
SIFTとSURFはcontribにある!
特許による問題を回避するため?
拡張特徴量計算 (xfeatures2d) 36
画像の様子が状態ごとに追えるデバッガ
–Qt5とopenGLが必要
–OpenCV3プログラミングブックにも詳しい解説
–何かコミットするたびに,よくコンパイルがこ
けている...
ビジュアルデバッガ (cvv) 37
1D/2D グラフプロットモジュール
その他
–私が公開しているライブラリOpenCPにもプ
ロッターは付いてくる
• https://github.com/norishigefukushima/OpenCP
–Pythonで使えるプロッターであるmatplotlibと
C++を連携するmatplotlib-cppでもいい
• https://github.com/lava/matplotlib-cpp
グラフプロット (plot) 38
OpenCVが苦手なこと1
数値計算
–SVDがfloat入力,float出力 ->丸め誤差大
–PCAがfloat入力,float出力 ->丸め誤差大
–行列の分解の精度
最適化計算
–ニュートン法すら無かった
機械学習
–古典的な基本は十分そろえているが,最新のもの
のサポートは不十分
–Pythonの充実ぶりに比べると...
• 必要なら別のライブラリを使うほうが良い
39
OpenCVが苦手なこと2
アルゴリズムの改良
–研究用,開発用に,コードをマイナーチェンジ
すること
–最適化がかなりかかっており,コードの可読性
が低い
–類似したアルゴリズムが再利用できる形でクラ
スが設計されていなかった
研究者による最新のアルゴリズムの実装
–多くはMatlab, Pythonなどで実装
–C++かつ最適化したコード生成は大変
40
今後に期待~少しづつ強化中
Coreへ最適化アルゴリズムが追加など
– 共役勾配ソルバ
– 滑降シンプレックスソルバ
– リニアプログラミングソルバ
Algorithmクラスの導入
– 基底クラスを導入して類似したアルゴリズムをまとめる仕組
みを導入
機械学習モジュールのリファクタリング
– 3.0から一気に使いやすく.
HALモジュールの追加
– 独自実装や外部ライブラリで数値計算を強化
Contrib環境の整備
– 積極的なコミットや,Google Summer Codeには注目
41
Matlab
メリット
–行列演算がパワフル
–最適化ツールボック
ス
–ドキュメントがそ
ろってる
デメリット
–高価
–遅い
OpenCV
メリット
–速い
–更新も早い
–オープンソース
デメリット
–数値計算が弱い
–C++の障壁
• Pythonを使えばOK
–ドキュメントが弱い
–バグが避けられない
Matlab vs OpenCV 42
OpenCVモジュール開発
~高速に動かすために~
43
関数やMat同士の演算だけで終われないか
考える
–Matの同士の演算や関数は高度に最適化されて
いる.
外部ライブラリとOpenCVを連携させる
–EIGENなどは変換用の関数が容易されている.
Github等を探して実装を探す
–研究者がC++で書いている場合もわずかにあり
ます.
関数の組み合わせで作る 44
Matlab:商用.行列演算ライブラリ
FFTW:FFTライブラリ
Eigen:高速な行列演算ライブラリ
–#define EIGEN_NO_DEBUGで高速化
Intel MKL:インテルの数値計算ライブラリ
Intel IPP:インテルのマルチメディアライ
ブラリ
その他のライブラリ1 45
Dlib
–機械学習ライブラリ,顔認識など
VLfeat
–特徴量,セグメンテーション
Image Processing Online
–http://www.ipol.im/
–画像処理の実装の論文誌.必ずコードが付いて
いる
–かなりの量のコードが公開
その他のライブラリ2 46
OpenCV
–parallel_for_:並列化プログラミング
–AutoBuffer:メモリ周りの高速化
–universal intrinsics:画素操作のベクトル化
早いコードを書くために 47
*Pythonによるコンピュータビジョンの入門書です.
書いてPythonによるCVを習得するには非常におすすめな本です.
「forループでピクセルを操作し行列を計算する時代でもありません。」
~実践コンピュータビジョン*の書籍詳解より
並列プログラムを書くためのライブラリ,
がOS,コンパイラに応じてたくさんの種類
があるため,それらをバックエンドとする
抽象化した並列化プログラミングの記述方
式
–GCD (OSX, iOS), OpenMP, Pthreads (new in 3.0),
TBB, Concurrency (Windows, WinRT), C=
–cv::Mutex を使えば,map-reduce も作れます.
マルチコア並列化parallel_for_ 48
オートバッファ
–Mallocよりも100倍速い(時もある)
–型安全でクロスプラットフォームなalloca
–バッファは,関数内のスコープでのみ有効
alloca + malloc = AutoBuffer<> 49
using namespace cv;
void foo()
{
AutoBuffer<float> buf;
&hellip;
buf.allocate(n); // allocate buffer for n floats on stack or, if n is big, on the heap
float* bufptr = buf;
&hellip;
} // buf is invalid at this point
&hellip;
AutoBuffer<float, 100> buf(n); // allocate on stack if n<=100
&hellip;
&#38334;&#20516;&#12434;&#29992;&#12356;&#12390;&#65292;&#12498;&#12540;&#12503;&#12392;&#12473;&#12479;&#12483;&#12463;&#12434;&#20999;&#12426;&#26367;&#12360;&#12390;&#12418;OK
&#61552;Mat&#12394;&#12393;&#65292;OpenCV&#22266;&#26377;&#12398;&#12418;&#12398;&#12434;&#20351;&#12431;&#12394;&#12356;&#29420;&#31435;
&#12375;&#12383;&#12473;&#12479;&#12486;&#12451;&#12483;&#12463;&#12521;&#12452;&#12502;&#12521;&#12522;&#12392;&#12375;&#12390;&#27083;&#31689;&#20104;&#23450;
&#61552;CPU&#12384;&#12369;&#12395;&#23550;&#24540;
&#61552;&#12469;&#12540;&#12489;&#12497;&#12540;&#12486;&#12451;&#12398;&#12458;&#12540;&#12503;&#12531;&#12477;&#12540;&#12473;&#65292;&#12463;&#12525;&#12540;&#12474;
&#12489;&#12477;&#12540;&#12473;&#12398;&#12450;&#12489;&#12458;&#12531;&#12392;&#12375;&#12390;&#36861;&#21152;
&ndash;EIGEN,BLAS, FFTW, FastCV, OpenVX&#12394;&#12393;&#65311;
&ndash;&#12418;&#12375;&#65292;Intel MKL&#12364;&#21462;&#12426;&#36796;&#12414;&#12428;&#12383;&#12425;&#12363;&#12394;&#12426;&#35299;&#27770;&#65311;
&#61552;&#23550;&#35937;&#12392;&#12377;&#12427;&#31684;&#22258;&#12399;&#65292;&#20363;&#12360;&#12400;&#65292;
&ndash;&#39640;&#36895;&#12394;LU&#20998;&#35299;&#65292;&#12467;&#12524;&#12473;&#12461;&#12540;&#20998;&#35299;&#12364;&#12375;&#12383;&#12356;
&ndash;&#39640;&#36895;&#12395;exp, log, sqrt, sin&#12364;&#35336;&#31639;&#12375;&#12383;&#12356;
HAL 50
&#61552;&#30011;&#20687;&#20966;&#29702;&#23554;&#29992;&#12503;&#12525;&#12464;&#12521;&#12511;&#12531;&#12464;&#35328;&#35486;
&ndash;http://halide-lang.org/
&ndash;C++&#12392;&#19968;&#32210;&#12395;&#20351;&#12358;&#65288;&#12481;&#12517;&#12540;&#12522;&#12531;&#12464;&#38750;&#23436;&#20840;&#65289;&#65294;
&ndash;&#12450;&#12523;&#12468;&#12522;&#12474;&#12512;&#12392;&#12473;&#12465;&#12472;&#12517;&#12540;&#12522;&#12531;&#12464;&#37096;&#12364;&#29420;&#31435;
&ndash;&#12450;&#12523;&#12468;&#12522;&#12474;&#12512;&#37096;&#12391;&#25277;&#35937;&#30340;&#12394;&#30011;&#20687;&#20966;&#29702;&#12434;&#26360;&#12367;
&ndash;&#12473;&#12465;&#12472;&#12517;&#12540;&#12522;&#12531;&#12464;&#37096;&#12391;&#20855;&#20307;&#30340;&#12394;&#30011;&#32032;&#12398;&#25805;&#20316;&#12395;&#12388;&#12356;
&#12390;&#20219;&#24847;&#12398;&#21336;&#20301;&#12391;&#65292;&#12505;&#12463;&#12488;&#12523;&#21270;&#65292;&#20006;&#21015;&#21270;&#65292;&#12461;&#12515;&#12483;
&#12471;&#12517;&#12502;&#12525;&#12483;&#12461;&#12531;&#12464;&#12434;&#12473;&#12465;&#12472;&#12517;&#12540;&#12522;&#12531;&#12464;&#12377;&#12427;
&ndash;&#21830;&#29992;OK&#12394;MIT&#12521;&#12452;&#12475;&#12531;&#12473;
&#61552;&#39640;&#36895;&#12394;&#12467;&#12540;&#12489;&#12434;&#26360;&#12367;&#12383;&#12417;&#12395;&#12399;&#38750;&#24120;&#12395;&#12362;&#12377;&#12377;&#12417;&#65294;
&#61552;&#12383;&#12384;&#12375;&#65292;&#26085;&#26412;&#35486;&#24773;&#22577;&#12399;&#12411;&#12392;&#12435;&#12393;&#12394;&#12356;&#65294;
Halide 51
&#61552;&#65299;&#65368;&#65299;&#12508;&#12483;&#12463;&#12473;&#12501;&#12451;&#12523;&#12479;&#12398;&#20363;
&#12452;&#12531;&#12486;&#12464;&#12521;&#12523;&#12452;&#12513;&#12540;&#12472;&#20351;&#12387;&#12383;&#12425;&#65292;
&#12300;&#12371;&#12428;&#20197;&#19978;&#36895;&#12367;&#12391;&#12365;&#12394;&#12356;&#65294;&#19990;&#30028;&#26368;&#36895;&#12384;&#12301;
&#12392;&#12362;&#12418;&#12387;&#12390;&#12414;&#12379;&#12435;&#12363;&#65311;
Halide 52
&#61552;&#65299;&#65368;&#65299;&#12508;&#12483;&#12463;&#12473;&#12501;&#12451;&#12523;&#12479;&#12398;&#20363;
&ndash;&#12479;&#12452;&#12522;&#12531;&#12464;&#65292;&#12505;&#12463;&#12488;&#12523;&#21270;&#65292;&#20006;&#21015;&#21270;&#12398;&#12354;&#12426;&#12392;&#12354;&#12425;
&#12422;&#12427;&#12497;&#12479;&#12540;&#12531;&#12364;&#31777;&#21336;&#12395;&#35352;&#36848;&#12391;&#12365;&#12427;&#12383;&#12417;&#38480;&#30028;&#12414;&#12391;
&#31777;&#21336;&#12395;&#12467;&#12540;&#12489;&#12364;&#26368;&#36969;&#21270;&#21487;&#33021;
&ndash;&#25351;&#23450;&#12375;&#12383;&#12392;&#12362;&#12426;&#12398;C++&#12467;&#12540;&#12489;&#12434;&#33258;&#21205;&#29983;&#25104;
Halide 53
Halide 54
&#12371;&#12398;&#12467;&#12540;&#12489;&#12392;&#21516;&#12376;&#21629;&#20196;&#12364;&#29983;&#25104;&#12373;&#12428;&#12427;&#65281;
Halide&#12481;&#12517;&#12540;&#12488;&#12522;&#12450;&#12523;&#12398;&#12473;&#12521;&#12452;&#12489;&#12424;&#12426;
"We should forget about small efficiencies, say about 97% of the time:
premature optimization is the root of all evil. Yet we should not pass up
our opportunities in that critical 3%&rdquo;
Donald Knuth
&hellip; especially when you are doing computer vision on a cell phone
OpenCV team
Questions?
CVPR 2015&#12481;&#12517;&#12540;&#12488;&#12522;&#12450;&#12523;&#12424;&#12426;
&#61552;OpenCV&#12399;&#12356;&#12429;&#12356;&#12429;&#12391;&#12365;&#12427;
&#61552;&#39640;&#36895;&#21270;&#12434;&#12469;&#12509;&#12540;&#12488;&#12377;&#12427;&#27096;&#12293;&#12394;&#27231;&#33021;&#12364;&#12354;&#12427;
&#61552;&#12391;&#12418;&#30495;&#12395;&#36895;&#12356;&#12467;&#12540;&#12489;&#12399;Halide&#20351;&#12387;&#12383;&#12411;&#12358;&#12364;
&#12356;&#12356;&#12363;&#12418;&#12397;&#65294;
&ndash;&#30011;&#20687;&#20966;&#29702;&#12467;&#12531;&#12497;&#12452;&#12521;&#65292;&#30011;&#20687;&#20966;&#29702;&#12487;&#12496;&#12483;&#12460;&#12398;&#30740;&#31350;
&#12434;&#19968;&#32210;&#12395;&#12420;&#12427;&#20154;&#21215;&#38598;&#12375;&#12390;&#12356;&#12414;&#12377;&#65294;
&#12414;&#12392;&#12417; 56
&#21442;&#32771;&#26360;&#12539;&#21442;&#32771;URL
57
&#61552;OpenCV&#20837;&#38272;&#65288;Build INSIDER&#65289;
&ndash; http://www.buildinsider.net/small/opencv
&ndash; &#20837;&#38272;&#21521;&#12369;&#12398;&#35352;&#20107;
&#61552;&#38651;&#23376;&#24773;&#22577;&#36890;&#20449;&#23398;&#20250;&#32207;&#21512;&#22823;&#20250;PRMU&#30740;&#31350;&#20250;&#20225;&#30011;&#12475;&#12483;
&#12471;&#12519;&#12531;&#65306;OpenCV 3.0 &#8213; &#12467;&#12531;&#12500;&#12517;&#12540;&#12479;&#12499;&#12472;&#12519;&#12531;&#12434;&#31777;
&#21336;&#21270;&#12377;&#12427;&#12521;&#12452;&#12502;&#12521;&#12522;
&ndash; http://www.ieice.org/~prmu/jpn/ieice2016.html
&ndash; &#26412;&#65306;OpenCV&#65299;&#12503;&#12525;&#12464;&#12521;&#12511;&#12531;&#12464;&#12502;&#12483;&#12463;&#12398;&#33879;&#32773;&#12398;&#19968;&#20154;&#12391;&#12377;&#65294;
&#61552;OpenCV.jp
&ndash; http://opencv.jp/
&ndash; &#25285;&#24403;&#32773;&#12364;&#24537;&#12375;&#12356;&#12383;&#12417;&#65292;2.2&#12367;&#12425;&#12356;&#12391;&#26356;&#26032;&#12364;&#12411;&#12412;&#20572;&#27490;&#65294;
&ndash; &#12510;&#12491;&#12517;&#12450;&#12523;&#12398;&#33521;&#35486;&#12364;&#12393;&#12358;&#12375;&#12390;&#12418;&#35501;&#12415;&#12383;&#12367;&#12394;&#12356;&#20154;&#29992;
&#26085;&#26412;&#35486;&#24773;&#22577; 58
&#61552;http://tessy.org/wiki/index.php?%3AOpenC
V
&#61552;atinfinity/lab/wiki/OpenCV
&ndash;https://github.com/atinfinity/lab/wiki/OpenCV
&#61552;eiichiromomma/CVMLAB
&ndash;https://github.com/eiichiromomma/CVMLAB/wi
ki/OpenCV
&#61552;OpenCV&#20633;&#24536;&#37682;
&ndash;https://iwaki2009.blogspot.jp/
&#26085;&#26412;&#35486;&#24773;&#22577; 59
&#35443;&#35299;OpenCV
&#61552;&#19968;&#30058;&#35443;&#12375;&#12356;&#26412;&#12398;&#32763;&#35379;&#65294;&#25945;&#31185;&#26360;&#29992;&#65294;
&ndash;&#12383;&#12384;&#12375;OpenCV&#65297;&#31995;&#12398;&#35352;&#36848;
&ndash;&#20837;&#38272;&#26360;&#12391;&#12399;&#12394;&#12356;
&#61552;3&#31995;&#12398;&#26032;&#12375;&#12356;&#12418;&#12398;&#12364;&#20170;&#24180;&#65297;&#65298;&#26376;&#12395;&#30330;&#22770;&#20104;&#23450;
&ndash;&#12383;&#12384;&#12375;&#65292;&#33521;&#35486;
&ndash;&#36884;&#20013;&#12414;&#12391;&#12398;&#38651;&#23376;&#29256;&#12399;&#65292;
&#20170;&#12391;&#12418;&#36092;&#20837;&#21487;&#33021;
&ndash;&#30330;&#22770;&#12364;&#12398;&#12403;&#12398;&#12403;&#12394;&#12398;&#12391;
12&#26376;&#12363;&#12399;&#24618;&#12375;&#12356;
&#61552;Python&#12395;&#12424;&#12427;&#12467;&#12531;&#12500;&#12517;&#12540;&#12479;&#12499;&#12472;&#12519;&#12531;&#20837;&#38272;&#26360;
&#61552;OpenCV&#12395;&#38480;&#23450;&#12375;&#12390;&#12356;&#12427;&#12431;&#12369;&#12391;&#12399;&#12394;&#12356;&#65294;
&#61552;&#21407;&#33879;&#12398;pdf&#12398;&#12466;&#12521;&#12399;&#20844;&#38283;&#12373;&#12428;&#12390;&#12356;&#12427;
&ndash;Programming Computer Vision with Python
&ndash;http://programmingcomputervision.com/
&#23455;&#36341; &#12467;&#12531;&#12500;&#12517;&#12540;&#12479;&#12499;&#12472;&#12519;&#12531; 61
OpenCV&#65299;&#12503;&#12525;&#12464;&#12521;&#12511;&#12531;&#12464;&#12502;&#12483;&#12463;
&#61552;&#12377;&#12391;&#12395;&#20351;&#12387;&#12383;&#12371;&#12392;&#12364;&#12354;&#12427;&#20154;&#12395;&#23550;&#12375;&#12390;&#12418;&#12387;&#12392;
&#12371;&#12435;&#12394;&#20351;&#12356;&#26041;&#12364;&#12354;&#12427;&#12424;&#12392;&#25552;&#31034;&#12377;&#12427;&#20869;&#23481;&#12398;&#26412;
&ndash;&#65298;&#31995;&#12363;&#12425;&#12398;&#20197;&#38477;&#12460;&#12452;&#12489;&#12364;&#12377;&#12371;&#12375;&#12354;&#12427;&#19968;&#30058;&#35443;
&ndash;&#29872;&#22659;&#27083;&#31689;&#12395;&#12388;&#12356;&#12390;30&#12506;&#12540;&#12472;&#12367;&#12425;&#12356;
&bull; Web&#12398;&#26368;&#26032;&#29256;&#12398;&#12411;&#12358;&#12364;&#21442;&#29031;&#12377;&#12427;&#20385;&#20516;&#12399;&#39640;&#12356;
&ndash;&#27531;&#12426;&#12399;&#12469;&#12531;&#12503;&#12523;&#12467;&#12540;&#12489;&#65292;&#12487;&#12514;&#12467;&#12540;&#12489;-
&#61552;&#65299;&#12392;&#36949;&#12387;&#12390;&#12469;&#12531;&#12503;&#12523;&#12467;&#12540;&#12489;&#12364;&#65298;&#31995;
&#61552;&#12467;&#12531;&#12475;&#12503;&#12488;&#12399;&#65299;&#12392;&#21516;&#12376;&#12391;&#12356;&#12429;&#12356;&#12429;&#12394;&#12469;&#12531;&#12503;
&#12523;&#12467;&#12540;&#12489;&#12434;&#21015;&#25369;&#12377;&#12427;&#12473;&#12479;&#12452;&#12523;
&#61552;&#12383;&#12384;&#12375;&#31777;&#21336;&#12394;&#36870;&#24341;&#12365;&#12364;&#20184;&#12356;&#12390;&#12356;&#12427;&#12383;&#12417;&#20415;&#21033;
&#12384;&#12387;&#12383;
&ndash;OpenCV.jp&#12395;&#12418;&#20184;&#12356;&#12390;&#12356;&#12427;
OpenCV&#65298;&#12503;&#12525;&#12464;&#12521;&#12511;&#12531;&#12464;&#12502;&#12483;&#12463; 63
&#61552;&#38750;&#24120;&#12395;&#31777;&#21336;&#12394;&#12467;&#12540;&#12489;&#12364;&#36028;&#12426;&#20184;&#12369;&#12390;&#12354;&#12426;&#65292;&#12381;
&#12398;&#35500;&#26126;&#12364;&#12354;&#12427;
&ndash;&#30011;&#20687;&#20966;&#29702;&#21021;&#24515;&#32773;&#29992;&#65294;
&ndash;&#20170;&#12414;&#12391;OpenCV&#12395;&#23569;&#12375;&#35302;&#12387;&#12383;&#12371;&#12392;&#12364;&#12354;&#12427;&#20154;&#12399;&#12411;
&#12412;&#24517;&#35201;&#12394;&#12356;
&#61552;UMat&#12395;&#12388;&#12356;&#12390;&#35443;&#12375;&#12356;
&ndash;&#12383;&#12384;&#12375;&#21021;&#23398;&#32773;&#12395;UMat&#12434;&#12354;&#12360;&#12390;&#36914;&#12417;&#12427;&#29702;&#30001;&#12364;&#12394;
&#12356;&#65294;
&ndash;OpenCL&#12398;&#29420;&#33258;&#12459;&#12540;&#12493;&#12523;&#35352;&#36848;&#12364;&#35443;&#12375;&#12356;&#65294;
OpenCV&#65299;&#22522;&#26412;&#12503;&#12525;&#12464;&#12521;&#12511;&#12531;&#12464; 64

More Related Content

&#30011;&#20687;&#20966;&#29702;&#12521;&#12452;&#12502;&#12521;&#12522; OpenCV &#12391; &#20986;&#26469;&#12427;&#12371;&#12392;&#12539;&#20986;&#26469;&#12394;&#12356;&#12371;&#12392;