メインコンテンツ

pcshow

3 次元点群のプロット

説明

pcshow(ptCloud) は、点群オブジェクトに保存されている位置と色を使用して点を表示します。

大きな点群 (100 万個超の点) を可視化するには、pcviewer オブジェクトを使用します。

pcshow(xyzPoints) は、xyzPoints 行列によって指定された点を表示します。

pcshow(xyzPoints,color) は、color によって指定された色を使用して xyzPoints 行列に含まれる点を表示します。

pcshow(xyzPoints,colorMap) は、colorMap によって指定された色を使用して xyzPoints 行列に含まれる点を表示します。

pcshow(filename) は、filename で指定されたファイルに保存された点群を表示します。

pcshow(___,Name=Value) は、前の構文にある入力引数の任意の組み合わせに加えて、名前と値の引数を 1 つ以上使用してオプションを指定します。たとえば、ViewPlane="XY" は、点群を可視化する平面を xy 平面として設定します。

ax = pcshow(___) はプロットの座標軸を返します。

すべて折りたたむ

600 行 600 列の面で構成される球体を生成します。

numFaces = 600;
[x,y,z] = sphere(numFaces);

既定のカラーマップを使用して球体をプロットします。

figure;
pcshow([x(:) y(:) z(:)])
title("Sphere with Default Color Map")
xlabel("X")
ylabel("Y")
zlabel("Z")

Figure contains an axes object. The axes object with title Sphere with Default Color Map, xlabel X, ylabel Y contains an object of type scatter.

テクスチャ マッピングに使用するイメージを読み込み、表示します。

I = im2double(imread("visionteam1.jpg"));
imshow(I)

Figure contains an axes object. The hidden axes object contains an object of type image.

座標をマッピングする準備として、イメージのサイズを変更して反転します。

J = flipud(imresize(I,size(x)));

色のテクスチャとしてイメージを使用して球をプロットします。

pcshow([x(:) y(:) z(:)],reshape(J,[],3))
title("Sphere with Color Texture")
xlabel("X")
ylabel("Y")
zlabel("Z")

Figure contains an axes object. The axes object with title Sphere with Color Texture, xlabel X, ylabel Y contains an object of type scatter.

強度データを含むオーガナイズド LiDAR 点群を読み込みます。

ld = load("drivingLidarPoints.mat");

点群をプロットし、Figure にラベルを付けます。既定では、強度は jet カラーマップにマッピングされます。

figure
pcshow(ld.ptCloud, ColorSource="Intensity")
title("Lidar Point Cloud with Intensity")
xlabel("X")
ylabel("Y")
zlabel("Z")
colorbar(Color=[1 1 1])
colormap("winter")

Figure contains an axes object. The axes object with title Lidar Point Cloud with Intensity, xlabel X, ylabel Y contains an object of type scatter.

入力引数

すべて折りたたむ

点群。pointCloud オブジェクトとして指定します。オブジェクトには、点群をレンダリングする位置、強度、および RGB カラーが含まれます。

点群のファイル名。文字ベクトルまたは string スカラーとして指定します。ファイルは、pcread でサポートされているタイプでなければなりません。関数 pcshowpcread を呼び出してファイルから点群を読み取りますが、データを MATLAB® ワークスペースに保存しません。

点群の x 位置、y 位置、および z 位置。M 行 3 列の数値行列または M×N×3 の数値配列として指定します。引数 xyzPoints には、M または M×N 個の点が [x,y,z] の形式で含まれます。z 値は、一般的に深度または高度に対応し、各点の色を決定します。入力色を指定しない場合、関数は z の各値を現在のカラーマップの色にマッピングします。

点群内の点の色。RGB 3 成分、M 行 3 列の行列、M×N×3 の配列、色の省略名、色の完全名、色名の配列、または色名の cell 配列として指定します。カラー値の詳細については、カラー値の表を参照してください。

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

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

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

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

色の省略名または完全名

"r"

"red"

1 行 3 列のベクトル (RGB 3 成分)

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

点ごとに色を指定

文字ベクトルの string 配列

["red","yellow","blue"]

各行が RGB 3 成分である M 行 3 列の行列

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, and b respectively.

点群のカラーマップ。M 行 1 列のベクトルまたは MN 列の行列として指定します。

点の入力色の選択色の有効値
xyzPoints点ごとに異なる色を適用ベクトルまたは MN 列の行列。行列には、現在の colormap の色へ線形にマッピングされた値が含まれていなければなりません。

名前と値の引数

すべて折りたたむ

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

