最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

pcdownsample

3 次元点群のダウンサンプリング

説明

ptCloudOut = pcdownsample(ptCloudIn,'random',percentage) は、無作為抽出と非復元抽出でダウンサンプリングされた点群を返します。percentage 入力は、出力に返される入力の一部を指定します。

ptCloudOut = pcdownsample(ptCloudIn,'gridAverage',gridStep) は、ボックス グリッド フィルターを使用してダウンサンプリングされた点群を返します。gridStep 入力では、3 次元ボックスのサイズを指定します。

ptCloudOut = pcdownsample(ptCloudIn,'nonuniformGridSample',maxNumPoints) は不等間隔ボックス グリッド フィルターを使用してダウンサンプリングされた点群を返します。グリッド ボックスの最大点数 maxNumPoints6 以上に設定しなければなりません。

すべて折りたたむ

点群を読み取ります。

ptCloud = pcread('teapot.ply');

3 次元の解像度を (0.1 x 0.1 x 0.1) に設定します。

gridStep = 0.1;
ptCloudA = pcdownsample(ptCloud,'gridAverage',gridStep);

ダウンサンプリング後のデータを可視化します。

figure;
pcshow(ptCloudA);

点群を、固定ステップ サイズを使用してダウンサンプリングしたデータと比較します。

stepSize = floor(ptCloud.Count/ptCloudA.Count);
indices = 1:stepSize:ptCloud.Count;
ptCloudB = select(ptCloud, indices);

figure;
pcshow(ptCloudB);

同じ座標を共有しているすべての点を含む点群を作成します。

ptCloud = pointCloud(ones(100,3));

3 次元の分解能を小さい値に設定します。

gridStep = 0.01;

出力には 1 つの一意の点のみ含まれます。

ptCloudOut = pcdownsample(ptCloud,'gridAverage',gridStep)
ptCloudOut = 
  pointCloud with properties:

     Location: [1 1 1]
        Color: [0x3 uint8]
       Normal: [0x3 double]
    Intensity: [0x1 double]
        Count: 1
      XLimits: [1 1]
      YLimits: [1 1]
      ZLimits: [1 1]

入力引数

すべて折りたたむ

点群。pointCloud オブジェクトとして指定します。

ランダム ダウンサンプリング法。文字ベクトル 'random' として指定します。この方法は、特に点群のレジストレーション前に適用される場合は 'gridAverage' ダウンサンプリング法よりも効率的です。

レジストレーション用に関数 pcregistericp で使用する Metric に従って、'random''gridAverage'、または 'nonuniformGridSample' 入力を使用して点群をダウンサンプリングします。

Metric固定点群のダウンサンプリング方法移動点群のダウンサンプリング方法
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

入力の割合。[0, 1] の範囲内の正のスカラーとして指定します。percentage 入力では、関数から返される入力の一部を指定します。

グリッド平均ダウンサンプリング法。文字ベクトル 'gridAverage' として指定します。同じボックス内の点が出力の 1 点にマージされます。これに応じてそれらの色と法線プロパティが平均化されます。この方法では、'random' ダウンサンプリング法よりも点群の形状が効果的に保持されます。

関数は、点群全体の軸に沿った境界ボックスを計算します。境界ボックスは、gridStep で指定されたサイズのグリッド ボックスに分割されます。各グリッド ボックス内の点は、それらの位置、色、および法線を平均してマージされます。

レジストレーション用に関数 pcregistericp で使用する Metric に従って、'random''gridAverage'、または 'nonuniformGridSample' 入力を使用して点群をダウンサンプリングします。

Metric移動点群のダウンサンプリング方法固定点群のダウンサンプリング方法
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

グリッド フィルターの 3 次元ボックスのサイズ。数値として指定します。大きい細かなグリッドを構成する十分なリソースがない場合は gridStep のサイズを増やします。

データ型: single | double

不等間隔グリッド サンプリング法。文字ベクトル 'nonuniformGridSample' として指定します。この方法を最大限に活用するには、'pointToPlane' メトリクスを使用するときに、点群レジストレーション用の関数 pcregistericp に前処理手順として適用します。'nonuniformGridSample' アルゴリズムを使用する場合、ダウンサンプリングの前に元のデータで法線が計算されます。ダウンサンプリングされた出力では、より正確な法線が維持されます。

レジストレーション用に関数 pcregistericp で使用する Metric に従って、'random''gridAverage'、または 'nonuniformGridSample' 入力を使用して点群をダウンサンプリングします。

Metric固定点群のダウンサンプリング方法移動点群のダウンサンプリング方法
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

グリッド ボックスの最大点数。6 よりも大きい整数として指定します。この方法では、各ボックスから 1 点をランダムに選択します。入力点群で法線が指定されていない場合、ptCloudOut 出力に法線プロパティが自動的に入力されます。

出力引数

すべて折りたたむ

ダウンサンプリングされた点群。pointCloud オブジェクトとして返されます。

参照

[1] Pomerleau, F., F. Colas, R. Siegwart, and S. Magnenat. “Comparing ICP variants on real-world data sets.” Autonomous Robots. Vol. 34, Issue 3, April 2013, pp. 133–148.

拡張機能

R2015a で導入