Predator's Vision

画像処理、3D点群処理、DeepLearning等の備忘録

【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を使うには必ずこれでなくてはならないというわけでなく、他の何かで代替してもよいです。)

  • OS
    • Windows 7
      • MacOSXでもPCLを使おうと試してみたのですが、Windowsよりセットアップが難しく挫折しました。。
  • 統合開発環境
    • Microsoft Visual Studio 2010 (VS2010)
      • とっても雑に言えば、コードを書いて実行するためのエディタです。
      • Express系(無料版)は動かないコードがあったりするので、あまりよくないです。
      • VS2008以降であれば問題ない?
      • 学生であれば Microsoft DreamSpark という Visual Studio が無料で使えるサービスがあるので、そちらを利用してはいかがでしょうか

おすすめのPCL関連サイト


自分自身割と一番上のページにはお世話になりました。このブログでは、上記ページにはない突っ込んだ内容(ソースコード例なども含めて)今後書いていきたいと思っています。

PCLを触る上で知っておきたい名前

PCLではいろいろな固有名詞が出てきます。

ライブラリ編

PCLはいろいろなライブラリを利用して処理しています。以下に列挙します。
上4つはPCLを使う場合は必ず用意しなくてはいけないライブラリです。

  • Boost (PCL必須ライブラリ)
    • C/C++標準ライブラリには実装されていないが、よく使われる処理をライブラリにしたもの
    • 例えば、C/C++で「カンマで文字列を分割」したい場合自分で実装しなければならないが、Boostを使えば1行書くだけでよい
  • Eigen (PCL必須ライブラリ)
    • C++線形代数計算のライブラリ
    • つまりベクトルとか行列計算に使う
  • FLANN (PCL必須ライブラリ)
    • Fast Library for Approximate Nearest Neighbors の略
    • 近傍点探索のライブラリ
    • PCLの中では例えばKdTree(kd木)などで使われている
  • VTK (PCL必須ライブラリ)
    • Visualization Toolkit の略
    • 可視化のためのライブラリ
    • PCLではビューワ等で使われている
  • WinPcap
    • ネットワークに流れるパケットを取得するライブラリ
    • PCLでは一部のセンサからポイントクラウドを取得するために必要

ツール

次回予告

次回はPCLを使えるようにするまで(PCLのインストール)を紹介したいと思います。