Main Content

extractFPFHFeatures

点群から高速点特徴ヒストグラム (FPFH) 記述子を抽出

R2020b 以降

説明

features = extractFPFHFeatures(ptCloudIn) は、入力点群オブジェクトに含まれる有効な各点の FPFH 記述子を抽出します。この関数は記述子を N 行 33 列の行列として返します。ここで、N は入力点群に含まれる有効な点の数です。

features = extractFPFHFeatures(ptCloudIn,indices) は、指定された線形インデックス indices にある有効な点の FPFH 記述子を抽出します。

features = extractFPFHFeatures(ptCloudIn,row,column) は、入力オーガナイズド点群 ptCloudIn の指定された 2 次元インデックスにある有効な点の FPFH 記述子を抽出します。点の行と列のインデックスをそれぞれ row および column として指定します。

[___,validIndices] = extractFPFHFeatures(___) は、FPFH 記述子が抽出された有効な点の点群における線形インデックスを返します。

[___] = extractFPFHFeatures(___,Name,Value) は、前述の構文の任意の引数の組み合わせに加え、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。

記述子は、KNN 探索法、半径探索法、またはその両方の組み合わせを使用して抽出できます。関数 extractFPFHFeatures は、既定では KNN 探索法を使用して記述子を抽出します。抽出の方法はユーザーが名前と値のペアの引数を使用して選択できます。たとえば、'NumNeighbors',8 は、記述子を抽出する探索法として k 最近傍法 (KNN) を選択し、KNN 探索法で近傍と見なす最大数を 8 に設定します。

すべて折りたたむ

点群データをワークスペースに読み込みます。

ptObj = pcread('teapot.ply');

点群をダウンサンプリングします。

ptCloudIn = pcdownsample(ptObj,'gridAverage',0.05);

指定したキー インデックスにある点の FPFH 記述子を抽出します。

keyInds = [6565 10000];
features = extractFPFHFeatures(ptCloudIn,keyInds);

点群に主要な点を表示します。

ptKeyObj = pointCloud(ptCloudIn.Location(keyInds,:),'Color',[1 0 0;0 0 1]);
figure
pcshow(ptObj)
title('Selected Indices on Point Cloud')
hold on
pcshow(ptKeyObj,'MarkerSize',1000)
hold off

Figure contains an axes object. The axes object with title Selected Indices on Point Cloud contains 2 objects of type scatter.

主要な点の抽出された FPFH 記述子を表示します。

figure
ax1 = subplot(2,1,1);
bar(features(1,:),'FaceColor',[1 0 0])
title('FPFH Descriptors of Selected Indices')
ax2 = subplot(2,1,2);
bar(features(2,:),'FaceColor',[0 0 1])
linkaxes([ax1 ax2],'xy')

Figure contains 2 axes objects. Axes object 1 with title FPFH Descriptors of Selected Indices contains an object of type bar. Axes object 2 contains an object of type bar.

入力引数

すべて折りたたむ

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

選択された点の線形インデックス。正の整数のベクトルとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

オーガナイズド点群に含まれる選択された点の行インデックス。正の整数のベクトルとして指定します。

rowcolumn のベクトルは同じ長さでなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

オーガナイズド点群に含まれる選択された点の列インデックス。正の整数のベクトルとして指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名前と値の引数

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

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name引用符で囲みます。

例: 'NumNeighbors',8 は、k 最近傍法 (KNN) 探索法で近傍と見なす最大数を 8 に設定します。

KNN 探索法の近傍の数。'NumNeighbors' と正の整数からなるコンマ区切りのペアとして指定します。

KNN 探索法では、点群の点とそれに隣接する点の間の距離を計算し、それらを昇順に並べ替えます。その距離が近い点が近傍と見なされます。近傍と見なす数の上限を 'NumNeighbors' で設定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

半径探索法で対象とする半径。'Radius' と正の実数値のスカラーからなるコンマ区切りのペアとして指定します。

半径探索法では、点を中心に特定の半径を設定し、その与えられた半径の内側にあるすべての隣接する点を近傍として選択します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

メモ

名前と値のペアの引数 'NumNeighbors''Radius' の両方の値を指定した場合、関数 extractFPFHFeatures は KNN 探索法を実行してから、そのうちの与えられた半径の内側にあるものだけを選択します。

'NumNeighbors''Radius' に大きい値を指定すると、メモリ フットプリントと計算時間が増えます。

出力引数

すべて折りたたむ

FPFH 記述子。N 行 33 列の正の実数値の行列として返されます。N は関数によって FPFH 記述子が抽出された有効な点の数です。点群に含まれる有効な点の FPFH 記述子が各列に格納されます。抽出された点のインデックスを追加で返すには、validIndices 出力引数を使用します。

データ型: double

有効な点の線形インデックス。正の整数のベクトルとして指定します。このベクトルには、関数で特徴が抽出された点のみについて、それらの点のインデックスが格納されます。

データ型: double

参照

[1] Rusu, Radu Bogdan, Nico Blodow, and Michael Beetz. "Fast point feature histograms (FPFH) for 3D registration." In 2009 IEEE International Conference on Robotics and Automation, pp. 3212-3217. IEEE, 2009.

拡張機能

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

バージョン履歴

R2020b で導入

参考

関数

オブジェクト