300x250

point cloud 등 3D 데이터를 다루다 보면 .ply 확장자를 갖는 파일을 자주 마주친다.

매번 까먹는 파일의 format을 정리해두고, 확실히 알아보려 한다.

 

 

목차

     

     

     

     

     

    PLY란?

     

    PLY는 polygon file format, 혹은 stanford triangle format으로 알려진 파일 포맷이다. 기본적으로 3D 스캐너로 얻은 3차원 데이터를 저장하기 위한 포맷이다.

    크게 ASCII, Binary의 두 종류로 나뉘는데, 내가 다룰 파일은 대부분 ASCII 버전일 것이다.

     

     

     

     

    PLY Format

     

    파일이 어떤 형식으로 이루어져있는지 알아보자.

    다음은 3RScan이라는 3차원 실내 환경을 담은 데이터의 일부이다.

     

    ply file example

     

    ply파일의 첫 번째 줄은 ASCII와 binary 버전 둘 다에서 text 형태로 나타나며, 위 예시와 같이 'ply'라는 텍스트를 포함하고 있다.

     

    두 번째 줄은 format의 버전을 나타내는 줄이다. 다음과 같은 ply format을 사용할 수 있다.

    • format ascii 1.0
    • format binary_little_endian 1.0
    • format binary_big_endian 1.0

     

    'element' keyword는 data element가 어떻게 저장되어있고, 몇 개나 있는지를 나타낸다. 사진의 예시에서 vertex element는 아래와 같은 'property'를 나타낸다. (자주 사용하는, 대표적인 property들만 설명하겠다.)

    • property float x, property float y, property float z : vertex의 위치 (float datatype)
    • property unchar red, property unchar green, property unchar blue : vertex의 색상 (unsigned char datatype)
    • property ushort objectId, property ushort globalId : vertex가 해당하는 object id, global id (unsigned short datatype)
      • 데이터의 특성 상 해당 scene에서의 id, 전체적인 object 종류를 나타내는 id가 존재한다.

    end_header 이후의 데이터를 보면 띄어쓰기로 총 11개의 property가 나열되어있는 것을 확인할 수 있다. 각각 순서대로 해당 vertex의 property를 나타낸다.

    예를 들어, 처음 vertex(점)는 (1.35, -0.565348, -1.03) 위치에 존재하고, RGB 색상 값이 (140, 86, 75)이며, object id는 12, global id는 503임을 알 수 있다.

     

    또한, header로 다시 돌아가서, 'property uchar RIO27' 아래에 90747개의 face element를 어떻게 나타냈는지도 적혀있다.

    위 예시는 데이터의 가장 윗부분인데, 한참 내리다보면 다음과 같이 구성이 변한다.

     

    face element example

     

    header에는 'property list uchar int vertex_indices'로 표현한다고 나와있다. 이에 따라 첫 번째 face는 index가 '19651', '19645', '55530'인 3개의 vertex로 이루어져있음을 알 수 있다. 점 3개가 모여 면을 형성한 것이다.

     

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기