当前位置:网站首页>Overview of PCL modules (1.6)
Overview of PCL modules (1.6)
2022-07-27 10:01:00 【yfy2022yfy】
This article is translated from http://pointclouds.org/documentation/tutorials/walkthrough.php#walkthrough
1.Filters
Background
The following figure is an example of denoising , Due to measurement error , Some measurement data will show a large number of shadow points , These shadow points will make the local point cloud 3D Feature estimation becomes complex . Some outliers can be statistically analyzed by the data of adjacent values 、 Filter out the unqualified data .PCL The sparse outlier removal algorithm in is implemented on the basis of calculating the distance distribution from the point in the input data set to the neighborhood . For each point , Calculate the average distance from it to all adjacent points . Let's say the distribution is a gaussian , With mean and standard deviation , All average distances are in the distance ( Defined by the global distance mean and standard deviation ) Any other point can be regarded as an outlier , And remove from the data set .

Documentation: http://docs.pointclouds.org/trunk/group__filters.html
Tutorials: http://pointclouds.org/documentation/tutorials/#filtering-tutorial
2、Features
Background
Can be in 3D Feature tutorial Find PCL Introduction to the theory of feature work in .
Features The library contains data structures , And estimate from point cloud data 3D Mechanism of characteristics . Three dimensional features are the representation of specific three-dimensional points or positions in space , Describes the geometry based on the information available around the point . The data space selected around the query point is usually called k Neighborhood . The following figure shows the selected query point and its selected k A simple example of a neighborhood .

One of the two most widely used geometric point features is the estimated curvature of the base surface and the query point p Normal at . They are all considered local features , Because they use k The nearest neighbor points provide information to describe a point . In order to efficiently determine these adjacent points , Input data sets usually use spatial decomposition techniques ( Such as octree or kD-tree) Be divided into smaller blocks , Then search for the nearest point in that space . Depending on the application , You can choose p Determine a fixed number of k A little bit , Or in p The radius of the center is r Find all points in the sphere . without doubt , Estimate the surface normal and curvature at p One of the easiest ways to change points is to perform feature decomposition ( namely , Calculation k Eigenvectors and eigenvalues of surface patches of neighborhood points ). therefore , The eigenvector corresponding to the minimum eigenvalue will approximate the point p The normal direction of the surface at n, From the eigenvalue, the curvature of the surface is estimated as :
![]()

Documentation: http://docs.pointclouds.org/trunk/group__features.html
Tutorials: http://pointclouds.org/documentation/tutorials/#features-tutorial
3、Keypoints
Background
keypoints The library contains the implementation of point cloud key point detection algorithm . Key points ( Also known as points of interest ) Is a point in an image or point cloud , They are stable 、 Distinctive , And can use well-defined testing standards to identify . Usually , The number of points of interest will be much smaller than the total number of points in a point cloud , When combined with local feature descriptor , Key points and descriptors can form a compact but descriptive representation of raw data .
The following figure shows the... Extracted from the range image NARF Output of key points :

Documentation: http://docs.pointclouds.org/trunk/group__keypoints.html
Tutorials: http://pointclouds.org/documentation/tutorials/#keypoints-tutorial
4、Registration
Background
Combining multiple data sets into a globally consistent model is usually performed using a technique called registration . The key idea is to identify the corresponding points between data sets , And find a way to minimize the distance between corresponding points ( Alignment error ) Transformation . The transformation process is continuous , Because the corresponding search is affected by the relative position and direction of the dataset . Once the alignment error falls below the specified threshold , Registration is considered complete .
registration Libraries are organized and unorganized ( General purpose ) Data sets implement a large number of point cloud registration algorithms . for example ,PCL Contains a powerful set of algorithms , Allow estimation of multiple sets of correspondence , And reject the bad corresponding method , And estimate the transformation in a robust way .


Documentation: http://docs.pointclouds.org/trunk/group__registration.html
Tutorials: http://pointclouds.org/documentation/tutorials/#registration-tutorial
5、Kd-tree
Background
Can be in Kd-tree course Find Kd-trees Introduction to the theory of work .
Kd-tree Library usage FLANN Provides Kd-tree data structure , Allow fast Nearest neighbor search .
Kd-tree (k Dimension tree ) It is a spatial partition data structure , It stores a set of k Dimension point , So as to support efficient range search and nearest neighbor search . Nearest neighbor search is the core operation when processing point cloud data , It can be used to find the corresponding relationship between point groups or feature descriptors , Or define the local neighborhood around the point .

