Help us understand the problem. What is going on with this article?

PointCloud Upsamplingについて

More than 1 year has passed since last update.

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
YudaiSadakuni
自律移動ロボット 特にSensor Fusion、単眼Depth、強化学習あたりを中心に研究しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away