CC_11 CloudCompareのSubsample機能(点群のサンプリング)
2025.04.18
- 3Dデータ
- ライブラリ
- CloudCompare
Subsampleは、点群をサブサンプリングする(点の数を削減する)機能です。点間距離や点数を指定、オクトツリー構造を利用するなどさまざまな削減手法があります。
3Dデータ点群は、点数が多いほど詳細な形状を再現できますが、比例してファイルサイズが大きくなり、そのままでは解析処理に膨大な時間を必要とする場合があります。できるだけ形状の特徴を保ったまま、サイズを小さくするために用いられるのが今回のサブサンプル機能です。
テスト用のデータとして、Level機能で軸を揃え、凹凸を可視化した状態の路面データを使用します(CC_001-leveled.ply)。このページ下部のリンクからダウンロードできます。CloudCompareを起動後、CC_001-leveled.ply を3Dビュー上にドラッグアンドドロップしてください。(Level機能での軸補正、平面設定+凹凸可視化の手順は「第6回 CloudCompareのCrossSection機能その1」でご紹介しています)
■Subsampleの使い方
DBツリーでCC_001-leveled.ply データを選択し、メインツールバーの「Subsample」ボタン(点アイコン)をクリック、またはメニューバーのEdit→Subsampleをクリックします。
ツールバーまたはメニュー項目から選択(左図) Subsample設定画面(右図)
3Dビュー上に、Subsample設定画面が表示されます。上段のSampling parametersから、サブサンプリング方法を選択します。
Space…点間距離に応じて点群を削減
Random…点群をランダムに削減
Octree…オクトツリー構造に従って削減
サブサンプル実行後は、新たな点群(元のデータ名-.subsampled)としてDBツリーに追加されます。元の点群は自動的に非表示になっています。
いずれのサンプリング方法を用いた場合も元の点群の中から残存する点が選択され、新しい点が作成されたり点の座標値が変動することはありません。
■Space 点間距離に応じた削減
methodで「Space」を選択後、点間の最小距離を指定します。min.space between points(点間最小距離)に直接数値を入力するほか、スライダー(large-small)でも調整できます。下図は、最小距離を20㎜に指定してサブサンプルを実行した例です。
点間距離20mm指定でサブサンプル実行
■Random 点群をランダムに削減
methodで「Random」を選択後、削減後の点数を指定します。remaining pointsに直接数値を入力するほか、スライダー(none-all)でも調整できます。下図は、点数を10000に指定してサブサンプルを実行した例です。残存する点はランダムに選択されるので、実行の都度異なります。
点数を10000に指定してサブサンプル実行
■Octree オクトツリー構造に従った削減
Octree(オクトツリー)は、点群処理を高速化するために用いられる空間分割のアルゴリズムです。最小のLevel1は8等分、levelが1上がるごとに分割された空間それぞれがさらに8等分されていきます。Levelに比例して分割数は大きく、1個あたりの空間サイズは小さくなります。分割の過程で点を含む空間のみが残り、より点群の形状に近しくなっていくイメージです。(オクトツリー構造については「第9回 CloudCompareのLabelConnectedComponents機能」でご紹介しています)
Space指定のサブサンプル実行時にもオクトツリーアルゴリズムが使用されており、DBツリーにすでにオクトツリー構造が追加されています。DBツリーでCC_001-leveled先頭の三角マークをクリック→Octreeにチェックを入れると、ビュー上にキューブの形状でオクトツリー構造が可視化されます。PropertiesのOctree→Display levelを増加させると、空間がより細かく等分されていくのが見て取れます。
オクトツリー構造の可視化の例 level:5
オクトツリー構造を使用してのサブサンプルをテストします。DBツリーでCC_001-leveledを選択後、Subsampleをクリック→methodで「Octree」を選択後、subdivision level(細分化レベル=Octreeレベル)を指定します。subdivision levelに直接数値を入力するほか、スライダー(min-max)でも調整できます。下図はレベル:5でサブサンプルを実行した例です。オクトツリー構造1つに対し、残存点が1つになるよう点が削減されています。
オクトツリー構造の可視化の例 level:5
■スカラー値を使った削減
点群の保持している距離情報、密度、曲率等のスカラー値に従って、Subsampleでの点数削減度合いを調整することが可能です。CC_001-leveledには、設定平面からの距離情報がスカラー値として保持されています。この値を使って、距離に応じた削減をテストしてみます。
CC_001-leveledのスカラー値:設定平面からの距離情報を保持
DBツリーでCC_001-leveledを選択後、Subsampleをクリック→methodで「Space」を選択後、Use active SF にチェックを入れます。SF(スカラーフィールド)の値に応じて、削減に用いる点間距離を設定します。SF Value には、現在のスカラー値の最小(min)、最大(max)の値がすでに表示されています。下図例は、最小=路面のもっとも凹んだ部分は点を細かく残すよう点間距離を1mmにし、最大=路面の平らな部分はおおまかに残すよう点間距離を30mmに設定しています。最小~最大間は、削減距離が1~30mmの間のグラデーション状態になります。
スカラー値最小近辺は細かく、最大は大まかに点を残すよう設定
サブサンプル実行後の点群 凹み部分は点が密、平らな部分は粗になっている
■関連動画
CloudCompareのSubsample機能
サンプルデータのダウンロード
・CC_001-leveled…Level機能で軸を揃え、凹凸を可視化した状態の路面データ(3Dデータ 拡張子 .ply )をzip形式で圧縮したもの ファイルサイズ約4.3MB