Documentation: http://docs.pointclouds.org/trunk/group__kdtree.html
Tutorials: http://pointclouds.org/documentation/tutorials/#kdtree-tutorial
6、Octree
Background
Octree Tree Library provides an efficient method to create hierarchical tree data structure from point cloud data . It supports spatial partitioning of point datasets 、 Down sampling and search operations . Each octree node either has 8 Child node , Or there are no child nodes . The root node describes a cube bounding box that encapsulates all points . At every level of the tree , This space is represented by a factor 2 To subdivide , Thus, the voxel resolution is improved .
The octree implementation provides an efficient nearest neighbor search routine , Such as “ Adjacent points in voxel search ”、“K Neighborhood search ” and “ Adjacent points in radius search ”. It will automatically adjust its size according to the point data set . A set of leaf node classes provides additional functionality , Such as space “ Occupancy rate ” and “ Point density of each voxel ” Check . Functions for serialization and deserialization can effectively encode octree structure into binary format . Besides , In the scene where you need to create an octree at a high speed , The memory pool implementation reduces expensive memory allocation and release operations .
The following figure shows the voxel bounding box of octree nodes at the lowest level of the tree . Octree voxels surround every surface of Stanford rabbit 3D spot . Red dots indicate point data . This image is used octree_viewer Created .

Documentation: http://docs.pointclouds.org/trunk/group__octree.html
Tutorials: http://pointclouds.org/documentation/tutorials/#octree-tutorial
7、Segmentation
Background
Segmentation The library contains the segmentation of point clouds into different clusters (clusters) The algorithm of . These algorithms are most suitable for dealing with point clouds composed of many spatially isolated regions . under these circumstances , Clustering is often used to decompose clouds into their components , Then you can deal with these parts independently .
stay Clustering extraction tutorial You can find the theoretical basis to explain the working principle of clustering method .
These two figures respectively show the plane model segmentation ( Left ) And the cylinder model ( Right ) Result .

Documentation: http://docs.pointclouds.org/trunk/group__segmentation.html
Tutorials: http://pointclouds.org/documentation/tutorials/#segmentation-tutorial
8、Sample Consensus
Background
sample_consensus Library contains SAmple Consensus (SAC) Method ( Such as RANSAC) And models ( Such as plane 、 cylinder ). They can be combined freely , In order to detect a specific model and its parameters in the point cloud .
stay Random sample consistency (RANSAC) course You can find an introductory tutorial to explain the working principle of the sample consistency algorithm .
Some of the models implemented in this library include : A straight line 、 Plane 、 Cylinder and sphere . Plane fitting is usually used to detect common indoor surfaces , Like a wall 、 Floor and table . Other models can be used to detect and segment objects with common geometric structures ( for example , Fit the cylinder model to a cup ).

Documentation: http://docs.pointclouds.org/trunk/group__sample__consensus.html
Tutorials: http://pointclouds.org/documentation/tutorials/#sample-consensus
9、Surface
Background
surface Library processing rebuilds the original surface from 3D scanning . According to the specific task , This can be a shell 、 Mesh representation or smoothing with normals / Resample the surface . If the point cloud is noisy , Or it is composed of multiple scanning results with poor alignment , Then smoothing and resampling are very important . The complexity of surface estimation can be adjusted , if necessary , Normals can be estimated in the same step .

Meshing is a general method of using points to create surfaces , At present, two algorithms are provided : One is to triangulate the original points very quickly , The other is the slower gridding , It can also smooth and fill holes .

It is useful to create a convex or concave shell , for example , When a simplified surface representation or boundary extraction is needed .

Documentation: http://docs.pointclouds.org/trunk/group__surface.html
Tutorials: http://pointclouds.org/documentation/tutorials/#surface-tutorial
10、Range Image
Background
range_image The library contains two classes , Used to represent and process range images . Distance image ( Or depth map ) Is an image whose pixel value represents the distance or depth from the origin of the sensor . Distance image is a common three-dimensional representation , Usually generated by stereo camera or time of flight camera . After knowing the internal calibration parameters of the camera , Distance images can be converted into point clouds .
Note: range_image Now it is Common Part of the module .

