点群からの形状検出
By K.Yoshimi
はじめに
近年、レーザーなどを用いて計測した点群データからCAD形状を作成したり、その形状を使用して解析を行う機会が多くなって参りました。
人工物は、CADのプリミティブを元に作成されている場合が多いので、 人工物を測定して得られた点群には、平面、球面、円柱面、円錐面、トーラス面などのプリミティブな形状を当てはめると便利です。
この記事では、オープンソースのCloudCompareの形状検出機能を使用して、 点群からプリミティブな形状を検出する方法を紹介します。
CloudCompareのインストール
CloudCompareは、3次元の点群データを扱うオープンソースです。
ダウンロードは、CloudCompareのホームページにあるDownloadタブから、ご自身の環境に対応した安定版(Latest stable release)のインストーラーをダウンロードし、インストールします。
点群データの読み込み
インストールが終了したら、CloudCompareを起動します。
起動しましたら、早速、CloudCompareに点群データ読み込みましょう。
📌 ご自身の点群データを読み込むためには、PLY, OBJ, VTKなどのCloudCompareがサポートしているファイル形式に変換しておく必要があります。
ファイルのアイコンから点群データのファイルを指定して読み込みます。
形状の検出
点群データが読み込まれましたら、形状の検出を行います。
CloudCompareでの形状の検出は、PluginsにあるRANSAC Shape Detectionを使用します。
以下の手順で、RANSAC Shape Detectionを開きます。
- DB Treeにおいて、点群データを選択
- Plugins » RANSAC Shape Detectionをクリック
すると、RANSAC Shape Detectionの設定窓が開きますので、必要な設定を行い、OKします。
📌 RANSAC Shape Detectionは、論文 Efficient RANSAC for Point-Cloud Shape Detection の実装をそのまま使用しているとのことです。
📌 最も重要な設定は、Min support points per primitiveです。 これは、入力の点群の密度や検出しようとする形状の大きさに依存します。 他のパラメータについては、論文を参考にする必要があるかもしれません。
処理は高速に行われ、検出された形状がDB Treeに並びます。
例えば、Cylinderだけを有効にして、ツリーを展開して、形状を有効にすれば、検出された円柱を確認することができます。
さらに、下のPropertiesで、各形状のサイズを調整することもできます。
📌 RANSAC Shape Detectionは、ランダムサンプリングに基づく手法ですので、 やり直すと、毎回異なる結果になりますので、ご注意ください。
おわりに
以上のように、CloudCompareのRANSAC Shape Detectionを使用すると、 とても軽快に、点群から形状を抽出ができますので、ぜひお試しください。