1. はじめに
この記事では、3次元点群のファイル形式の1つである、pts形式について説明したいと思います。pts形式は、主にLeica製品によりエキスポートされます。
また、点群の別の形式であるE57やLASについては以下の記事で紹介しています。
2. ptsファイルの中身について
2.1. 各列の情報について
点群ファイルは、対象の3次元情報を表すために、xyz座標の情報を有しています。さらに、そのため、点の数だけ、xyz情報があり、それらが各行に格納されます。pts形式では、そのxyz情報の他に、その点をレーザースキャナで取得した時の反射強度、およびその点のRGB情報を持たせることができます。
以下の図に、ptsファイルを「メモ帳」で開いた時の例を示します。一番初めに、そのファイルに含まれる点の数(1904198)があり、2行目からが、各点の情報を示します。1~3列目はxyz情報を示しています。4列目は強度情報を示しています。そして、5~7列目に、RGB情報が格納されています。ptsファイルは、ascii形式であるため、「メモ帳」などで開くことができます。
ptsファイルの内容を以下の表にまとめます。
項目 | 内容 |
---|---|
提供元 | Leica |
ASCII/Binary | ASCII |
点群全体の情報 | 点数 |
各列の持つ情報 | XYZ/反射強度/RGB情報 |
2.2. iPhone LiDARでptsファイルをエキスポートしたときの例
ptsファイルは、主に、Leica社製のレーザースキャナで取得した点を、ソフトウェアを用いてエキスポートしたときに利用されます。しかし、近年急速に広まっているiPhoneに搭載されたLiDAR(iPhone LiDAR)でもptsファイルとして点群をエキスポートすることも可能です。
iPhone LiDARのアプリの中で最も有名なものの1つに、3d Scanner Appが挙げられます。
apps.apple.com
エキスポートする際に青枠のPTS形式を選択してください。
エキスポートすると、ptsファイルを以下のようにメモ帳で閲覧することができました。3d Scanner Appからエキスポートした場合は、強度情報は、すべて0になっています。
3. 公開されているpts形式の点群データの例
インターネット上にいくつか、pts形式の点群ファイルが無料公開されています。その例をこの章で述べます。
3.1. 旧都城市民会館
以下のリンクから、ダウンロードすることが可能です。
こちらのデータは、旧市民会館が解体されることを受けて、それらを3Dデータとして保存するプロジェクトの中で取得されました。
www.city.miyakonojo.miyazaki.jp
こちらのデータ(高密度でないもの)はオープンソースとして公開されています。このデータを利用して、SNSなどで発信する際は、「#3DDA #旧都城市民会館」 で投稿するとよいそうです。
3.2. truevis様のページ
以下のページでは、より小規模な点群がpts形式でダウンロード可能です。
4. ptsファイルをMATLABで読み込んで閲覧してみよう
3.1で述べた、旧都城市民会館の点群ファイルをプログラミングにて読み込み、閲覧したいと思います。言語はMATLABを利用します。ASCII形式なので、readmatrix
関数で簡単に読み込むことができます。pointCloud
関数で、point cloud変数にして、pcshow
関数で表示できます。
clear;clc;close all %% 読み込み xyzirgb = readmatrix("旧都城市民会館_屋外.pts","FileType","text"); %% point cloud変数を作成 pt = pointCloud(xyzirgb(:,1:3),"Color",xyzirgb(:,5:7)/255,'Intensity',xyzirgb(:,4)); %% RGB表示 figure;pcshow(pt);title('RGB表示') %% intensity表示 figure; pcshow(pt.Location,pt.Intensity);title('intensity表示');hold on colorbar
以下の動画は、pcshow関数で、点群を表示したときの様子を示します。
データについて
本記事では、旧都城市民会館の点群を利用させていただきました。