このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
pcsegdist
ユークリッド距離に基づいて点群をクラスターにセグメント化する
構文
説明
は、異なるクラスターの点の間の最小ユークリッド距離 labels
= pcsegdist(ptCloud
,minDistance
)minDistance
を使用して点群をクラスターにセグメント化します。pcsegdist
は点群の各点に整数クラスター ラベルを割り当て、すべての点の labels
を返します。
[
はクラスター数も返します。labels
,numClusters
] = pcsegdist(ptCloud
,minDistance
)
[___] = pcsegdist(___,
は、名前と値の引数を使用してプロパティを設定します。たとえば、Name=Value
)labels = pcsegdist(
は、各クラスターの点の最小数と最大数を ptCloud
,minDistance
,NumClusterPoints=[1,Inf])[1,Inf]
に設定します。
例
ユークリッド距離に基づいた点群のクラスター化
2 つの同心球を作成して、それらを組み合わせます。
[X,Y,Z] = sphere(100);
loc1 = [X(:),Y(:),Z(:)];
loc2 = 2*loc1;
ptCloud = pointCloud([loc1;loc2]);
pcshow(ptCloud)
title('Point Cloud')
クラスター間の最小ユークリッド距離を設定します。
minDistance = 0.5;
点群をセグメント化します。
[labels,numClusters] = pcsegdist(ptCloud,minDistance);
ラベル付けした結果をプロットします。点は 2 つのクラスターにグループ化されます。
pcshow(ptCloud.Location,labels)
colormap(hsv(numClusters))
title('Point Cloud Clusters')
ユークリッド距離に基づいた LiDAR 点群のクラスター化
オーガナイズド LiDAR 点群をワークスペースに読み込みます。
ld = load('drivingLidarPoints.mat');
グランド プレーンを検出します。距離はメートル単位で測定されます。
maxDistance = 0.9; referenceVector = [0 0 1]; [~,inliers,outliers] = pcfitplane(ld.ptCloud,maxDistance,referenceVector);
グランド プレーンの点を削除します。
ptCloudWithoutGround = select(ld.ptCloud,outliers);
クラスターごとに最低 10 個の点で点群をクラスター化します。
minDistance = 2;
minPoints = 10;
[labels,numClusters] = pcsegdist(ptCloudWithoutGround,minDistance,'NumClusterPoints',minPoints);
ラベル値が 0
の点を削除します。
idxValidPoints = find(labels); labelColorIndex = labels(idxValidPoints); segmentedPtCloud = select(ptCloudWithoutGround,idxValidPoints);
ラベル付けした結果をプロットします。
figure
colormap(hsv(numClusters))
pcshow(segmentedPtCloud.Location,labelColorIndex)
title('Point Cloud Clusters')
入力引数
ptCloud
— 点群
pointCloud
オブジェクト
点群。pointCloud
オブジェクトとして指定します。
minDistance
— 最小ユークリッド距離
正のスカラー
異なる 2 つのクラスターの点間の最小ユークリッド距離。正のスカラーとして指定します。
データ型: single
| double
名前と値の引数
例: ParallelNeighborSearch
=false
は、ParallelNeighborSearch
を false
に設定します。
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
NumClusterPoints
— 各クラスターの点の最小数と最大数
[1,Inf]
(既定値) | 2 要素ベクトル | スカラー
各クラスターの点の最小数と最大数。スカラーまたは [minPoints,maxPoints] の形式の 2 要素ベクトルとして指定します。NumClusterPoints
をスカラーとして指定した場合、クラスター内の点の最大数は無制限になります。クラスターが指定された範囲の外にある場合、関数は labels
を 0
に設定します。
ParallelNeighborSearch
— 点群データをセグメント化するための並列近傍探索
false
(既定値) | true
点群データをセグメント化するための並列近傍探索。true
または false
として指定します。クラスター 1 個あたりの点が 100 個未満で、クラスターが約 50 個以上になる可能性があるときは、このプロパティを true
に設定します。
一部のデータセットでは、並列近傍探索によってセグメンテーション速度が向上します。どれだけ速度が向上するかは、データセットと minDistance
入力の値によって異なります。
出力引数
labels
— クラスター ラベル
M 行 1 列のベクトル | M 行 N 列の行列
クラスター ラベル。次のいずれかとして返されます。
点群
ptCloud
が点の位置をアンオーガナイズドの M 行 3 列の行列として格納している場合、labels
は M 行 1 列のベクトルです。点群
ptCloud
が点の位置をオーガナイズドの M×N×3 の行列として格納している場合、labels
は M 行 N 列の行列です。
点群の各点には、labels
の対応する要素によって指定されたクラスター ラベルがあります。各ラベルの値は 0
から有効な点のクラスター数 numClusters
までの整数です。値 0
は、座標が Inf
または NaN
の点など、無効な点のために予約されています。
データ型: uint32
numClusters
— クラスターの数
正の整数
クラスターの数。正の整数として返されます。クラスターの数は、無効な点のために予約されているラベル値 0
が除外されます。この関数は、ptCloud
オブジェクトの Location
プロパティの値が single
の場合、numClusters
を single
データ型として返します。それ以外の場合、関数は double
データ型として値を返します。
データ型: single
| double
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
生成された CUDA® コードは、[1] と [2] で説明されているアルゴリズムの組み合わせを使用して、点群をクラスターにセグメント化します。生成されたコードからの出力は、MATLAB® シミュレーションの結果とわずかに異なる場合があります。
名前と値の引数
NumClusterPoints
は GPU コード生成でサポートされていません。
参照
[1] Andrade, Guilherme, Gabriel Ramos, Daniel Madeira, Rafael Sachetto, Renato Ferreira, and Leonardo Rocha. “G-DBSCAN: A GPU Accelerated Algorithm for Density-Based Clustering.” Procedia Computer Science 18 (2013): 369–78. https://doi.org/10.1016/j.procs.2013.05.200.
[2] Kalentev, Oleksandr, Abha Rai, Stefan Kemnitz, and Ralf Schneider. “Connected Component Labeling on a 2D Grid Using CUDA.” Journal of Parallel and Distributed Computing 71, no. 4 (April 2011): 615–20. https://doi.org/10.1016/j.jpdc.2010.10.012.
バージョン履歴
R2018a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)