メインコンテンツ

readPointCloud

LAS または LAZ ファイルから点群データを読み取り

説明

ptCloud = readPointCloud(lasReader) は、入力 lasFileReader オブジェクトで示される LAS または LAZ ファイルから点群データを読み取り、それを pointCloud オブジェクト ptCloud として返します。

[ptCloud,ptAttributes] = readPointCloud(lasReader) は、LAS または LAZ 入力ファイル内の使用可能なすべての点の属性を含む lidarPointAttributes オブジェクト ptAttributes を追加で返します。 (R2025a 以降)

[___] = readPointCloud(___,Name,Value) は、前述の構文の任意の引数の組み合わせに加え、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、"ROI",[5 10 5 10 5 10] は、関数で点群を読み取る関心領域 (ROI) を設定します。

すべて折りたたむ

この例では、LAS/LAZ ファイルから点群データを読み取って可視化する方法を示します。

LAZ ファイル用の lasFileReader オブジェクトを作成します。その後、関数 readPointCloud を使用して点群データを LAZ ファイルから読み取り、pointCloud オブジェクトを生成します。

LAZ ファイルのデータにアクセスするための lasFileReader オブジェクトを作成します。

filepath = fullfile(toolboxdir("lidar"),"lidardata", ...
    "las","aerialLidarData.laz");
lasReader = lasFileReader(filepath);

関数 readPointCloud を使用して、点群データを LAZ ファイルから読み取ります。

ptCloud = readPointCloud(lasReader);

点群を可視化します。

figure
pcshow(ptCloud.Location)

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

LAZ ファイルの点群データを分類データに基づいて分けて可視化します。

LAZ ファイルのデータにアクセスするための lasFileReader オブジェクトを作成します。

path = fullfile(toolboxdir("lidar"),"lidardata", ...
    "las","aerialLidarData.laz");
lasReader = lasFileReader(path);

関数 readPointCloud を使用して、点群データとそれに関連する点の分類属性を LAZ ファイルから読み取ります。

[ptCloud,pointAttributes] = readPointCloud(lasReader,"Attributes","Classification");

それぞれの点に分類属性に基づいて色を付けます。ラベル イメージの形状を点群の形状に変更します。

labels = label2rgb(pointAttributes.Classification);
colorData = reshape(labels,[],3);

色分けされた点群を可視化します。

figure
pcshow(ptCloud.Location,colorData)

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

入力引数

すべて折りたたむ

LAS または LAZ ファイル リーダー。lasFileReader オブジェクトとして指定します。

名前と値の引数

すべて折りたたむ

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

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

例: "ROI",[5 10 5 10 5 10] は、関数で点群を読み取る関心領域 (ROI) を設定します。

点群で読み取る ROI。'ROI' と [xmin xmax ymin ymax zmin zmax] の順序の 6 要素行ベクトルからなるコンマ区切りのペアとして指定します。各要素は実数でなければなりません。ROI の x 軸、y 軸、z 軸の範囲の値を指定します。

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

GPS タイムスタンプの範囲。'GpsTimeSpan' と [startTime endTime] を示す duration オブジェクトの 2 要素ベクトルからなるコンマ区切りのペアとして指定します。タイムスタンプは正でなければなりません。

データ型: duration

目的の分類番号。'Classification' と有効な分類番号のベクトルからなるコンマ区切りのペアとして指定します。

有効な分類番号の範囲は 0 ~ 255 です。

分類番号分類タイプ
0作成済み (分類不可)
1未分類
2地面
3低植生
4中植生
5高植生
6建物
7低点 (ノイズ)
8予約済み
9水域
10鉄道
11路面
12予約済み
13保護線 (シールド)
14導線 (フェーズ)
15送電塔
16電線接続構造物 (絶縁体)
17橋梁床版
18高ノイズ
19 高架
20無視された地面
21積雪
22時間的に排他
23- 63予約済み
64 - 255ユーザー定義

これらは、標準のクラスの名前とクラスとオブジェクトのマッピングを示したものです。クラスの定義とマッピングは、LAS または LAZ ファイルの作成元のアプリケーションによって、これらの標準とは異なる場合があります。

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

リターン番号ごとの点の数。'LaserReturn' と有効なリターン番号のベクトルからなるコンマ区切りのペアとして指定します。有効なリターン番号は、1 から入力 lasFileReader オブジェクトの NumReturns プロパティまでの整数です。ベクトルの値 i のそれぞれについて、関数はリターン番号が i である点のみを含む点群を返します。

リターン番号はレーザー パルスが反射してセンサーに戻る回数になります。

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

点の属性。文字ベクトル、文字ベクトルの cell 配列、string スカラー、または string のベクトルとして指定します。入力には次のオプションを 1 つ以上含める必要があります。

  • "Classification"

  • "GPSTimeStamp"

  • "LaserReturn"

  • "NumReturns"

  • "NearIR"

  • "ScanAngle"

  • "UserData"

  • "PointSourceID"

  • "ScannerChannel"

  • "ScanDirectionFlag"

  • "EdgeOfFlightLineFlag"

  • "WaveformData"

関数は、各点の指定された属性を lidarPointAttributes オブジェクト ptAttributes に返します。指定されていない属性は空として返されます。

データ型: char | string | cell

出力引数

すべて折りたたむ

点群。pointCloud オブジェクトとして返されます。

点の属性データ。lidarPointAttributes オブジェクトとして返されます。既定では、点群の各点について、オブジェクトは LAS または LAZ 入力ファイルで使用可能なすべての属性を返します。ただし、名前と値の引数 Attributes を指定すると、オブジェクトは指定された属性のみを返し、指定されていない属性については空データを提供します。

バージョン履歴

R2020b で導入

すべて展開する