LoginSignup
6
6

More than 5 years have passed since last update.

PointCloud Upsamplingについて

Last updated at Posted at 2018-10-29

PointCloudのUpsampling方法についてまとめました。

Upsampling

今回はmesh_samplingによりUpsamplingを行います。
Mesh Samplingは点群に対してPolygon Meshを施し、各Polygonの内部を補完する処理を行っています。

環境

  • OS Ubuntu16.04
  • PCL1.8

目標

今回はオリジナルのPCDデータに対してDownsamplingしたデータをUpsamplingでどの程度復元可能か確認することを目標とします。
PCDファイルはtable_scene_lms400.pcdを使用しました。
ダウンサンプリングにより、点群数は460400 pointsから41049 pointsに削減されました。

pcl_voxel_grid table_scene_lms400.pcd table_scene_lms400_downsample.pcd -leaf 0.01 0.01 0.01
Raw Data Downsample
raw.png downsample.png

PolygonMeshを生成

Mesh Samplingを行うためにはplyファイルを作成する必要があります。
まず、Upsamplingを行いたいデータのPolygonMeshを生成します.
PolygonMeshについてはVM LABさんの記事を参考にしてみて下さい。

vtkファイルをplyファイルに変換

PolygonMeshはvtkファイルにて保存されるので、plyファイルに変換します。
vtkファイル名はmap.vtkとしています。

pcl_vtk2ply table_scene_lms400.vtk table_scene_lms400.ply

Mesh Samplingを実行

plyファイルを用いてMesh Samplingを行います。

pcl_mesh_sampling table_scene_lms400.ply table_scene_lms400_meshsample.pcd 

Mesh Samplingのパラメータはサンプル数を指定する-n_samples、ダウンサンプルのサイズを指定する-leaf_sizeがあります。
必要に応じてパラメータ調整を行って下さい。
今回はダウンサンプルする前の点群数である460400 pointsにしました。

$ pcl_mesh_sampling -h
Convert a CAD model to a point cloud using uniform sampling. For more information, use: pcl_mesh_sampling -h
Syntax is: pcl_mesh_sampling input.{ply,obj} output.pcd <options>
  where options are:
                     -n_samples X      = number of samples (default: 100000)
                     -leaf_size X  = the XYZ leaf size for the VoxelGrid -- for data reduction (default: 0.010000 m)

Result

Downsamplingにより間引きされた空間をUpsamplingにより補完することができました。
より良いUpsamplingをするためには、点密度やPolygonのサイズなどパラメータ調整、ノイズフィルタリングをする必要がありそうです。

Polygon Mesh Mesh Sampling
polygonmesh.png upsample.png
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6