Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

pcdenoise

3 次元点群からのノイズの除去

説明

ptCloudOut = pcdenoise(ptCloudIn) は、外れ値を削除するフィルター処理された点群を返します。

[ptCloudOut,inlierIndices,outlierIndices] = pcdenoise(ptCloudIn) は、インライアおよび外れ値として指定される点の線形インデックスを追加で返します。

[ptCloudOut,___] = pcdenoise(___Name=Value) は、前の構文にある引数の任意の組み合わせに加えて、名前と値の引数を指定します。たとえば、Threshold=1.0 は外れ値のしきい値を 1.0 に設定します。

すべて折りたたむ

平面の点群を作成します。

gv = 0:0.01:1;
[X,Y] = meshgrid(gv,gv);
ptCloud = pointCloud([X(:),Y(:),0.5*ones(numel(X),1)]);

figure
pcshow(ptCloud);
title('Original Data');

Figure contains an axes object. The axes object with title Original Data contains an object of type scatter.

一様分布するランダムなノイズを追加します。

noise = rand(500, 3);
ptCloudA = pointCloud([ptCloud.Location; noise]);

figure
pcshow(ptCloudA);
title('Noisy Data');

Figure contains an axes object. The axes object with title Noisy Data contains an object of type scatter.

外れ値を削除します。

ptCloudB = pcdenoise(ptCloudA);

figure;
pcshow(ptCloudB);
title('Denoised Data');

Figure contains an axes object. The axes object with title Denoised Data contains an object of type scatter.

保存された MAT ファイルからオーガナイズド点群を読み込みます。

ld = load('drivingLidarPoints.mat');
orgPtCloud = ld.ptCloud;

点群からノイズを除去します。

orgPtCloudOut = pcdenoise(orgPtCloud,PreserveStructure=true);

入力引数

すべて折りたたむ

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: Threshold=1.0 はしきい値を 1.0 に設定します。

最近傍の点の数。'NumNeighbors' と正の整数 (ピクセル単位) で構成されるコンマ区切りのペアとして指定します。この値を使用して、すべての点の両隣との平均距離の平均値を推定します。この値を減らすと、フィルターはノイズの影響を受けやすくなります。この値を増やすと、計算数が増えます。

データ型: single | double

外れ値のしきい値。'Threshold' とスカラーとで構成されるコンマ区切りのペアとして指定します。既定の設定では、しきい値はすべての点の両隣との平均距離の平均からの 1 標準偏差です。1 つの点は、その k 最近傍との平均距離が指定されたしきい値を超える場合、その点は外れ値と見なされます。

データ型: single | double

点群のオーガナイズド構造を、M×N×3 の位置行列として保持。true または false として指定します。次の表は、PreserveStructure の値に応じた点群の構造を示しています。

PreserveStructure関数が返すもの
true

ノイズ除去されたオーガナイズド点群。

点群の構造を説明するLocationプロパティには、M×N×3 の行列が格納されます。

ノイズ除去された点群内で選択されていない点は NaN で埋められ、対応する色は [0 0 0] に設定されます。

オーガナイズド点群を返すには、入力がオーガナイズド点群でなければなりません。

false

ノイズ除去されたアンオーガナイズド点群。

点群の構造を説明するLocationプロパティには、M 行 3 列の行列が格納されます。

出力引数

すべて折りたたむ

フィルター処理された点群。pointCloud オブジェクトとして返されます。

インライア点の線形インデックス。1 行 N 列のベクトルとして返されます。

データ型: uint32

外れ値点の線形インデックス。1 行 N 列のベクトルとして返されます。

データ型: uint32

参照

[1] Rusu, R. B., Z. C. Marton, N. Blodow, M. Dolha, and M. Beetz. “Towards 3D Point Cloud Based Object Maps for Household Environments”. Robotics and Autonomous Systems Journal. 2008.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2015a で導入