1.Class pcl::gpu::EuclideanClusterExtraction
类EuclideanClusterExtraction是基于欧氏距离进行聚类分割的类,此类基于GPU实现并依赖于类pcl::gpu::octree,运行时占用GPU资源并非CPU资源,非常适合在拥有现在流行的多个CUDA核的GPU所在的计算机或移动设备上使用。
#include <C:/pcl-1.8.0/gpu/segmentation/include/pcl/gpu/segmentation/gpu_extract_clusters.h>
EuclideanClusterExtraction ()
// 空构造函数
void setSearchMethod (GPUTreePtr &tree)
// 设置搜索时所用的搜索机制,参数tree指向搜索时所用的搜索对象,例如kd-tree 、 octree等对象。
GPUTreePtr getSearchMethod ()
// 获取搜索时所用的搜索机制
void setClusterTolerance (double tolerance)
// 在欧氏空间里设置空间聚类容差tolerance,其实是在近邻搜索中所使用的半径。
double getClusterTolerance ()
// 获取在欧氏空间里设置空间聚类容差,其实是在近邻搜索中所使用的半径。
void setMinClusterSize (int min_cluster_size)
// 设置一个有效聚类包含的最少点数目min_cluster_size。
int getMinClusterSize ()
// 获取一个有效聚类包含的最少点数目。
void setMaxClusterSize (int max_cluster_size)
// 设置一个有效聚类包含的最大点数目max_cluster_size。
int getMaxClusterSize ()
// 获取一个有效聚类包含的最大点数目。
void setInput (CloudDevice input)
//
void setHostCloud (PointCloudHostPtr host_cloud)
//
void extract (std::vector< pcl::PointIndices > &clusters)
// 对通过setInputCloud ( )和 setIndices ( )共同指定的输入点云进行聚类分割,clusters存储点云的聚类分割结果,每个聚类由PointIndices对象存储其对应点集的
2.Class pcl::gpu::EuclideanLabeledClusterExtraction< PointT >
类EuclideanlabledClusterExtraction是带有标签的基于欧氏距离的聚类分割的类,此类基于GPU实现并依赖于类pcll::gpu::octree,类EuclideanlabledClusterEx-traction具体函数接口和实现的功能与类EuclideanClusterExtraction相似,只是在聚类分割时多考虑标签(Label)字段的值,其关键成员函数参考EuclideanClusterEx-traction类介绍。
#include <C:/pcl-1.8.0/gpu/segmentation/include/pcl/gpu/segmentation/gpu_extract_labeled_clusters.h>
EuclideanLabeledClusterExtraction ()
// 空构造函数
void setSearchMethod (GPUTreePtr &tree)
// 设置搜索时所用的搜索机制,参数tree指向搜索时所用的搜索对象,例如kd-tree 、 octree等对象。
GPUTreePtr getSearchMethod ()
// 获取搜索时所用的搜索机制
void setClusterTolerance (double tolerance)
// 在欧氏空间里设置空间聚类容差tolerance,其实是在近邻搜索中所使用的半径。
double getClusterTolerance ()
// 获取在欧氏空间里设置空间聚类容差,其实是在近邻搜索中所使用的半径。
void setMinClusterSize (int min_cluster_size)
// 设置一个有效聚类包含的最少点数目min_cluster_size。
int getMinClusterSize ()
// 获取一个有效聚类包含的最少点数目。
void setMaxClusterSize (int max_cluster_size)
// 设置一个有效聚类包含的最大点数目max_cluster_size。
int getMaxClusterSize ()
// 获取一个有效聚类包含的最大点数目。
void setInput (CloudDevice input)
//
void extract (std::vector< pcl::PointIndices > &clusters)
// 对通过setInputCloud ( )和 setIndices ( )共同指定的输入点云进行聚类分割,clusters存储点云的聚类分割结果,每个聚类由PointIndices对象存储其对应点集的
3.Class pcl::EuclideanClusterExtraction< PointT >
类EuclideanClusterExtraction< PointT >是基于欧氏距离的聚类分割的类,与gpu: : EuclideanClusterExtraction对应,前者是在CPU上运行的,后者是在GPU中运行的。
#include <pcl/segmentation/extract_clusters.h>
EuclideanClusterExtraction ()
// 空构造函数
void setSearchMethod (const KdTreePtr &tree)
// 设置搜索时所用的搜索机制,参数tree指向搜索时所用的搜索对象,例如kd-tree 、 octree等对象。
KdTreePtr getSearchMethod () const
// 获取搜索时所用的搜索机制
void setClusterTolerance (double tolerance)
// 在欧氏空间里设置空间聚类容差tolerance,其实是在近邻搜索中所使用的半径。
double getClusterTolerance () const
// 获取在欧氏空间里设置空间聚类容差,其实是在近邻搜索中所使用的半径。
void setMinClusterSize (int min_cluster_size)
// 设置一个有效聚类包含的最少点数目min_cluster_size。
int getMinClusterSize () const
// 获取一个有效聚类包含的最少点数目。
void setMaxClusterSize (int max_cluster_size)
// 设置一个有效聚类包含的最大点数目max_cluster_size。
int getMaxClusterSize () const
// 获取一个有效聚类包含的最大点数目。
void extract (std::vector< PointIndices > &clusters)
// 对通过setInputCloud ( )和 setIndices ( )共同指定的输入点云进行聚类分割,clusters存储点云的聚类分割结果,每个聚类由PointIndices对象存储其对应点集的
4.Class pcl::LabeledEuclideanClusterExtraction< PointT >
类LabeledEuclideanClusterExtraction< PointT >是基于欧氏距离的聚类分割的类,具体函数实现的功能与类EuclideanClusterExtraction< PointT >相似,只是在聚类分割时多考虑标签(Label)字段的值,其关键成员函数参考EuclideanClusterExtraction< PointT >介 绍。
#include <pcl/segmentation/extract_labeled_clusters.h>
LabeledEuclideanClusterExtraction ()
// 空构造函数
void setSearchMethod (const KdTreePtr &tree)
// 设置搜索时所用的搜索机制,参数tree指向搜索时所用的搜索对象,例如kd-tree 、 octree等对象。
KdTreePtr getSearchMethod () const
// 获取搜索时所用的搜索机制
void setClusterTolerance (double tolerance)
// 在欧氏空间里设置空间聚类容差tolerance,其实是在近邻搜索中所使用的半径。
double getClusterTolerance () const
// 获取在欧氏空间里设置空间聚类容差,其实是在近邻搜索中所使用的半径。
void setMinClusterSize (int min_cluster_size)
// 设置一个有效聚类包含的最少点数目min_cluster_size。
int getMinClusterSize () const
// 获取一个有效聚类包含的最少点数目。
void setMaxClusterSize (int max_cluster_size)
// 设置一个有效聚类包含的最大点数目max_cluster_size。
int getMaxClusterSize () const
// 获取一个有效聚类包含的最大点数目。
void setMaxLabels (unsigned int max_label)
// 设置点云中标签的最大数量。
unsigned int getMaxLabels () const
// 获得点云中标签的最大数量。
void extract (std::vector< std::vector< PointIndices > > &labeled_clusters)
// 对通过setInputCloud ( )和 setIndices ( )共同指定的输入点云进行聚类分割,labeled_clusters存储点云的聚类分割结果,每个聚类由PointIndices对象存储其对应点集的
5.Class pcl::ExtractPolygonalPrismData< PointT >
类ExtractPolygonalPrismData< PointT >通过设置一组处于同一平面模型上的点索引向量,并指定一高度,利用指定的点形成二维凸包,再结合指定高度一起生成一个立体多边形棱柱模型,该类用于分割出该棱柱模型内部的点集,比如分割出放在平面上的物体。
#include <pcl/segmentation/extract_polygonal_prism_data.h>
ExtractPolygonalPrismData ()
// 空的构造函数。
void setInputPlanarHull (const PointCloudConstPtr &hull)
// 设置平面模型上的点集,hull为指向该点集的指针。
PointCloudConstPtr getInputPlanarHull () const
// 获得指向平面模型上的点集指针。
void setHeightLimits (double height_min, double height_max)
// 设置高度范围(height_max为最大高度、height_min为最小高度),当给定点云中的点到构造棱柱体的平面模型的距离超出指定的这个高度范围时,该点视为局外点,所有的局外点都会被剔除。
void getHeightLimits (double &height_min, double &height_max) const
// 获取高度范围(height_max为最大高度、height_min为最小高度)。
void setViewPoint (float vpx, float vpy, float vpz)
// 设置视点,vpx,vpy,vpz分别为视点的三维坐标。
void getViewPoint (float &vpx, float &vpy, float &vpz) const
// 获取视点的三维坐标。
void segment (PointIndices &output)
// 对通过setInputCloud ( )和setIndices ( )共同指定的输入点云进行聚类分割,输出分割出来的该棱柱模型内部的点集作为结果存储在output中并返回。
6.Class pcl::SACSegmentation< PointT >
类SACSegmentation< PointT >是利用采样一致性算法实现分割类,定义了所有相关的函数接口,该类的输入为设定需要分割的模型类型与相关参数,输出为最终估计的模型参数,以及分割得到的内点集合,利用不同的模型可以实现对点云中包含的不同类型的物体的分割,例如直线、平面、圆柱、圆球等的分割提取,在机器人自动识别提取领域应用非常方便,稳健性也非常好。
#include <pcl/segmentation/sac_segmentation.h>
SACSegmentation (bool random=false)
// 空的构造函数
virtual ~SACSegmentation ()
// 空的析构函数
void setModelType (int model)
// 设置随机采样一致性所构造的几何模型的类型(用户给定的参数),model为指定的模型类型参数,本章节中涉及的模型类型如下:
/*
SACMODEL_PLANE模型:定义为平面模型,共设置4个参数[ normal_x, normal_y, normal_z d],其中(normal_x, normal_y, normal_z)为Hessian 范式中法向量的坐标及常量d值,ax+by+cz+d=0,从点云中分割提取的内点都处在估计参数对应的平面上或与平面距离在一定范围内。
SACMODEL_LINE模型:定义为直线模型,共设置6个参数[point_on_line.x, point_on_line.y, point_on_line.z, line_direction.x, line_direction.y, line_direction.z],其中(point_on_line.x,point_on_line.y,point_on_line.z)为直线上一点的三维坐标,(line_direction.x, line_direction.y, line_direction.z)为直线方向向量的三维坐标,从点云中分割提取的内点都处在估计参数对应直线上或与直线的距离在一定范围内。
SACMODEL_CIRCLE2D模型:定义为二维圆的圆周模型,共设置3个参数[center.x, center.y, radius],其中(center.x, center.y)为圆周中心点的二维坐标,radius为圆周半径,从点云中分割提取的内点都处在估计参数对应的圆周上或距离圆周边线的距离在一定范围内。
SACMODEL_SPHERE模型:定义为三维球体模型,共设置4个参数[center.x, center.y, center.z radius],其中(center. x, center. y, center. z)为球体中心的三维坐标,radius为球体半径,从点云中分割提取的内点都处在估计参数对应的球体上或距离球体边线的距离在一定范围内。
SACMODEL_CYLINDER模型:定义为圆柱体模型,共设置7个参数[point_on_axis.x, point_on_axis.y, point_on_axis.z, axis_direction.x ,axis_direction.y ,axis_diection.z, radius],其中,(point_on_axis.x, point_on_axis.y, point_on_axis.z)为轴线上点的三维坐标,(direction.x ,axis_direction.y, axis_direction.z)为轴线方向向量的三维坐标,radius为圆柱体半径,从点云中分割提取的内点都处在估计参数对应的圆柱体上或距离圆柱体表面的距离在一定范围内。
SACMODEL_CONE模型:定义为圆锥模型,尚未实现。
SACMODEL_TORUS模型:定义为圆环面模型,尚未实现。
SACMODEL_PARALLEL_LINE 模型:定义为有条件限制的直线模型,在规定的最大角度偏差限制下,直线模型与给定轴线平行,其参数设置参见SACMODEL_LINE模型。
SACMODEL_PERPENDICULAR_PLANE模型:定义为有条件限制的平面模型,在规定的最大角度偏差限制下,平面模型与给定轴线垂直,参数设置参见SAC-MODEL_PLANE模型。
SACMODELNORMAL_PLANE模型:定义为有条件限制的平面模型,在规定的最大角度偏差限制下,每一个局内点的法线必须与估计的平面模型的法线平行,参数设置参见SACMODEL_PLANE模型。
SACMODEL_PARALLEL_PLANE模型:定义为有条件限制的平面模型,在规定的最大角度偏差限制下,平面模型与给定的轴线平行,参数设置参见SACMODEL_PLANE模型。
SACMODEL_NORMAL PARALLEL_PLANE模型:定义为有条件限制的平面模型,在法线约束下,三维平面模型必须与用户设定的轴线平行,参数设置参见SACMODEL_PLANE模型。
*/
int getModelType () const
// 获取随机采样一致性所构造的几何模型的类型(
SampleConsensusPtr getMethod () const
// 获取指向使用的SAC方法的指针
SampleConsensusModelPtr getModel () const
// 获取指向使用的SAC模型的指针。
void setMethodType (int method)
// 设置使用采样一致性方法的类型(用户给定参数),采样一致性方法的类型有SAC_RANSAC(随机采样一致性)、SAC_LMEDS(最小中值法)、 SAC_MSAC(M估计采样一致性)、SAC_RRANSAC、SAC_RMSAC、SAC_MLESAC(最大似然采样一致性)、SAC_PROSAC(渐进一致性采样),具体算法描述详见随机采样一致性这章。
int getMethodType () const
// 获取使用采样一致性方法的类型
void setDistanceThreshold (double threshold)
// 该函数配合用户指定的模型,设置点到模型的距离阈值threshold(用户给定参数),如果点到模型的距离不超过这个距离阈值,认为该点为局内点,否则认为是局外点,被剔除。
double getDistanceThreshold () const
// 获取点到模型的距离阈值
void setMaxIterations (int max_iterations)
// 设置迭代次数的上限max_iterations.
int getMaxIterations () const
// 获取迭代次数的上限.
void setProbability (double probability)
// 设置每次从数据集中选取至少一个局内点的概率probability。
double getProbability () const
// 获取每次从数据集中选取至少一个局内点的概率。
void setOptimizeCoefficients (bool optimize)
// 设置是否对估计的模型参数进行优化,optimize为true时进行优化,否则不进行优化。
bool getOptimizeCoefficients () const
// 获取是否对估计的模型参数进行优化的布尔值。
void setRadiusLimits (const double &min_radius, const double &max_radius)
// 该函数配合,当用户设定带有半径参数的模型类型时,设置模型半径参数的最大最小半径阈值max_radius 、min_radius.
void getRadiusLimits (double &min_radius, double &max_radius)
// 当用户设定带有半径参数的模型类型时,获取模型半径参数的最大最小半径阈值
void setSamplesMaxDist (const double &radius, SearchPtr search)
// 设置随机采样时搜索所用的最大半径Radius。
void getSamplesMaxDist (double &radius)
// 获取随机采样时搜索所用的最大半径Radius。
void setAxis (const Eigen::Vector3f &ax)
// 该函数配合,当用户设定与轴线平行或垂直有关的模型类型时,设置垂直或平行于所要建立模型的轴线。
Eigen::Vector3f getAxis () const
// 获取垂直或平行于所要建立模型的轴线。
void setEpsAngle (double ea)
// 该函数配合,当用户设定有平行或垂直限定有关的模型类型时,设置判断是否平行或垂直时的角度阈值,ea是最大角度差,采用弧度制。
double getEpsAngle () const
// 获取判断是否平行或垂直时的角度阈值
virtual void segment (PointIndices &inliers, ModelCoefficients &model_coefficients)
// 对通过setInputCloud ( )和setIndices ( )共同指定的输入点云进行聚类分割,参数inliers是基于模型分割所得到的点集合索引,model_cofficents是估计得到的模型系数。
7.Class pcl::SACSegmentationFromNormals< PointT, PointNT >
类SACSegmentationFromNormals< PointT, PointNT >是利用采样一致性方法进行点云分割的类,与其父类SACSegmentation不同之处在于其在算法实现时采用了法线信息,即该类在进行运算输出之前需要设定法线信息。
#include <pcl/segmentation/sac_segmentation.h>
SACSegmentationFromNormals (bool random=false)
// 空构造函数
void setInputNormals (const PointCloudNConstPtr &normals)
// 设置输入点云的法线,normals为指向法线的指针。
PointCloudNConstPtr getInputNormals () const
// 获取指向输入点云的法线的指针。
void setNormalDistanceWeight (double distance_weight)
// 设置相对权重系数distance_weight, 该权重与距离成正比,与角度成反比。
double getNormalDistanceWeight () const
// 获取相对权重系数。
void setMinMaxOpeningAngle (const double &min_angle, const double &max_angle)
// 该函数配合,当用户指定模型为圆锥模型时,设置圆锥模型锥角的最小值与最大值,作为估计时的取值范围。
void getMinMaxOpeningAngle (double &min_angle, double &max_angle)
// 获取圆锥模型锥角的最小值与最大值。
void setDistanceFromOrigin (const double d)
// 该函数配合,当用户指定模型为平面模型时,设定原点到平面模型的距离为d.
double getDistanceFromOrigin () const
// 获取原点到平面模型的距离为d.
void setMaxIterations (int max_iterations)
// 设置迭代次数的上限max_iterations.
void setRadiusLimits (const double &min_radius, const double &max_radius)
// 该函数配合,当用户设定带有半径参数的模型类型时,设置模型半径参数的最大最小半径阈值max_radius 、min_radius.
void setSamplesMaxDist (const double &radius, SearchPtr search)
// 设置随机采样时搜索所用的最大半径Radius。
virtual void segment (PointIndices &inliers, ModelCoefficients &model_coefficients)
// 对通过setInputCloud ( )和setIndices ( )共同指定的输入点云进行聚类分割,参数inliers是基于模型分割所得到的点集合索引,model_cofficents是估计得到的模型系数。
8.Class pcl::SeededHueSegmentation
类SeededHueSegmentation是基于颜色信息的点云区域生长分割算法,该算法在分割时不仅使用了点云的空间信息还使用了点云所带的可见光信息,非常适合对基于RGBD设备获取的点云进行分割处理。
#include <pcl/segmentation/seeded_hue_segmentation.h>
SeededHueSegmentation ()
// 空构造函数
void setSearchMethod (const KdTreePtr &tree)
// 设置搜索时所用的搜索机制,参数tree 指向搜索时所用的搜索对象,例如kdtree.octree等对象。
KdTreePtr getSearchMethod () const
// 获取搜索时所用的搜索机制。
void setClusterTolerance (double tolerance)
// 设置在欧氏空间中的空间聚类容差tolerance.
double getClusterTolerance () const
// 获取在欧氏空间中的空间聚类容差.
void setDeltaHue (float delta_hue)
// 设置分割中作为一类时颜色的容差delta_hue。
float getDeltaHue () const
// 获取分割中作为一类时颜色的容差delta_hue。
void segment (PointIndices &indices_in, PointIndices &indices_out)
// 对通过setInputCloud ( )和setIndices ( )共同指定的输入点云进行聚类分割,输出分割出来的结果存储在output中返回。
9.Class pcl::SegmentDifferences< PointT >
类SegmentDifferences< PointT >可以得到在对应点最大偏差距离限制下的两个配准后点云的差异,此算法输入为两组已经配准的点云,设置两组点云对应点之间的偏差距离阈值,最后返回两组点云的差。
#include <pcl/segmentation/segment_differences.h>
SegmentDifferences ()
// 空构造函数
void setTargetCloud (const PointCloudConstPtr &cloud)
// 设置与setinputcloud中给的点云进行比较的一组目标点云,cloud为指向目标点云的指针引用。
PointCloudConstPtr const getTargetCloud ()
// 获取与setinputcloud中给的点云进行比较的一组目标点云的指针引用。
void setSearchMethod (const KdTreePtr &tree)
// 设置搜索时所用的搜索机制,参数tree 指向搜索时所用的搜索对象,例如kdtree、octree等对象。
KdTreePtr getSearchMethod ()
// 获取搜索时所用的搜索机制,
void setDistanceThreshold (double sqr_threshold)
// 设置两组点云中的对应点之间允许的距离上限sqr_threshold.
double getDistanceThreshold ()
// 获取两组点云中的对应点之间允许的距离上限。
void segment (PointCloud &output)
// 实现计算输出两组输入点云中的差即output=setinputcloud设置的点云——set-TargetCloud设置的点云集合,类似集合差操作,结果为setinputcloud 设置的点云中不包含两组点云交集(即用距离阈值限制下的对应区域)的点集合组成的点云。
10.Segmentation 模块的其他全局关键函数
#include <gpu_extract_clusters.h>
bool pcl::gpu::comparePointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
// 根据a与b点云的数目大小,如果a. size( )<b. size( )则返回真,否则为否。
#include <extract_labeled_clusters.h>
bool pcl::gpu::compareLabeledPointClusters (const pcl::PointIndices &a, const pcl::PointIndices &b)
// 同上,只是点的类型中含有Label字段值。
#include <extract_clusters.hpp>
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const boost::shared_ptr< search::Search< PointT > > &tree, float tolerance, std::vector< PointIndices > &clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
// 基于两点间的欧氏距离将空间分成不同聚类,cloud为输入点云对象的引用,tree指定搜索时所用对象的指针,tolerance为在欧氏空间里设置空间聚类容差,即在近邻搜索中所使用的半径,min_pts_per_cluster 为一个聚类最少包含的点云个数,max_pts_per_cluster 为一个聚类最多包含的点云个数。
#include <extract_labeled_clusters.h>
void pcl::extractLabeledEuclideanClusters (const PointCloud< PointT > &cloud, const boost::shared_ptr< search::Search< PointT > > &tree, float tolerance, std::vector< std::vector< PointIndices > > &labeled_clusters, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=std::numeric_limits< unsigned int >::max(), unsigned int max_label=std::numeric_limits< unsigned int >::max())
// 同上,只是点的类型中含有Label字段值。
#include <extract_clusters.hpp>
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const PointCloud< Normal > &normals, float tolerance, const boost::shared_ptr< KdTree< PointT > > &tree, std::vector< PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
// 基于两点间的欧氏距离和法线角度偏移量将空间分成不同聚类。cloud 为点云,normals为点云的法线,tree为设置的搜索方法,tolerance为在欧氏空间里设置的空间聚类容差,即在近邻搜索中所使用的半径,cluster是输出的点云索引结果,eps_angle为模型法线与设定模型轴线的最大角度差(采用弧度制),min_pts_per_cluster为-个聚类最少包含的点云个数,max_pts_ per_cluster 为一个聚类最多包含的点云个数。
void pcl::extractEuclideanClusters (const PointCloud< PointT > &cloud, const PointCloud< Normal > &normals, const std::vector< int > &indices, const boost::shared_ptr< KdTree< PointT > > &tree, float tolerance, std::vector< PointIndices > &clusters, double eps_angle, unsigned int min_pts_per_cluster=1, unsigned int max_pts_per_cluster=(std::numeric_limits< int >::max)())
// 同上,只是加入了点云索引,indices为指向索引点云的指针。
#include <extract_polygonal_prism_data.hpp>
bool pcl::isPointIn2DPolygon (const PointT &point, const pcl::PointCloud< PointT > &polygon)
// 建立一个通用的算法,用来检验三维点point的投影是否在点云polygon给定的二维平面模型中,如果在返回true,否则返回false。
bool pcl::isXYPointIn2DXYPolygon (const PointT &point, const pcl::PointCloud< PointT > &polygon)
// 同上,只是检验的point的是二维的,只含有x,y坐标。
#include <seeded_hue_segmentation.hpp>
void pcl::seededHueSegmentation (const PointCloud< PointXYZRGB > &cloud, const boost::shared_ptr< search::Search< PointXYZRGB > > &tree, float tolerance, PointIndices &indices_in, PointIndices &indices_out, float delta_hue=0.0)
// 基于两点间的欧氏距离将空间分成不同聚类,cloud为输入点云,tree为设置的搜索机制,tolerance为在欧氏空间里设置空间聚类容差,即在近邻搜索中所使用的半径,delta_hue为设置的颜色容差,indices_in为输入的种子点,为PointIndices的向量,indices_out为输出的聚类点结果,为PointIndices的向量。
#include <segment_differences.hpp>
void pcl::getPointCloudDifference (const pcl::PointCloud< PointT > &src, const pcl::PointCloud< PointT > &tgt, double threshold, const boost::shared_ptr< pcl::search::Search< PointT > > &tree, pcl::PointCloud< PointT > &output)
// 得到在对应点最大距离限制下的两个空间配准的点云的差异。src为输入的待比较的点云,tgt为输入的与待比较点云进行比较的目标点云,threshold是两组点云中对应点的距离阈值,tree是设定的搜索对象,output为输出的差异点云。