【PCL入門】 Point Cloud Library について
PCLはまだまだ英語の文献の方が多いと思うので、個人的に学んだことを何回かに分けて投稿しようと思います。
次のような読者を想定しています。
- PCLをよく知らない
- そもそもC/C++もあまり慣れていない
- というかプログラミングにあまり慣れていない
ですので、分かる人にとっては冗長な説明ばかりかもしれません。
ちなみに、真の目的をぶっちゃけて言うと「私が大学の研究室でやっていたことを、将来誰かが引き継がなきゃいけなくなったときに見てもらうための覚書」です
Point Cloud Library (PCL) とは
PCL - Point Cloud Library (PCL)
ポイントクラウド(point cloud, 点群)を処理するためのライブラリです。主に3次元の点群です。元々はROSというロボットビジョンに含まれていたプロジェクトが独立したもののようです(多分)。
ポイントクラウドとは
物体などを点の集合で表現したものです。point cloud でイメージ検索してみればわかると思います。
開発環境例
本ブログでは、下記のツールやライブラリを用いてPCLを利用する場合の説明をします。
(PCLを使うには必ずこれでなくてはならないというわけでなく、他の何かで代替してもよいです。)
- 統合開発環境
- Microsoft Visual Studio 2010 (VS2010)
- とっても雑に言えば、コードを書いて実行するためのエディタです。
- Express系(無料版)は動かないコードがあったりするので、あまりよくないです。
- VS2008以降であれば問題ない?
- 学生であれば Microsoft DreamSpark という Visual Studio が無料で使えるサービスがあるので、そちらを利用してはいかがでしょうか
- Microsoft Visual Studio 2010 (VS2010)
PCLを触る上で知っておきたい名前
PCLではいろいろな固有名詞が出てきます。
ライブラリ編
PCLはいろいろなライブラリを利用して処理しています。以下に列挙します。
上4つはPCLを使う場合は必ず用意しなくてはいけないライブラリです。
- Boost (PCL必須ライブラリ)
- FLANN (PCL必須ライブラリ)
- Fast Library for Approximate Nearest Neighbors の略
- 近傍点探索のライブラリ
- PCLの中では例えばKdTree(kd木)などで使われている
- VTK (PCL必須ライブラリ)
- Visualization Toolkit の略
- 可視化のためのライブラリ
- PCLではビューワ等で使われている
- Qhull
- 凸包 (Convex Hull、イメージ検索してみてください) を計算するライブラリ
- QuickHull [Barber et al, 1996] という計算方法が実装されている
- PCLでは凸包や凹包(Concave Hull)の計算に使われている
- OpenNI
- Microsoft Kinect for XBOX や ASUS Xtion 等のNUI(Natural User Interface)デバイスを叩くためのライブラリ
- 開発元がAppleに買収されたため、提供中止
- PCLのダウンロードサイトに古いものが置いてあるので、それを使う
- OpenNI と OpenNI2 の2種類があるが、PCLではOpenNIにしかまだ対応していないよう
- OpenMP
- 並列計算のライブラリ
- とっても雑に言えば、計算時間を短縮させられる
- PCLではOpenMPを利用したモジュールと利用していないモジュールの両方が用意されている場合が多い
- 例えば、法線方向推定モジュール pcl::NormalEstimation と、それのOpenMP対応版 pcl::NormalEstimationOMP 等
- Visual Studio の場合、Express (無料版) だとそのままではOpenMPが使えない
次回予告
次回はPCLを使えるようにするまで(PCLのインストール)を紹介したいと思います。