3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3d comupter...
DESCRIPTION
慶応義塾大学大学院 理工学研究科での佐藤幸男先生の講義「3次元画像工学」において、私が特別講義を行った際の発表資料です。KinectやTOFセンサーの原理、Kinect SDKやOpenNIについて、Point Cloud Library(PCL)などの紹介です。TRANSCRIPT
![Page 1: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/1.jpg)
1
3次元画像工学 2013/06/19 特別講義
![Page 2: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/2.jpg)
内容 1. Kinect1(Pro-Cam形式)の原理
2. Kinect2(TOF形式)の原理
3. Kinect for Windows SDK v.s. OpenNI
4. PCL (Point Cloud Library)チュートリアル
2
![Page 3: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/3.jpg)
内容 1. Kinect1(Pro-Cam形式)の原理
2. Kinect2(TOF形式)の原理
3. Kinect for Windows SDK v.s. OpenNI
4. PCL (Point Cloud Library)チュートリアル
3
![Page 4: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/4.jpg)
コンシューマデプスセンサーとは × 実世界の距離情報を動画で撮影できるセンサー
× 昔の物と比べて、価格が安い(各製品2万~5万程度)
× 主に2つの方式
①Pro-Cam(Projector-Camera)方式
Kinect (Primesense社)
②TOF形式(Time of Flight)方式
Kinect2, Softkinetic など
4
![Page 5: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/5.jpg)
Kinect Effect (Microsoftのプロモーション動画 )
5
![Page 6: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/6.jpg)
Microsoft Kinect and Virtual Fitting Room Demo
6 http://www.youtube.com/watch?v=BtYMOOrBb2E
![Page 7: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/7.jpg)
PCLを用いたPoint Cloud処理を 行うアプリケーション例
7
3D Point Cloud Based Object Recognition System http://www.youtube.com/watch?v=gvRjULl_FKM
![Page 8: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/8.jpg)
Kinect(Primesensor) × イスラエルのPrimesense 社が製造しているデプスセンサ。
× Microsoft社がKinect SDKに対応させたPrimesensorを「Kinect」として販売。
× Asus社が同様にPrimesensorを「Xtion(エクション)」として販売。
× Kinect ,Xtionともに「OpenNI」というライブラリが使用可能。
8
Kinect Xion
![Page 9: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/9.jpg)
Kinect(Primesensor)の原理 Microsoft Kinectの仕様:
× デプス解像度:640×480 px
× RGB解像度:1600×1200px
× 最大60fps:
× 撮影範囲:0.8 ~3.5m (旧Kinect), 0.4 ~3.5m (Kinect for Windows nearモード時)
× 空間分解能 x/y:2mの場所で3mm
× 空間分解能 z:2mの場所で1cm
9
![Page 10: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/10.jpg)
Kinect(Primesensor)の原理 投影光方式(Structured Light Imaging)
× 既知の光パターンを3次元空間中の対象に投影し、それを1台or複数のカメラで撮影。
× 投影されたパターンが歪むことにより3次元形状を撮影できる。
10
画像:Wikipediaより
![Page 11: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/11.jpg)
Kinect(Primesensor)の原理 Kinectが出す投影光を赤外線カメラで撮影(肉眼では見えない)
11
Kinect with Nightshot: http://www.youtube.com/watch?v=nvvQJxgykcU
![Page 12: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/12.jpg)
Kinect(Primesensor)の原理 投影光方式の種類
× 時間多重化
× 直接符号化
× 空間近傍(Kinectはこれ)
パターン中で各座標位置を認識するために、座標毎にこのコードがユニークなものである必要がある。
Kinectは「疑似ランダムパターン」コードに使用。
12
アーティストAudrey Penvenによる Kinect投影光の写真
Slide from Castaneda and Navab
![Page 13: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/13.jpg)
Kinect(Primesensor)の原理
13
KinectのDepth計算
× 仮想画像と観測画像の間での、各斑点による三角測量
× 各点はエピポーラ線上で、対応づけが可能なユニークな斑点を持っている。
画像:Primesenseの特許から Slide from Castaneda and Navab
![Page 14: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/14.jpg)
Kinect(Primesensor)の原理
14
Kinectの処理
× 斑点のサイズと形状は、センサーの距離と方向に依存する。
× Kinectは異なる3つの距離範囲向けに、異なる3つの斑点サイズを使用している。
× 3つの距離範囲の精度: × 近い領域:高精度 × 真ん中領域:中精度 × 遠い領域:低精度
画像:Primesenseの特許から Slide from Castaneda and Navab
![Page 15: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/15.jpg)
Kinect(Primesensor)の原理 パターンはどう見える?
× 第一領域(約0.8-1.2m):高精度のデプス表面を取得可能。
× 第二領域(約1.2-2.0m):中精度のデプス表面を取得可能。
× 第三領域(約2.0-3.5m):低精度のデプス表面を取得可能。
15 アーティストAudrey Penvenによる Kinect投影光の写真
Slide from Castaneda and Navab
![Page 16: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/16.jpg)
Kinectの生データの精度
16 ICRA2013 PCL tutorialより
![Page 17: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/17.jpg)
内容 1. Kinect1(Pro-Cam形式)の原理
2. Kinect2(TOF形式)の原理
3. Kinect for Windows SDK v.s. OpenNI
4. PCL (Point Cloud Library)チュートリアル
17
![Page 18: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/18.jpg)
TOF(Time of Flight) センサー
× 投影した光源の赤外線LEDを反射後受光し、その行って戻ってくるまでにかかった時間(Time of Flight)を用いて距離を計算。
× TOFによるコンシューマセンサーの例 × SoftKinetic(右図) × Kinect 2 (Xbox Oneに付属予定)
18
![Page 19: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/19.jpg)
Kinect2 for XBOX One × 先月発表されたXBOX OneにTOFベースの新Kinect(本講義でのKinect2)が全ハードに搭載されることが発表
19
• TOFセンサーへ変更 • 解像度1080p(1920×1080)へ • 画角と遠距離計測が向上 • 姿勢推定同時に6人まで • ボーンの回転方向(ひねり) も推定。
Wiredのyoutubeより
![Page 20: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/20.jpg)
Pro-Cam v.s. TOF × KinectなどのPro-cam
× グレーコードでも位相シフトコードでも、画像として正しくパターンが映っていれば高い精度でデプス計算できる.
× 黒色や鏡面反射など、黒抜け、白抜けしている領域は3D化できない(パターンがうまく撮影できないため)
× PrimeSense社しか、低コスト製品での動画デプス計測にはまだ成功していない。
× TOFセンサー × 表面の反射特性次第で精度が悪くなったりする × 照射した赤外LED以外の光も受光するので、背景環境の光が強いほど、計測誤差が生じる
× 一般に低価格化が難しいと言われて来た(が、改善傾向?)
20
![Page 21: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/21.jpg)
内容 1. Kinect1(Pro-Cam形式)の原理
2. Kinect2(TOF形式)の原理
3. Kinect for Windows SDK v.s. OpenNI
4. PCL (Point Cloud Library)チュートリアル
21
![Page 22: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/22.jpg)
KinectとXtionの違い (ハードウェア)
22
Xtion (Asus社) 商用アプリケーション製作可
Kinect for Windows (Microsoft社) 商用アプリケーション製作可
Kinect for XBOX360 (Microsoft社) 商用アプリケーション製作不可
![Page 23: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/23.jpg)
KinectとXtionの違い (機能)
23
Kinect(Microsoft) Xtion (Asus)
デプス画像+RGB画像の取得(一番の基本)
○ ○
モーターによる撮影角度の変更
○ ×
音声認識 ○ ×
マイクアレーによる 混合音源分離
○ ×
人物姿勢推定 ○(Microsoftの手法。CVPR 2011 best paper)
○(Primesenseの手法。アルゴリズム非公開)
Face Tracking ○ ×
開発言語 C# or C++ C++
![Page 24: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/24.jpg)
Kinect SDK × Microsoftから提供されているKinectに各種機能を提供するためのミドルウェアライブラリ
× メイン機能はNatural User Interface(姿勢推定)。姿勢推定を用いた非接触のインターフェースとして、MicrosoftはKinectを盛んにプロモートしてきた。
× Kinect for Windowsを購入すると使用できる(XBOX360用のKinect では使用不可)。
× SDK1.5以降:Face Tracking(顔の特徴点追跡)も搭載。
× SDK1.7以降:部屋の3D合成キャプチャKinect Fusionも搭載。
× 4つのマイクを用いた音声認識、ブラインド音源分離によるノイズ除去。Kinectの角度制御など。
24
![Page 25: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/25.jpg)
Kinect SDK で取得できる姿勢
× 各関節の座標が毎フレーム計測される。上半身だけ写ってても計測可。
× 前と後ろ(腹側と背中側)の区別無し。
× このMocapデータを用いたNatural User InterfaceがKinectの基本的な使い方(これはOpenNIでも同じ)
× もちろんKinectがデプスを取得できる状況でしか計測できない。(ソファーや椅子と合体している状況、投影光が撮影できなくなる屋外、反射の強い服装などでは姿勢推定不可)
25
画像引用元:http://www.codeproject.com/Articles/213034/Kinect-Getting-Started-Become-The-Incredible-Hulk
![Page 26: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/26.jpg)
Kinect SDK Human Pose Estimation
26
CVPR 2011 “Real-Time Human Pose Recognition in Parts from Single Depth Images “ Jamie Shotton et al. (Microsoft Research Cambridge & Xbox Incubation )
![Page 27: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/27.jpg)
Kinect SDK Human Pose Estimation
27
距離画像特徴量:距離画像中の2点でのデプス値の違い
距離画像特徴量を用いた、Random Forestsによる 画素毎のパーツ識別。大量のデータでパーツ識別を学習しておく。
(次ページ)
![Page 28: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/28.jpg)
Kinect SDK Human Pose Estimation
28
CG合成による 疑似距離画像からの学習データ
実際に人を撮影した 距離画像からの学習データ 大量のデータにより
識別器を学習!
![Page 29: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/29.jpg)
Kinect SDK 1.5以降 Face Tracking
× 顔モデルを用いた各頂点の3D座標のトラッキング。
(SDK 1.5以降)
× 画像のみでも、デプスでも可能。
29 http://www.youtube.com/watch?v=ZF4IdCBVJJU
![Page 30: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/30.jpg)
Kinect SDK 1.7以降 Kinect Fusion
× Kinectで計測したデプスのリアルタイム合成。
× カラーは撮れない(形状のみ再構成)。
30 http://research.microsoft.com/en-us/projects/surfacerecon/
![Page 31: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/31.jpg)
OpenNI × Primsense社が提供している、KinectとXtionで両方に使えるオープンソースのミドルウェアライブラリ。
× Microsoftの姿勢推定は搭載されていないが、Primesense社が提供している姿勢推定(アルゴリズムは非公開)により姿勢推定が可能。
× (後述するが)Depth画像とRGB画像の取り扱いはPCLで行った方が簡単:(理由)2つの画像の同期取得や、Point Cloudオブジェクトへの代入を、PCLが代わりにやってくれるので。
31
![Page 32: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/32.jpg)
OpenNIで計測できる 姿勢
× Kinect SDKと比べて、関節数がやや少ない。
× ただ、Kinect SDKより先に「上半身だけ」のトラッキングなどには対応してきた。
× Microsoftの手法とは違い、細線化処理した仮のスケルトンからモデルあてはめでトラッキングしていると予測されている(アルゴリズム非公開のため真偽は不明)
32
![Page 33: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/33.jpg)
Kinect Hack × 商用可能のKinect for Windowsが出るまでは、Kinectをそのものを製品として売る事ができなかった → KinectのプログラミングはHackerのいい遊び道具になっていた!
× 代表的Hack (ソースコードつき) × Kinect ultra:
http://code.google.com/p/kinect-ultra/
× Kinect でかめはめ波:
http://code.google.com/p/kinect-kamehameha/
× The Kinect 3D Video Capture Project : http://idav.ucdavis.edu/~okreylos/ResDev/Kinect/
33
![Page 34: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/34.jpg)
Kinect ultra
34
![Page 35: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/35.jpg)
Kinect Accelerator × http://www.microsoft.com/bizspark/kinectaccelerator/
× Microsoftによるstartup向けのKinect使用ビジネス促進のための投資プログラム。2012 Springのコンテストに合格した11社が現在このプログラムの支援を受けている.
35
![Page 36: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/36.jpg)
内容 1. Kinect1(Pro-Cam形式)の原理
2. Kinect2(TOF形式)の原理
3. Kinect for Windows SDK v.s. OpenNI
4. PCL (Point Cloud Library)チュートリアル
36
![Page 37: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/37.jpg)
Point Cloud
画像引用元: ICCV 2011 PCL tutorial 37
![Page 38: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/38.jpg)
Point Cloud Library × Point CloudとMeshの処理のための、C++言語オープンソースライブラリ(BSDライセンス)。
× Win/Mac/Linuxのクロスプラットフォーム
× OpenCVと姉妹プロジェクト
× OpenNIと連携しており、KinectなどのデプスセンサからPoint Cloudを取得可能。
38
![Page 39: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/39.jpg)
Point Cloudを取得できるセンサ
画像引用元: ICCV 2011 PCL tutorial 39
![Page 40: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/40.jpg)
PCLの依存ライブラリ × Boost: C++の拡張標準ライブラリ。マルチスレッド、スマートポインタ、データ構造拡張、ファイル入出力拡張など。
× VTK(Visualization Tool Kit): 3D可視化・GUIライブラリ。(OpenGLをラッパー)
× Eigen: コードが書き易い、高速な線形代数ライブラリ。
× FLANN: 最近傍探索ライブラリ(pcl::searchで使用)
× qHull: 凸法、三角化、ドロネー分割などのメッシュ処理。
× OpenNI(オプション): Kinect/XtionからRGB+ Depthを取得。
40
![Page 41: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/41.jpg)
構成モジュール(1.6まで)
41
![Page 42: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/42.jpg)
構成モジュール(1.7から)
42
![Page 43: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/43.jpg)
PCLで出来る事(概要) × Computer/Robot Vision向けの基本的な点群処理がひととおり収録されている。(局所特徴量、点群の位置合わせ、フィルタリング、RANSACによる平面の検出など)
× Computer Graphics/CAD modeling向けのサーフェス処理が積極的に追加されている。
× Kinect(Primesensor)からOpenNI経由でPoint Cloud型のデータが直接取得できる
× PCL1.7(もうすぐ公開)から、物体認識、人物トラッキング、姿勢推定、セグメンテーションなど、一気に強化される予定。
43
![Page 44: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/44.jpg)
PCLの公式チュートリアル http://pointclouds.org/documentation/tutorials/
44
![Page 45: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/45.jpg)
PCLの公式サンプルプログラム (Windows)
× C¥:Program Files¥PCL 1.6.0¥bin にPCL公式サイトの各チュートリアルのサンプルがコンパイルされた.exeがインストールされている。
× 対応するソースコードの保存場所は C¥:Program Files¥PCL 1.6.0¥share¥doc¥pcl-1.6¥tutorials¥sources
(いずれも.cppファイルのみ。特定のIDE向けのプロジェクトは含まれていない)
解説(英語)付きのWebチュートリアルが、各モジュールの各機能毎に(例:registrationのICP,segmentationの平面特定など) 、サンプルコードとセットで提供されている。 PCLの習得には、ぜひこれらのサンプルとチュートリアルを活用されたい。
45
![Page 46: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/46.jpg)
拙ブログ「DERiVE –コンピュータビジョンブログ」にて PCLのチュートリアル連載を継続中
http://derivecv.tumblr.com/
「PCLの公式チュートリアルの各記事+アルファ」を日本語で解説する記事の連載「PCLを触ってみよう!」を継続中。
46
![Page 47: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/47.jpg)
デモ1 Hello PCL World!
まずはPCLのHello World的プログラムを紹介。
× PCL独自のPoint cloudファイル形式である「.pcd」データをPointCloud<PointT>オブジェクトに読み込む。
× 読み込んだPointCloudをCloudViewerに表示する。
47
![Page 48: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/48.jpg)
Point Cloud in PCL 基本形:
pcl::PointCloud< PointT >::Ptr cloud( new PointCloud< PointT >() );
Point Cloudに含まれる点の形式を表すPointTの例:
u pcl::PointXYZ : 3D 位置
u pcl::PointXYZI : 3D 位置 + 輝度
u pcl::PointXYZRGBA: 3D 位置 + RGBA
u pcl::PointNormal: 3D 位置+法線ベクトル
例):格納する各点がPointXYZRGBAのPoint Cloudを作成。
PointCloud<pcl::PointXYZRGBA>::Ptr data( new PointCloud<pcl::PointXYZRGBA>() );
48
![Page 49: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/49.jpg)
Point CloudへのPointTの追加 PointCloud型のメンバである「points」にpush_backする。
(※ PointCloudの中身はSTLのvectorのようなデータ構造)
例: Point Cloudに座標値が(100,200,300)のPointXYZ型の点を
1点だけ追加する。
pcl::PointCloud< PointXYZ >::Ptr cloud( new PointCloud< PointXYZ >() );
PointXYZ point; point.x = 100; point.y = 200; point.z = 300;
cloud->points.push_back( point );
49
![Page 50: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/50.jpg)
PCL::ioモジュール × PointCloud<PointT>型のデータをPCLの独自ファイル形式「.pcd形式」へ保存・読み込みができる。
× OpenNIによりデータを取得できる各種デプスセンサ(Kinect, Xtion)からリアルタイムに同期された「デプス+RGB画像」を直接PointCloud型でキャプチャ可能!
(→ OpenNIでPoint cloud を取り扱いたいなら、OpenNI単体での使用よりPCLからのOpenNIの使用がおすすめ)
× CG/CAD用のメッシュデータ形式(.obj 、.ply)の読み/書きが可能。
50
![Page 51: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/51.jpg)
Cloud Viewerクラス × シンプルなPoint Cloudの可視化クラス(ウィンドウ)。
× VTKによる実装(OpenGLによるグラフィックス表示)。
× .pcdファイルから読み込んだ1つのPoint Cloudを表示するにはこれで十分。
CloudViewer *viewer = new CloudViewer( “Sample" );
viewer->showCloud( cloud_filtered );
※本日はこのCloudViewerのみを紹介するがPCLにはより多機能なビューワーであるPCLVisulaizerクラスが用意されている。
51
![Page 52: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/52.jpg)
デモ1: 実演
52
![Page 53: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/53.jpg)
デモ2 Hello OpenNI World!
OpenNIとのインターフェースであるOpenNIGrabberクラスの使い方を学ぶ
× OpenNIGrabberクラスによるPointCloudの取得。
× リアルタイムに取得しているPointCloudのCloudViewerへの表示。
× 取得したPointCloudを.pcd形式で保存する
53
![Page 54: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/54.jpg)
OpenNI Grabberフレームワーク OpenNIGrabber:Kinectから「RGB画像+デプス」をリアルタイム取得できる(OpenNIをラッピングしている)
1. PCLのPointCloud<PointT>型でデータを取ってきてくれる(デプス画像からデプスに変換する必要がない)。
2. RGB画像とデプスが、最初から「位置合わせ、同期」されている(同期する分、若干起動は遅い)。
54
![Page 55: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/55.jpg)
デモ2: 実演
55
![Page 56: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/56.jpg)
構成モジュール(再)
56
![Page 57: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/57.jpg)
Filters モジュール × 点群向けのノイズや外れ値除去、平滑化などのフィルタリングを提供
× 主なアルゴリズム: × Bilateral Filter × ダウンサンプリング
(VoxelGrid filter) × 外れ値除去(StatisticalOutlierRemoval)
57
![Page 58: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/58.jpg)
Keypoint/Featuresモジュール × キーポイントの検出と、
Descriptor計算
× 主なアルゴリズム: × Harris,SIFT,SURF,BRISK,A
GASTなどのキーポイント × 法線、曲率、Spin Image × Narf, FPFH
58
![Page 59: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/59.jpg)
Registrationモジュール × 点群同士のレジストレーション(位置合わせ)を提供
× 主なアルゴリズム: × SVDによるおおまかな位置合わせ
× ICP(Iterative Closest Point)による精密な位置合わせ
59
![Page 60: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/60.jpg)
Sample Consensus モジュール × RANSAC PROSACなどによる幾何モデルあてはめ(平面や円筒の検出)
× 主なアルゴリズム: × RANSAC × PROSAC × MLESAC × M推定
60
![Page 61: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/61.jpg)
Segmentationモジュール × デプス、カラーを用いたセグメンテーション
× 主なアルゴリズム × SACSegmentation(平面や円筒モデルによる分割)
× Euclidian Cluster(しきい値内の点同士のクラスタリング)
× PCL1.7で大量追加予定
61
![Page 62: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/62.jpg)
Surfaceモジュール × 点群からのサーフェス生成
× 主なアルゴリズム: × MovingLeastSquares × Triangulation(メッシュ化) × Convex Hull(凸包)
62
![Page 63: 3次元画像工学2013年特別講義「コンシューマデプスセンサの原理と3D Comupter Vision入門」](https://reader036.vdocuments.mx/reader036/viewer/2022081717/55611dc2d8b42a98508b48c5/html5/thumbnails/63.jpg)
Referecence (PCLについて) PCL Tutorial
× PCL公式サイトのチュートリアルhttp://pointclouds.org/documentation/tutorials/
× ICRA 2013 tutorial:http://www.pointclouds.org/media/icra2013.html
× CVPR2012 tutorial:http://pointclouds.org/media/cvpr2012.html
Web
× 「DERiVE –コンピュータビジョンブログ」のシリーズ「PCLを触ってみよう!」http://derivecv.tumblr.com/
63