バイナリ形式のPLY​ファイルで保存された​点群データの読み込み​について

15 views (last 30 days)
Kenta
Kenta on 2 Jul 2025
Commented: Kenta on 2 Jul 2025
PLY形式の点群の読み込みについてです。点群の保存のためにPLY形式(バイナリまたはアスキー形式)がよく利用されますが、
PLYの列に入れられる情報はいろいろと柔軟性がある一方、MATLABpcreadなどでは、XYZや反射強度、色情報のみサポートしているかと存じます。点群のセマンティックセグメンテーションのためのデータセットも多く公開されていますが、
その中でも例えば、オープンデータである、paris-lille-3dデータセットなどでは、PLY形式のclassなどの独自に定義された列に
ラベル情報が入っています(クラウドコンペアにて開く際の設定も添付致します)。
上の画像の点群データは以下のページからダウンロードしています。
そこで質問なのですが、MATLABではこのようなバイナリのPLY形式の点群からクラスなどの独自で定義された列の情報を読み取るのは難しいのでしょうか。
例えば、列名を指定したり、または、デフォルトで全ての列情報を読み取り、それを変数として読み込むようなことは可能でしょうか。
もし参考になるページなどございましたら教えていただけますと幸いです。どうぞよろしくお願いいたします。

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 2 Jul 2025
PLYのフォーマットを見てみましたが、elementやそれらのpropertyにバリエーションがあり、
柔軟に作ろうとするとそれなりに大変そうに思いました。取り急ぎですが、手元にあるものを改変し、パリのバイナリplyフォーマットに対応した関数readPointCloudFromBinaryPLY.mを作成いたしました。
(ヘッダー確認するだけのshowPLYHeaderも副産物として添付します)
[pt,classIDs] = readPointCloudFromBinaryPLY('Lille2.ply');
で、ポイントクラウドオブジェクトとして読込みが可能となるかと思います。pt.Colorに色情報としてクラスIDが格納されていますが、より直接的にクラス情報としてclassIDsも出力する仕様にしています。
他のPropertyが必要になるケースもあるかと思いますが、ひとまずこちらを参考にしていただければと思います。
  1 Comment
Kenta
Kenta on 2 Jul 2025
ありがとうございます。うまく読み込め、かつ可視化もできました。その他の公開データの整理などにも役立てられそうです。大変助かりました。ありがとうございました。

Sign in to comment.

More Answers (0)

Products


Release

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!