Main Content

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

e57FileReader

E57 ファイルからの点群データの読み取り

R2023a 以降

    説明

    e57FileReader オブジェクトには、E57 ファイルに含まれるメタデータが読み取り専用のプロパティとして格納されます。これらのプロパティは、オブジェクト関数 readPointCloud でファイルから点群データを読み取るために使用します。

    E57 ファイル形式は、米国試験材料協会 (ASTM) によって指定されたものであり、XML データ形式に基づいてデータを階層ツリー構造で格納します。複数の点群およびイメージを、関連するセンサーのメタデータと共に格納できます。各 E57 ファイルには、点群データを格納する Data3D 要素と、イメージを格納する Images2D 要素が 1 つずつ含まれています。ファイル形式の詳細については、E57 ファイル形式を参照してください。

    作成

    説明

    e57Reader = e57FileReader(fileName) は、E57 ファイルから点群データを読み取る e57FileReader オブジェクトを作成します。E57 ファイルの絶対パスまたは相対パスを指定する fileName 引数は、FileName オブジェクト プロパティを設定します。fileName は、文字ベクトルまたは string スカラーとして指定します。

    プロパティ

    すべて展開する

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

    E57 ファイルの名前。文字ベクトルとして格納されます。

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

    E57 ファイル ヘッダーの書式名。文字ベクトルとして格納されます。

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

    E57 ファイル ヘッダーのグローバル一意識別子。文字ベクトルとして格納されます。

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

    E57 ファイルのバージョン。文字ベクトルとして格納されます。

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

    E57 ファイルの保存に使用するライブラリ バージョン。文字ベクトルとして格納されます。

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

    ファイル作成日時。datetime オブジェクトとして格納されます。

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

    E57 ファイル内の点群の数。非負の整数として格納されます。

    オブジェクト関数

    readPointCloudRead point cloud data from E57 file
    hasCRSDataCheck if E57 file has CRS data
    readCRSRead coordinate reference system data from E57 file

    すべて折りたたむ

    E57 ファイルを含む ZIP ファイルをダウンロードし、そのファイルを解凍します。

    zipFile = matlab.internal.examples.downloadSupportFile("lidar","data/e57ParkingLot.zip");
    saveFolder = fileparts(zipFile);
    e57FileName = [saveFolder filesep 'parkingLot.e57'];
    if ~exist(e57FileName,"file")
        unzip(zipFile,saveFolder)
    end

    ダウンロードした E57 ファイルを使用して e57FileReader オブジェクトを作成します。

    e57Reader = e57FileReader(e57FileName);

    点群 ptCloudArr および対応する姿勢 tformArr を格納するための変数を定義します。

    ptCloudArr = [];
    tformArr = []; 

    点群データを読み取ります。

    for i = 1:e57Reader.NumPointClouds
       [ptCloud,pcMetadata] = readPointCloud(e57Reader,i);
        for j = 1:numel(ptCloud)
            ptCloudArr = [ptCloudArr ptCloud(j)];
            tformArr = [tformArr pcMetadata.RelativePose];
        end
    end

    ファイルの点群を配置してマップを作成します。

    pcMap = pcalign(ptCloudArr,tformArr); 

    マップを表示します。

    figure
    pcshow(pcMap)

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

    アルゴリズム

    E57 ファイル形式は、汎用の、オープン標準の形式であり、LiDAR センサー、3 次元スキャナー、ステレオ ビジョン システムの点群データを格納し、さらにカメラによって生成された 2 次元イメージ データも格納します。この形式では、データを取得したセンサーに関連付けられているコア メタデータも格納できます。このファイル形式は柔軟性が高く、簡単に解釈できます。

    各 E57 ファイルは、XML 形式に基づく階層ツリー構造をもっています。E57 ファイルには、"ヘッダー""バイナリ セクション"、および "XML セクション" があります。

    E57 file format.

    • ヘッダー — ファイルのバージョン番号や XML セクションの位置などの情報が含まれています。

    • バイナリ セクション — 点群およびイメージの実際のデータが含まれています。

    • XML セクション — バイナリ セクションに格納されているデータを参照する階層ツリーが含まれています。

      次の図は、XML セクションの典型的な構造を示しています。

      XML section of the E57 file.

      E57Root 要素は XML 階層のルート ノードです。点群とイメージが一般的なファイル座標系で格納されます。この構造には、ファイル作成日時など、追加のファイル情報も含まれています。

      Data3D 要素には、各点群が個別の構造として格納されます。各構造には、姿勢情報および点群の個々の点の属性が格納されます。

      Images2D 要素には、Data3D 要素と同様に、イメージが個々の構造として格納されます。

      E57 ファイル形式の詳細については、ASTM インターナショナルの Web サイトで標準仕様を参照してください。

    バージョン履歴

    R2023a で導入