Windows Visual studioへのPCLのインストール方法についてはこちらでご紹介しました。
ここからはPCLのチュートリアルに沿ってPCLの機能を学習します。
チュートリアルのサンプルコードはPCLのホームページに用意してあります。
利用方法についてもこちらのページのチュートリアルコードのコピーを参照して下さい。
それぞれの項の説明は基本的にPCLのホームページを機械翻訳したものです。
同様に説明画像も同ホームページのものを引用しています。
フィルタリング機能概要
pcl_filters ライブラリは、3次元点群データフィルタリングアプリケーション用の外れ値およびノイズ除去機構を備えています。
ノイズ除去の例を下図に示します。測定誤差のため、あるデータセットには多数の影点が存在します。これは局所的な点群の3D特徴の推定を複雑にしています。これらの外れ値の一部は、各点の近傍で統計分析を行い、一定の基準を満たさないものを切り捨てることでフィルタリングすることができます。PCLにおける疎な外れ値除去の実装は、入力データセットの点から近傍への距離の分布の計算に基づいています。各点について、その点からすべての隣接点までの距離の平均が計算されます。計算結果の分布が平均と標準偏差を持つガウス分布であると仮定すると、平均距離がグローバル距離の平均と標準偏差で定義される区間の外にあるすべての点を外れ値とみなし、データセットから切り捨てることができます。
Filtering a PointCloud using a PassThrough filter
パススルーフィルターを使用した点群のフィルタリングです。
このチュートリアルでは、指定された次元に沿ったユーザー指定区間の内側にある値や外側にある値を持つ点を削除する方法を学びます。
ソースコードのフォルダはpassthroughになります。
こちらを参考にCMakeを実行しソリューションを作成します。
こちらはPCLのサンプルコードです。
実行させると以下のような出力が得られます。
Cloud before filtering:
1.28125 577.094 197.938
828.125 599.031 491.375
358.688 917.438 842.563
764.5 178.281 879.531
727.531 525.844 311.281
Cloud after filtering:
補足
この記事は、Visual Studio 2022と当時のPCL・vcpkg環境で実際に動作確認した内容を紹介しています。
ライブラリや開発ツールのバージョンによっては、インストール方法やビルド設定が異なる場合があります。
実際に動作したコードは、記録としてそのまま掲載しています。
技術開発・新規事業に関するご相談
技術開発や新規事業の企画・事業化に関する活動は、chiegra.jp で紹介しています。
技術と事業の両面から、新規事業の構想や技術の事業化について助言・支援を行っています。