PCL Developers blog

Yangyan Li

project:PCLModeler: a PCL based Reconstruction Platform
mentor:Stefan Holzer and Federico Tombari

About me

I am a Ph.D candidate of Visual Computing Center(VCC) in Shenzhen Institutes of Advanced Technology(SIAT), Chinese Academy of Sciences. My primary research interests fall in the field of Computer Graphics with an emphasis on urban scene point cloud processing.

Project Description

This project aims to develop a PCL based Reconstruction platform–PCLModeler. There are quite a few related libraries and tools for point cloud based reconstruction, like CGAL, Scanalyze, Meshlab and so on. The key reconstruction steps including registration, cleaning up, surface reconstruction, and visualizing are scattered in different places, making it not very easy to get an easy to use reconstruction platform. It will be great if a ready to use reconstruction platform is provided, which will save users’ efforts a lot from building up a platform from scratch themselves. We believe such a platform will stimulate more researchers and developers to try their new ideas and develop new applications based on PCL.

Supported Functions & Features

  • Supported Functions
  • Supported Features

Recent status updates

Drag and Drop(dnd) Support and More Filters
Sunday, August 19, 2012

dnd support inside the scene tree is added, the users can drag and drop point cloud items to different render window, which will help them observe the point cloud. It will be nice to add more dnd support, for example, drag point cloud directly from the file system to the modeler app, there can be many such nice features, and I will add them after GSOC. And new filters can be added very easily to the current framework. But there seems an unknown exception thrown from file save module, which crashes the app, I will anaylse what’s the problem and finish file/project load/save things.

Placement for ICP Registration
Wednesday, August 15, 2012

The initial position and orientation can be tunned in a dialog triggered by double clicking the point cloud item ICP registration, as shown in the following snapshot. And ICP paremeters are exposed to give more control to the users. I will add more workers, add project support and document the functions next.

ICP Registration
Tuesday, July 31, 2012

ICP registration is added. The input point clouds and the result can be shown in same or different render windows for better inspection, as indicated by the following snapshot.


Initial positions of the input point clouds are important for the registration to converge. I will implement two types of tools for the initial placement of the input point clouds: setting corresponding points and directly tuning the orientation/position of the point clouds. The tuning will be accomplished by interactively adjusting the orientation/position parameters or by draggers(if it’s not very complicated to implement draggers with vtk...).

Simplify Scene Tree and Point Cloud Storage
Tuesday, July 24, 2012

After some efforts on making the scene tree with model/view, I gave up and just build it with QTreeWidget, which is simpler and works for desired UI interactions. And the work for making a PCL 2.x PointCloud is more than I expected, so I also gave up on this point cloud and found that pcl::PointCloud<pcl::PointSurfel> meets the requirements and I just store the point cloud in it for now. The storage will be upgraded to PCL 2.x point cloud type when it’s ready. After I removed the over kill code, it becomes much easier to progress, and I will move to the registration part next.

Moving to the future PointCloud type
Wednesday, July 04, 2012

I didn’t choose PointT as the core data structure, since different algorithms will interact with PCLModeler requesting different point cloud types, so I decided to use PointCloud2 because it is a container of many fields. But now I found it’s not easy to support some functions, for example, updating a specified field, or adding some fields, the current code is messy because of the accommodation for PointCloud2. According to this thread, PointCloud2 is going to be deprecated, and the proposed point cloud type in PCL 2.x is much more friendly for PCLModeler. So I will drop PointCloud2 and re-design the core based on the proposed data structure.