Main Content

e57FileReader

E57 파일에서 포인트 클라우드 데이터 읽어오기

R2023a 이후

    설명

    e57FileReader 객체는 E57 파일에 존재하는 메타데이터를 읽기 전용 속성으로 저장합니다. readPointCloud 객체 함수와 함께 이러한 속성을 사용하여 이 파일에서 포인트 클라우드 데이터를 읽어옵니다.

    ASTM(미국 재료 시험 협회)에서 지정한 E57 파일 형식은 XML 데이터 형식에 기반한 계층적 트리 구조에 데이터를 저장합니다. 관련 센서의 메타데이터와 함께 여러 개의 포인트 클라우드와 영상을 저장할 수 있습니다. 각 E57 파일은 포인트 클라우드 데이터를 저장하는 Data3D 요소와 영상을 저장하는 Images2D 요소를 포함합니다. 이 파일 형식에 대한 자세한 내용은 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

    E57 파일의 포인트 클라우드를 정렬하여 맵을 생성합니다.

    pcMap = pcalign(ptCloudArr,tformArr); 

    맵을 표시합니다.

    figure
    pcshow(pcMap)

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

    알고리즘

    E57 파일 형식은 카메라에서 생성된 2차원 영상 데이터는 물론 라이다 센서, 3차원 스캐너, 스테레오 비전 시스템의 포인트 클라우드 데이터도 저장하는 범용 개방형 표준 형식입니다. 이 형식은 해당 데이터를 캡처한 센서와 관련된 코어 메타데이터도 저장합니다. 이 파일 형식은 유연하며 해석하기 쉽습니다.

    각 E57 파일에는 XML 형식에 기반한 계층적 트리 구조가 있습니다. 하나의 E57 파일에는 헤더, 이진 섹션, XML 섹션이 있습니다.

    E57 file format.

    • 헤더 — 파일 버전 번호와 XML 섹션의 위치와 같은 정보를 포함합니다.

    • 이진 섹션 — 포인트 클라우드와 영상의 실제 데이터를 포함합니다.

    • XML 섹션 — 이진 섹션에 저장된 데이터를 참조하는 계층적 트리를 포함합니다.

      다음 그림은 XML 섹션의 전형적인 구조를 보여줍니다.

      XML section of the E57 file.

      E57Root 요소는 XML 계층 구조의 루트 노드입니다. 이는 포인트 클라우드와 영상을 공통된 파일 좌표계에 저장합니다. 이 구조에는 파일 생성 날짜 및 시간과 같은 추가 파일 정보도 포함됩니다.

      Data3D 요소는 각 포인트 클라우드를 개별 구조로 저장합니다. 각 구조는 포인트 클라우드의 자세 정보와 개별 점 특성을 저장합니다.

      Data3D 요소와 유사하게, Images2D 요소는 영상을 개별 구조로 저장합니다.

      E57 파일 형식에 대한 자세한 내용은 ASTM INTERNATIONAL 웹사이트에 나와 있는 표준 사양을 참조하십시오.

    버전 내역

    R2023a에 개발됨