Point Cloud type interconversion between PCL and Open3D

PCLではpcl::PointCloud、Open3Dではopen3d::geometry::PointCloudという型で点群を扱います。PCLとOpen3Dを両方を使うことになってしまった極めて特殊な状況に置かれた人々は、これらの型を相互に変換する必要が出てきます。この記事ではこれらを相互に変換するユーティリティ関数を公開します。

Sample Program

サンプルプログラムはこちらにあります。
相互変換ユーティリティ(convert.h)をダウンロードして利用してください。

・Supported Types

ユーティリティ関数は、以下の点群型をサポートします。

  • pcl::PointXYZ
  • pcl::PointNormal
  • pcl::PointXYZRGB
  • pcl::PointXYZRGBA
  • pcl::PointXYZRGBNormal

Open3Dのopen3d::geometry::PointCloudでは「intensity(強度)」を直接サポートしていないためpcl::PointXYZIはサポートしていません。また、点群以外の局所特徴量(SHOTやFPFHなど)などについてはサポートしていません。

・Convert Point Cloud Type To PCL From Open3D

open3d::geometry::PointCloudからpcl::PointCloudに変換するには、convert::to_pcl<PointType>()を利用します。

// Convert Point Cloud Type To PCL From Open3D
pcl::PointCloud<PointType>::Ptr pcl_cloud = convert::to_pcl<PointType>( open3d_cloud );

・Convert Point Cloud Type To Open3D From PCL

pcl::PointCloudからopen3d::geometry::PointCloudに変換するには、convert::to_open3d<PointType>()を利用します。

// Convert Point Cloud Type To Open3D From PCL
std::shared_ptr<open3d::geometry::PointCloud> open3d_cloud = convert::to_open3d<PointType>( pcl_cloud );

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です