Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

pointCloud

3 次元点群を格納するオブジェクト

説明

pointCloud オブジェクトは、3 次元座標系の一連の点から点群データを作成します。点は通常、サンプル表面または環境の幾何学的座標 x、y、および z を表します。各点を RGB カラーなどの付加的な情報とともに表すこともできます。点群データはプロパティにリストされているプロパティをもつオブジェクトとして格納されます。オブジェクト関数を使用して、目的の点を点群データから取得、選択、および削除します。

作成

説明

ptCloud = pointCloud(xyzPoints) は、xyzPoints によって指定された座標をもつ点群オブジェクトを返します。

ptCloud = pointCloud(___,Name=Value) は、前の構文に加えて、名前と値の引数を 1 つ以上使用してオプションを設定します。たとえば、Color=[1 0 0] は、点群の色を赤に設定します。

入力引数

すべて展開する

3 次元座標点。M 行 3 列の点のリストまたは M x N x 3 のオーガナイズド点群の配列として指定します。3 次元座標点は、3 次元座標空間の点の位置 x、y、および z を指定します。オーガナイズド点群の最初の 2 つの次元は、RGBD や LiDAR などのセンサーからのスキャン順序に対応します。この引数によって Location プロパティが設定されます。

データ型: single | double

名前と値の引数

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

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

例: Color=[1 0 0] は、点群の色を赤に設定します。

点群の色。カラー文字列、1 行 3 列のベクトル、M 行 3 列の行列、M×N×3 の行列のいずれかからなる RGB 値として指定します。M×N は、点群の次元を指定します。各エントリによって点群データの点の RGB カラーが指定されます。そのため、すべての点に同じ色を指定したり、点ごとに異なる色を指定したりできます。

  • single データ型または double データ型の場合、Color の RGB 値は [0, 1] の範囲で指定しなければなりません。

  • uint8 データ型の場合、Color の RGB 値は [0, 255] の範囲で指定しなければなりません。

  • uint16 データ型の場合、Color の RGB 値は [0, 65535] の範囲で指定しなければなりません。

  • この関数は、Color の値を M 行 3 列または M×N×3 として格納します。色を string または 1 行 3 列のベクトルとして指定した場合、関数は色を次のいずれかの次元に変換します。

形式
すべての点に 1 つの色を指定

string スカラーまたは文字ベクトル

"r"

"red"

1 行 3 列のベクトル

[255 0 0]1-by-3 grid, with columns labeled r,g,b respectively.

点ごとに色を指定

M 行 3 列の行列 (RGB 値のリスト)

255 0 0
255 0 0
0 255 255
M-by-3 grid, with columns labeled r,g,b respectively.

各点の RGB 値を含むオーガナイズド点群の M×N×3 の行列。ここで、M×N は点群の次元です。

M-by-N-by3 grid, with 3 m-by-n matrices labeled r,g,b respectively.

データ型: uint8 | uint16

表面法線。M 行 3 列または M x N x 3 の配列として指定します。このプロパティを使用して、点群の各点についての法線ベクトルを指定します。表面法線の各エントリによって法線ベクトルの x、y、および z 成分が指定されます。

座標表面法線
M 行 3 列の配列各行に、対応する法線ベクトルが含まれる、M 行 3 列の配列。
M x N x 3 の配列各点の 1 x 1 x 3 の法線ベクトルが含まれる M x N x 3 の配列。

データ型: single | double

各点でのグレースケール強度。M 行 1 列のベクトルまたは M 行 N 列の行列として指定します。関数によって、各強度値が現在のカラーマップのカラー値にマッピングされます。

座標強度
M 行 3 列の配列各行に、対応する強度値が含まれる、M 行 1 列のベクトル。
M x N x 3 の配列各点の強度値が含まれる M 行 N 列の行列。

データ型: single | double | uint8 | uint16

出力引数

すべて展開する

点群。プロパティにリストされているプロパティをもつ pointCloud オブジェクトとして返されます。

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

