バイナリ形式のPLYファイルで保存された点群データの読み込みについて
15 views (last 30 days)
Show older comments
PLY形式の点群の読み込みについてです。点群の保存のためにPLY形式(バイナリまたはアスキー形式)がよく利用されますが、
PLYの列に入れられる情報はいろいろと柔軟性がある一方、MATLABのpcreadなどでは、XYZや反射強度、色情報のみサポートしているかと存じます。点群のセマンティックセグメンテーションのためのデータセットも多く公開されていますが、
その中でも例えば、オープンデータである、paris-lille-3dデータセットなどでは、PLY形式のclassなどの独自に定義された列に
ラベル情報が入っています(クラウドコンペアにて開く際の設定も添付致します)。

上の画像の点群データは以下のページからダウンロードしています。
そこで質問なのですが、MATLABではこのようなバイナリのPLY形式の点群からクラスなどの独自で定義された列の情報を読み取るのは難しいのでしょうか。
例えば、列名を指定したり、または、デフォルトで全ての列情報を読み取り、それを変数として読み込むようなことは可能でしょうか。
もし参考になるページなどございましたら教えていただけますと幸いです。どうぞよろしくお願いいたします。
0 Comments
Accepted Answer
Shunichi Kusano
on 2 Jul 2025
PLYのフォーマットを見てみましたが、elementやそれらのpropertyにバリエーションがあり、
柔軟に作ろうとするとそれなりに大変そうに思いました。取り急ぎですが、手元にあるものを改変し、パリのバイナリplyフォーマットに対応した関数readPointCloudFromBinaryPLY.mを作成いたしました。
(ヘッダー確認するだけのshowPLYHeaderも副産物として添付します)
[pt,classIDs] = readPointCloudFromBinaryPLY('Lille2.ply');
で、ポイントクラウドオブジェクトとして読込みが可能となるかと思います。pt.Colorに色情報としてクラスIDが格納されていますが、より直接的にクラス情報としてclassIDsも出力する仕様にしています。
他のPropertyが必要になるケースもあるかと思いますが、ひとまずこちらを参考にしていただければと思います。
More Answers (0)
See Also
Categories
Find more on LIDAR および点群の処理 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!