Tutorials: http://pointclouds.org/documentation/tutorials/#range-images
11、I/O
Background
io The library contains reading and writing point cloud data (PCD) File classes and functions , And capture point clouds from various sensing devices . An introduction to these functions can be found in the following tutorials :
- The PCD (Point Cloud Data) file format
- Reading PointCloud data from PCD files
- Writing PointCloud data to PCD files
- The OpenNI Grabber Framework in PCL
Documentation: http://docs.pointclouds.org/trunk/group__io.html
Tutorials: http://pointclouds.org/documentation/tutorials/#i-o
12、Visualization
Background
establish visualization The purpose of the library is to quickly prototype and visualize the results of algorithms running on 3D point cloud data . And OpenCV Used for display 2D Image and drawing on the screen are basic 2D Graphic highgui Routines are similar , Library provides :
stay pcl::PointCloud<T> format in , There are for rendering and setting any n-D Visual properties of point cloud dataset ( Color 、 Point size 、 Opacity, etc ) Methods ;

Using point sets or parametric equations to draw basic three-dimensional graphics on the screen ( Like a cylinder 、 sphere 、 A straight line 、 Polygon, etc ) Methods ;

A two-dimensional histogram visualization module (pcl Histogram visualizer );

pcl::PointCloud<T> A large number of geometric and color tools for datasets ;


One pcl::RangeImage Visualization module .

The package utilizes VTK Library pair distance image and 2D Operation carried out 3D Rendering . To implement your own visualizer , Please check the tests and examples that come with the Library .
Documentation: http://docs.pointclouds.org/trunk/group__visualization.html
Tutorials: http://pointclouds.org/documentation/tutorials/#visualization-tutorial
边栏推荐
- 去 OPPO 面试,被问麻了
- 视觉SLAM十四讲笔记(一):第一讲+第二讲
- 并发之线程状态转换
- 历时一年,论文终于被国际顶会接收了
- How to restore the original version after installing Hal Library
- 超赞的卡尔曼滤波详解文章
- 2016 outlook
- A ride into Qinchuan -- a brief talk on how beego Autorouter works
- Brush the title "sword finger offer" day04
- Food safety | the more you eat junk food, the more you want to eat it? Please keep this common food calorimeter
猜你喜欢

Practice and exploration of overseas site Seata of ant group

Expose a technology boss from a poor family

Easy to understand! Graphic go synergy principle and Practice

S switch stacking scheme configuration guide

聊聊索引失效的10种场景,太坑了

历时一年,论文终于被国际顶会接收了

华为交换机双上行组网Smart-link配置指南
![Shell的正则表达式入门、常规匹配、特殊字符:^、$、.、*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号](/img/31/ed0d8c1a5327059f2de7493bec1c6c.png)
Shell的正则表达式入门、常规匹配、特殊字符:^、$、.、*、字符区间(中括号):[ ]、特殊字符:\、匹配手机号

Understand chisel language. 27. Chisel advanced finite state machine (I) -- basic finite state machine (Moore machine)

LeetCode.1260. 二维网格迁移____原地暴力 / 降维+循环数组直接定位
随机推荐
超赞的卡尔曼滤波详解文章
刷题《剑指Offer》day04
食品安全 | 无糖是真的没有糖吗?这些真相要知道
习题 --- 快排、归并、浮点数二分
7/26 thinking +dp+ suffix array learning
swagger-editor
July training (day 17) - breadth first search
去 OPPO 面试,被问麻了
DCGAN论文改进之处+简化代码
Review summary of engineering surveying examination
蚂蚁集团境外站点 Seata 实践与探索
Brush the title "sword finger offer" day03
July training (day 20) - binary search tree
[cloud native • Devops] master the container management tool rancher
PCL的ICP配准示例
并发之线程状态转换
Leetcode.814. binary tree pruning____ DFS
3D人脸重建:Joint 3D Face Reconstruction and Dense Alignment with position Map Regression Network
Anchor Free检测器:CenterNet
Is Damon partgroupdef a custom object?