例: ViewPlane="XY" は、点群を可視化するための x-y 軸に平面を設定します。

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

マーカーの直径。正のスカラーとして指定します。値は点のマーカーのおおよその直径を指定します。MATLAB グラフィックスで定義されている単位は点です。マーカー サイズが 6 より大きいと、レンダリング パフォーマンスが低下する可能性があります。

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

背景色。RGB 3 成分または 16 進数カラー コードとして指定するか、色の完全名または省略名を文字ベクトルとして指定します。

データ型: cell | char | uint8 | uint16 | int16 | double | single

縦軸。"X""Y"、または "Z" として指定します。この値は、点群の選択された軸を垂直方向に設定します。

縦軸の方向。"Up" または "Down" として指定します。

3 次元ビューのカメラ射影。次のいずれかの値として指定します。

  • "perspective" — 表示するボリュームをピラミッド (底面と平行に頂点が切り取られたピラミッド) の錐台として投影します。カメラから離れているオブジェクトは小さく表示されます。短縮法によって距離が表されるため、3 次元オブジェクトの奥行きを認識できるようになります。この投影タイプは、実際のオブジェクトの現実的なビューを表示する場合に役立ちます。透視投影では、オブジェクトの相対的な寸法は保持されません。代わりに、遠くのライン セグメントが、同じ長さの近くのライン セグメントよりも小さく表示されます。データ内で平行な線が、シーン内で平行に表示されない場合があります。

  • "orthographic" — この投影タイプは、ビューアーから特定の点までの距離に関して、グラフィックス オブジェクトの正確な相対寸法を維持します。カメラからの相対距離は、オブジェクトのサイズに影響しません。データ内で平行な線は、画面上で平行に表示されます。この投影タイプは、オブジェクトの実際のサイズとオブジェクトの間の角度を維持することが重要な場合に役立ちます。

点群を可視化する平面。"auto""XY""YX""XZ""ZX""YZ"、または "ZY" として指定します。引数 ViewPlane は、カメラからの視線を、選択した平面の中央に配置し、プロットの中心に向かうように設定します。

カラーマップの点群プロパティ。"auto""X""Y""Z""Intensity""Color""Row""Column" として指定します。関数 pcshow は、ColorSource の値を使用して、点群をレンダリングするときにカラーマップを割り当てます。値には次のプロパティを使用します。

  • "X" — 入力点群の Location プロパティの x 座標。

  • "Y" — 入力点群の Location プロパティの y 座標。

  • "Z" — 入力点群の Location プロパティの z 座標。

  • "Intensity" — 入力点群の Intensity プロパティ。

  • "Color" — 入力点群の Color プロパティ。

  • "Row" — オーガナイズド点群の行の値。

  • "Column" — オーガナイズド点群の列の値。

ColorSource"auto" に設定すると、入力点群オブジェクトで使用可能なプロパティ値に応じて、関数が次のようにカラーマップを設定します。

利用可能な点群プロパティ色のソース
Location のみ z 値を現在のカラーマップのカラー値にマッピングします。
Location および Intensity z 値を現在のカラーマップのカラー値にマッピングします。
Location および Color カラー値を現在のカラーマップにマッピングします。
LocationIntensity および Color カラー値を現在のカラーマップにマッピングします。

座標軸の可視性の状態。"on" または "off" として指定するか、数値または logical の 0 (false) または 1 (true) として指定します。"on" の値は true と等価であり、"off"false と等価です。したがって、このプロパティの値を logical 値として使用できます。この値は、matlab.lang.OnOffSwitchState 型の on/off の logical 値として格納されます。

  • "on" — 座標軸とその子を表示します。

  • "off" — 座標軸を削除せずに非表示にします。ただし、非表示の axes オブジェクトのプロパティにアクセスすることはできます。(ラインなどの子オブジェクトは可視のままになります。)

可視化を表示する座標軸。Axes オブジェクトとして指定します。Axes オブジェクトを作成するには、関数 axes を使用します。新しい Figure に可視化を表示するには、Parent を未指定のままにします。

出力引数

すべて折りたたむ

プロットの座標軸。axes グラフィックス オブジェクトとして返されます。NaN または Inf として表される点は含まれません。

点群ビューアーの既定の回転中心を、軸中心または点として設定できます。Computer Vision Toolbox の基本設定で既定の動作を設定します。

点群を回転すると、回転の中心に回転軸 (赤、青、緑の線で表現) が表示されます。

詳細

すべて折りたたむ

バージョン履歴

R2015b で導入

すべて展開する