3 次元座標空間内の点の位置。M 行 3 列または M x N x 3 の配列として指定します。各エントリによって 3 次元座標空間内の点の x 座標、y 座標、および z 座標が指定されます。入力引数 xyzPoints は、このプロパティを設定します。メモリの使用を減らすために、点の位置を single データ型として保存できます。

  • アンオーガナイズド点群の場合、Location は M 行 3 列の配列として指定しなければなりません。ここで、M は点の総数で、配列は各点の x 座標、y 座標、z 座標を示します。

  • オーガナイズド点群の場合、Location は M×N×3 の配列として指定しなければなりません。ここで、M*N は点の総数で、配列は各点の x 座標、y 座標、z 座標を示します。Kinect® や LiDAR センサーなどの射影カメラから取得された点は、オーガナイズド点群として保存されます。オーガナイズド点群は、イメージのような構造に類似した点の 2 次元配列として配置されます。

データ型: single | double

この プロパティ は読み取り専用です。

点群内の点の数。正の整数として格納されます。

この プロパティ は読み取り専用です。

x 軸上の座標の範囲。1 行 2 列のベクトルとして保存されます。

この プロパティ は読み取り専用です。

y 軸上の座標の範囲。1 行 2 列のベクトルとして保存されます。

この プロパティ は読み取り専用です。

z 軸上の座標の範囲。1 行 2 列のベクトルとして保存されます。

オブジェクト関数

findNearestNeighbors点群内の点の最近傍を検出
findNeighborsInRadius点群内の点の半径内にある近傍の検索
findPointsInROI点群の関心領域内の点を検出
findPointsInCylinderFind points within a cylindrical region in a point cloud
removeInvalidPoints点群から無効な点を削除
select点群の点を選択
copyCopy array of point cloud objects

すべて折りたたむ

3 次元座標点をワークスペースに読み取ります。

load("xyzPoints");

入力点座標から点群オブジェクトを作成します。

ptCloud = pointCloud(xyzPoints);

点群オブジェクトのプロパティを調べます。

ptCloud
ptCloud = 
  pointCloud with properties:

     Location: [5184x3 single]
        Count: 5184
      XLimits: [-3 3.4338]
      YLimits: [-2 2]
      ZLimits: [0.0016 3.1437]
        Color: []
       Normal: []
    Intensity: []

pcshowを使用して点群を表示します。

pcshow(ptCloud)

Figure contains an axes object. The axes object contains an object of type scatter.

点群データの色の変更

点群データと同じサイズの RGB カラー配列を作成します。点の色を赤に設定します。

cmatrix = ones(size(ptCloud.Location)).*[1 0 0];

色プロパティを RGB カラー配列に設定した点群オブジェクトを作成します。

ptCloud = pointCloud(xyzPoints,Color=cmatrix);
pcshow(ptCloud)

Figure contains an axes object. The axes object contains an object of type scatter.

点群データへの表面法線の追加

pcnormalsを使用して、点群データに対応する表面法線を計算します。

normals = pcnormals(ptCloud);

入力点座標から点群オブジェクトを作成します。計算された表面法線を点群オブジェクトに追加します。

ptCloud = pointCloud(xyzPoints,Normal=normals);

点群を表示して、表面法線をプロットします。

pcshow(ptCloud)
x = ptCloud.Location(:,1);
y = ptCloud.Location(:,2);
z = ptCloud.Location(:,3);
u = normals(:,1);
v = normals(:,2);
w = normals(:,3);
hold on
quiver3(x,y,z,u,v,w);
hold off

Figure contains an axes object. The axes object contains 2 objects of type scatter, quiver.

ヒント

pointCloud オブジェクトは handle オブジェクトです。点群の個別のコピーを作成する場合には、MATLAB® copy メソッドを使用できます。

ptCloudB = copy(ptCloudA)

点群関数によって変更可能な点群のコピーを 1 つ保持する場合は、入力と出力に同じ点群変数名を使用します。

ptCloud = pcFunction(ptCloud)

拡張機能

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

バージョン履歴

R2015a で導入

すべて展開する