Point cloud library PCL from entry to mastery (study notes) Chapter 1 overview

1.1 What is PCL

PCL (Point Cloud Library, point cloud library) is a large-scale cross-platform open source C++ programming library, which implements a large number of point cloud-related general algorithms and efficient data structures, involving point cloud acquisition, filtering, segmentation, registration, retrieval, and feature extraction , recognition, tracking, surface reconstruction, visualization, etc.; supports multiple operating system platforms, and can run on Windows, Linux, Android, Mac OS X, and some embedded real-time systems.
If OpenCV is the crystallization of 2D information acquisition and processing, then PCL has the same status in 3D information acquisition and processing. PCL is a BSD license, free for commercial and academic applications.

1.2 Development of PCL

PCL was originally an open source project maintained and developed by young Dr. Radu from the University of Munich under ROS (Robot Operating System). It is mainly used in the field of robot research and application. With the accumulation of various algorithm modules, it became independent in 2011. Formally together with global 3D information acquisition and processing counterparts, a strong development and maintenance team has been formed, mainly composed of many well-known universities, research institutes and related hardware and software companies. Since then, it has developed very rapidly, and new research institutions have been added continuously. With the financial support of many world-renowned companies such as Willow Garage, NVidia, Google, Toyota, Trimble, Urban Robotics, Honda Research lnstitute, etc., new developments have been continuously proposed. Plan, the code update is very active, and has long-term maintenance by the community.

1.3 Application of PCL

Surveying and mapping, unmanned driving, robotics, human-computer interaction, reverse engineering and other industrial automation, BIM, etc.

1.4 Structure and core content of PCL

For 3D point cloud processing, PCL is a completely modular modern C++ template library, as shown in Figure 1-2. It is based on the following third-party libraries: Boost, Eigen, FLANN, VTK, CUDA, OpenNI, Qhull, to achieve point cloud-related acquisition, filtering, segmentation, registration, retrieval, feature extraction, recognition, tracking, surface reconstruction, visualization, etc.
insert image description here
All modules and algorithms in PCL transfer data through Boost pair shared pointers, thus avoiding the need to duplicate existing data in the system multiple times.
From the perspective of algorithm, PCL refers to a 3D processing algorithm that incorporates a variety of operations on point cloud data, including: filtering, feature estimation, surface reconstruction, model fitting and segmentation, positioning search, etc. Each set of algorithms is divided by base class, trying to integrate all the common functions throughout the entire pipeline processing technology, so as to maintain the compactness and clear structure of the entire algorithm implementation process, and improve the reusability, conciseness and reliability of the code. read.
A basic interface procedure for processing pipelines in PCL is as follows.
· Create processing objects (eg filtering, feature estimation, segmentation, etc.).
· Process the module by inputting point cloud data using setlnputCloud.
· Set the algorithm correlation number.
· Invoke compute (or filter, split, etc.) to get the output.

For further simplification and development, PCI is broken into a series of smaller code bases, making it modular so that they can be compiled and used individually, increasing configurability.
Commonly used code libraries in PCL are introduced as follows.
· libpcl filters: such as sampling, removing outliers, feature extraction, fitting estimation and other data implementation filters.
· libpcl features: realize various three-dimensional features, such as surface normal. Curvature, boundary point estimation, moment invariant, dominant rate, PFH and FPFH features, rotated image, integral image, NARF descriptor, RIFT, relative standard deviation, data intensity screening, etc.
· libpcl I/O: Realize data input and output operations, such as reading and writing point cloud data files (PCD).
· libpcl segmentation: realize clustering extraction, such as model fitting point cloud segmentation extraction for a series of parameter models (such as plane, cylinder, sphere, straight line, etc.) through sampling consistency method, extracting point cloud inside polygonal prism, etc.
· libpcl surface: Implement surface reconstruction techniques, such as mesh reconstruction, convex hull reconstruction, moving least squares smoothing, etc.
· libpcl register: implement point cloud registration methods, such as ICP, etc.
· libpcl keypoints: implements different keypoint extraction methods, which can be used as a preprocessing step. Decide where to extract feature descriptors.
· libpcl range: Implements support for range images generated by different point cloud datasets.

Guess you like

Origin blog.csdn.net/cheche012345/article/details/127075989