林です。本記事では、Point Cloudコンソーシアムと関連が非常に深い、無料でオープンソースの「3D点群処理」のための大規模ソフトウェアライブラリである
Point Cloud Library(PCL)の概要について紹介します。
Point Cloud Libraryのサイト
Point Cloud Libraryは、本コンソーシアムと非常に深く関連するソフトウェアであり、3D点群データの処理を行う場合には、Point Cloud Libraryは現状唯一の選択となる場合が多いです。私は以下のブログの記事にて、PCL登場初期の頃から、日本語では当時は情報がほとどん存在しなかったPCLのチュートリアル記事を、先行的に発信してきました。
DERiVEコンピュータビジョンブログのシリーズ記事まとめページ
以下の③回の記事を通して、「
Point Cloud Libraryを用いるとどういった点群処理が使用可能で、それらの搭載された処理を用いるとどういったことが実現できるのか」について紹介し、PCLの全体像についてまずは皆様に掴んで頂こうと思います。
- Point Cloud Library について その①「PCLの登場の経緯」
- Point Cloud Library について その②「PCLの概要」
- Point Cloud Library について その③「PCLでの点群データの取り扱い」
この記事①では「PCLの登場の経緯」と「なぜPCLに注目すべきなのか」をまず説明します。次回の記事②ではPoint Cloud Libraryの概要として「どのような機能が搭載されていて、それらを用いてどういったことが実現できるか」について紹介します。最後の記事③では、「点群とはどういうものか?」という事を押さえたのちに、その(一般的な)点群データ形式をPCLではどのように取り扱かうかの概要を述べる予定です。
■PCL登場の経緯
PCLは、かつて存在していた米国のロボットのベンチャー起業「willow garage」が2011年に開発を始めた、3D点群処理向けの大規模、C++言語によるオープンソースのソフトウェアライブラリです。同じくwillow garageが開発に大きく関わっている「
OpenCV (Open Computer Vision)」の、3D点群版のようなものとも考える事ができます。RGB画像を入力としたコンピュータビジョン向けの大規模オープンソースライブラリにはこれまでOpenCVが存在していましたが、2010年の
Microsoft Kinectの登場と同時期に、点群データを入力とする際の3Dロボットビジョン向けに登場したのがPCLです。
(※ ロボットビジョン: 画像系のデータを入力として実世界を解析する処理一般をコンピュータビジョンと呼びますが、(動く実体のある)ロボット向けのコンピュータビジョン的な処理のことを「ロボットビジョン」と呼び分けることが多いです。)
以前は高価な(精密な計測を行う測量目的の)3Dセンサーしか市場には存在しませんでしたので、3D点群処理のニーズは、建築土木などでの測量や、工場用機械・ロボットでのマシンビジョン、また医療用の3Dスキャン(MRIやCT)などにしか存在しませんでした。もちろん、そういった3Dデータをアプリケーションする需要が高価なスキャナーとセットでしか存在しませんでしたので、そういったセンサーを売る会社にしか、3D点群データを解析したり可視化するソフトウェアを開発できる人材も居ませんでした。当然ながら、計測器が高価ですので、規模の大きい企業で無い限りは数百万以上もする3D計測器は購入ができないので、そもそも需要は限られていました。
一方、自動車の安全運転向けに、「ステレオカメラ」で撮影した前方デプス映像から、歩行者や障害物をビジョン技術により検知する製品は存在します。ただ、ステレオカメラで得られる距離画像はノイズや欠損も多く正確性に欠くので、高価な3D計測器のような綺麗な3D点群は得られません。(参考になる記事:
コンピュータビジョンのセカイ 第21回:前方衝突防止システム – 「平行等位ステレオ」による3次元形状復元)
■Kinect登場とPoint Cloud Library
それが2010年のMicrosoft Kinect発売以降、安価なデプスセンサーで(動画による)3D点群撮影が、手軽に実現できるようになりました。これに伴い、PCLのような**3D点群処理をまとめたオープンソースライブラリ**の必要性も出てきました。以前から高価な3D測量の業界にも、商用の点群処理ライブラリやSDK類は存在していたものの、(今風の)無料でかつオープンソースである点群処理ライブラリの登場は嘱望されていました。また、ロボット業界としても、これまでのステレオカメラやレーザー測量ベースのものがKinectなどの安価なデプスセンサーに差し代わっていくので、ロボット向けの3Dビジョン処理がまとまっていて、かつKinectなどと簡単に接続できるライブラリを用意することで、ロボットの研究開発を(便利なライブラリを用いて)より加速度を上げて発展させたいモチベーションがありました。そこで、登場したのがPoint Cloud Libraryです。
PCLは、お手伝いロボットの米ベンチャー企業「Willow Garage」社が先導して開発していたのもあり、ロボット系の研究コミュニティの最新成果が非常に数多く収録される傾向のあるライブラリです。特にロボット系のエンジニアがデプスセンサーを用いてビジョン系の研究開発をするには、PCL以外にライブラリや開発環境の選択肢(競合)が少なく、ほとんどのロボット研究者はPCLを使っている状況であるのもこの傾向を加速させています。PCLはトヨタ社やTrimble社(レーザー測量の会社)などが投資していることもあり、自動車系の工場や、建築とプラントでの測量などの目的の処理も、優先的に追加される傾向があります(後述)。
とはいえ、次回②の「PCLの概要」で説明するように、PCLは特定の分野の処理だけが収録されているものではなく、
様々な用途で応用が利く普遍的な点群処理がバランス良く、網羅的に収録されている大規模ライブラリです。そして、Kinect for Windowsで取得できる点群データにも、Point Cloud Libraryの各処理は全て適用できるので、
あなたが点群処理を使いこなせるようになれば、Kinectを用いて点群処理が今からでも始められます。PCLは、コンピュータビジョンに強くないと使いこなせないのもあり、まだまだ研究開発者中心の使用のみで、広く普及しているライブラリではありませんが、今後数年でデプスセンサーのモバイルへの普及に伴って、使用する機会が増えていくことが用意に予想できます。
■まとめ
以上、今回の前編では「PCLの登場の経緯」について紹介しました。点群処理は昔から高価な3D計測器を用いる分野では存在していたのが、Kinectの登場で、みなさんが誰でも行えるようにはなった、でもまだ一般には普及していない、という状況が知って頂けたと思います。(次回の②に続きます)。
林 昌希