本セミナーでは、Kinectなどで取得した3D点群データに対して、コンピュータビジョンその他の処理を行うことができる、オープンソースで無料のライブラリ「Point Cloud Library (PCL) 」の「中級編」を講義形式で行います。
今回は以前の入門編セミナーの続きとして位置付けされる中級編です。SegmentationやOctreeなど、モジュールごとに主要なクラスの使い方とその動作の簡単な原理説明、その処理を使用する際の気をつける点を解説していきます。PCL1.7.2ベースでの解説を予定しています。
- 点群データ取り扱いの基本
- PointCloud型の取り扱い
- 実体での作成 v.s. ::Ptr での作成 (相互変換と関数への受け渡し)
- PointCloud同士の操作 (点群同士の結合、法線の後追加)
- .pcdファイルの取り扱い
- メモリ上のPointCloudオブジェクトと.pcdデータの関係
- ファイル形式の細かな紹介と、PLY, .objなどとの比較
- iOSアプリでの.pcdデータの共有
- MeshLabで可視化、編集するには?
- PCLVisualizerによる可視化とEigenライブラリを用いた点群のTransformation
- PCL Visualizerの基本と応用
- Eigenライブラリを用いた点群の回転・平行移動
- Filteringモジュール
- ノイズ除去とOutlier Removalの考え方
- 点群のインデックス番号による結果取得
- ダウンサンプリングとアップサンプリング
- Featuresモジュール
- NormalEstimation
- 法線の推定の仕組みとNormalEstimation系クラス
- 推定した法線はどこで使う?
- 記述子
- Spine Image
- PFH (Point Feature Histograms) とその高速近似FPFH
- SHOT記述子
- Keypointの推定とFeatureマッチング
- Keypoint検出:ISS,NARF, Harris3Dなど
- kdtreeによる最近傍探索 (NN) の理論
- Correspondence GroupingによるFeatureマッチング
- Registraitonモジュール
- 初期位置合わせ (TransformationEstimationXXX)
- ICPによる位置合わせの仕組みと、pclでのICPの使い方
- ICPの3つの段階の処理の個別の実行 (CorrespondenceEstimationXXX,CorrespondenceRejectorXXX,EstimationXXX)
- ELCHによる大規模複数点群のLoop Closure.
- Surfaceモジュール
- メッシュ化 v.s. サーフェス再構成
- 前処理としてのMovingLeastSquares
- GreedyProjection
- Poisson 再構成
- Octreeモジュール
- Octree構造自体へのアクセス
- Octreeを利用した処理 (近傍探索、点群密度推定、変化検出)
- TSDFOCtreeVolumeによるSLAMメッシュ再構成
- Recognition
- Correspondence Groupingによる物体認識と6DOF推定 (GeometricConsistencyGroupingとHough3DGrouping)
- lineMODによるテンプレートマッチング物体検出
- Octreeモジュール
- Octree構造自体へのアクセス
- Octreeを利用した処理 (近傍探索、点群密度推定、変化検出)
- TSDFOCtreeVolumeによるSLAMメッシュ再構成
- Segmentationモジュール
- Segmentation 1 : SACsegmenation
- シリンダーのセグメンテーション
- 平面セグメンテーションとEuclidian Clustering
- Segmentation2:その他のsegmenation
- Organized Segmentationとその仕組み
- 発展的なSegmentation
- テーブル上の物体検出
- Region Growingベース
- グラフカットベース Mincut
- SuperVoxel
- Peopleモジュール