メインコンテンツ

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) を設定します。

すべて折りたたむ

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 ファイルから点群データおよびヘッダー情報を読み取るために使用する lasFileReader オブジェクトを作成します。

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

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

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

分類ラベルを RGB カラーに変換し、点群の構造に合わせて形状を変更します。

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。[xmin xmax ymin ymax zmin zmax] の順序の 6 要素行ベクトルとして指定します。各要素は実数でなければなりません。ROI の x 軸、y 軸、z 軸の範囲の値を指定します。

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

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

データ型: duration

分類値。有効な分類番号のベクトルとして指定します。

有効な分類番号の範囲は 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

リターン番号ごとの点の数。有効なリターン番号のベクトルとして指定します。有効なリターン番号は、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 オブジェクトとして返されます。

メモ

点群関数は、3 次元座標空間における位置 (x,y,z) を表す直交座標のデータを前提としています。LAS ファイルまたは LAZ ファイルに地理座標 (longitude,latitude,height) のデータが含まれる場合は、データを直交座標に変換しなければなりません。点群データの確認方法および地理座標から直交座標への変換方法の詳細については、Visualize Point Clouds on Maps Using Coordinate Reference System from LAS/LAZ Filesの例の「Working with Geographic CRS」のセクションを参照してください。

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

バージョン履歴

R2020b で導入

すべて展開する