1. 输入输出

1.1 读取点云文件(pcl.readCloud)

算子名称 pcl.readCloud
参数类型 参数名 参数说明
输入参数 string_t name 输入点云
返回值 PCL_PointCloud_ptr 点云图像
功能描述 提取或排除索引点云

脚本示例:

  1. cloud = pcl.readCloud("cloud/lft_/214138.pcd")

1.2 点云文件保存(pcl.writeCloud)

算子名称 pcl.writeCloud
参数类型 参数名 参数说明
输入参数 string_t name 输入点云
PCL_PointCloud_ptr inCloud 输入点云
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 将所读取点云,书写为文件

脚本示例:

  1. pcl.writeCloud(file_name .. "pcd", cloud)

1.3 显示点云图像(pcl.showCloud)

算子名称 pcl.showCloud
参数类型 参数名 参数说明
输入参数 string_t name 输入点云
PCL_PointCloud_ptr cloudIn 输入点云
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 显示所读取到的点云数据,以图像形式显示

脚本实例:

  1. pcl.showCloud("pcl_cloud", cloud)

1.4 显示范围(pcl.showRange)

算子名称 pcl.showRange
参数类型 参数名 参数说明
输入参数 string_t name 输入点云
PCL_RangeImage-ptr range 范围
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 显示点云图像的范围

2.过滤

2.1 投影点云到平面(pcl.doProjectInliers)

算子名称 pcl.doProjectInliers
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_ModelCoefficientsPtr inCoefficients 投影平面模型系数
返回值 PCL_PointCloud_ptr 投影后的平面点云
功能描述 将输入点云投影到指定平面上

脚本示例:

  1. inCloud = cloud
  2. inCoefficients = plane --平面系数来自于pcl.doPlaneSegment平面提取
  3. cloud = pcl.ProjectInliers(inCloud, inCoefficients)

2.2 提取点云索引(pcl.doExtractIndices)

算子名称 pcl.doExtractIndices
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_PointIndicesPtr inIndices 点云索引
bool inNegative 提取或排除索引点
返回值 PCL_PointCloud_ptr 提取后的点云
功能描述 提取或排除索引点云

脚本示例:

  1. inCloud = cloud
  2. inIndices = 1
  3. inNegative = false
  4. cloud = pcl.doExtractIndices(inCloud, inIndices, inNegative)

2.3 复制点云图像(pcl.copyPointCloud)

算子名称 pcl.docopyPointCloud
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_PointIndices_ptr inDices 点云集群
返回值 PCL_PointCloud_ptr 提取后的点云
功能描述 用于复制点云图像

脚本示例:

  1. inCloud = cloud
  2. inDices = 50
  3. cloud = pcl.docopyPointCloud(inCloud, inDices)

2.4 点云坐标范围(pcl.doPassThrough)

算子名称 pcl.doPassThrough
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
string_t field 坐标范围
float li_mmin 过滤字段范围起始值
float li_max 过滤字段范围末尾值
bool negative 是否保留范围内
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 根据坐标范围提取的点云

脚本示例:

  1. inCloud = cloud
  2. field = "x"
  3. li_mmin = 1.5
  4. li_min = 2.5
  5. negative = false
  6. cloud = pcl.doPassThrough(inCloud, field, li_mmin, li_max, negative)

2.5 中值过滤(pcl.doMedianFilter)

算子名称 pcl.doMedianFilter
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_PointCloud_ptr cloud_filtered 执行滤波保存过滤结果在过滤参数
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 使拥有不同灰度的点看起来更接近它的相邻点。

脚本示例:

  1. cloud = pcl.doMedianFilter(cloud, cloud_filtered)

2.6 离群点去除(pcl.doOutlierRemoval)

算子名称 pcl.doOutlierRemoval
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
int nr_k 离群数量标准
double std_mul 离群距离半径
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 去除点云离群点,完善坐标范围内点云

脚本示例:

  1. inCloud = cloud
  2. nr_k = 50
  3. std_mul = 1.0
  4. cloud = pcl.doOutlierRemoval(inCloud, nr_k, std_mul)

2.7 均匀采样(pcl.doUniformSampling)

算子名称 pcl.doUniformSampling
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr model 输入点云
double modelss 半径
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 输出点云索引

脚本示例:

  1. model = cloud
  2. model_ss_ = 1.0
  3. cloud = pcl.doUniformSampling(model, model_ss_)

2.8 体素网格过滤(pcl.doVoxelGridFilter)

算子名称 pcl.doVoxelGridFilter
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
float leafSize 滤波器处理时采用的体素大小
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 是体素化网格方法实现下采样,可在保持点云形状特征的情况下减少点云的数量,在提高配准、曲面重建、形状识别等算法的速度。

脚本示例:

  1. inCloud = cloud
  2. leafSize = 0.01
  3. cloud = pcl.doVoxelGridFilter(cloud, 0.01)

2.9 双向过滤(pcl.doBilateralFilter)

算子名称 pcl.doBilateralFilter
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double sigma_s 双边滤波器用于空间邻域/窗口的高斯的标准偏差
double sigma_r 高斯的标注偏差用于控制相邻像素由于强度差异而下降多少
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 通过取邻近采样点的加权平均来修正当前采样点的位置,从而达到滤波效果;同时也会有选择地剔除部分于当前采样点差异较大的相邻采样点,从而达到保存原特征的目的。

脚本示例:

  1. inCloud = cloud
  2. sigma_s = 5.0
  3. sigma_r = 0.003
  4. cloud = pcl.doBilateralFilter(inCloud, sigma_s, sigma_r)

2.10 立体裁剪(pcl.doBoxClipper3D)

算子名称 pcl.doBoxClipper3D
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr src_cloud 输入点云
PCL_Vector3f_in rotation 旋转角度
PCL_Vector3f_in translation 平移距离
PCL_Vector3f_in box_size 边框大小
bool negative 分割方向
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 在三维点云下自定义位置及大小分割点云空间

脚本示例:

  1. src_cloud = cloud
  2. rotation = 1.0
  3. translation = 1.0
  4. box_size = 1.0
  5. negative = false
  6. cloud = pcl.doBoxClipper3D(src_cloud, rotation, translation, box_size, negative)

2.11 平面裁剪(pcl.doPlaneClipper3D)

算子名称 pcl.doPlaneClipper3D
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr src_cloud 输入点云
PCL_Vector4f_in plane 平面参数
bool negative 分割方向
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 在三维点云下任意平面分割点云空间

脚本示例:

  1. src_cloud = cloud
  2. plane = 0, 0, 0, 0.05
  3. negative = false
  4. cloud = pcl.doPlaneClipper3D(cloud, plane, false)

2.12 YOLO识别框内点云(pcl.doViewportClipper)

算子名称 pcl.doViewportClipper
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
BoundingBox bbox 识别框
fload dw 扩大宽度
fload dh 扩大高度
返回值 PCL_PointCloud_ptr 识别框内部点云图
功能描述 拣选识别框内点云

脚本示例:

  1. inCloud = cloud
  2. bbox = bbox_draw --该参数来于绘制识别框结果
  3. dw = 0.9
  4. dh = 0.0
  5. cloud = pcl.doViewportClipper(inCloud, bbox_draw, dw, dh)

2.13 阴影点去除(pcl.doShadowPointsRemoval)

算子名称 pcl.doShadowPointsRemoval
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double shadowThreshold 阴影阈值
double normalsThreshold 标注阈值
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 去除因光照影响的阴影点

脚本示例:

  1. inCloud = cloud
  2. shadowThreshold = 0.1
  3. normalsThreshold = 0.3
  4. cloud = pcl.doShadowPointsRemoval(inCloud, shadowThreshold, normalsThreshold)

2.14 轮廓过滤(pcl.doCropHullFilter)

算子名称 pcl.doCropHullFilter
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_PointCloud_ptr inSurfaceHull 封闭多边形形状
PCL_Polygons_ptr inPolygons 封闭多边形顶点
int inDimension 设置维度
bool CropOutside 移除内部或外部的点
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 过滤器将移除轮廓外部的点或去除里面的点

脚本示例:

  1. inCloud = bound_up --取自点云膨胀
  2. inSurfaceHull = bound_tu --取自凸包提取
  3. inPolygons = polygons_tu --取自凸包提取
  4. inDimension = 2
  5. CropOutside = false
  6. cloud = pcl.doCropHullFilter(inCloud, inSurfaceHull, inPolygons, inDimension, CropOutside)

3.分割

3.1 聚类提取(pcl.doClusterExtract)

算子名称 pcl.doClusterExtract
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double tolerance 形位公差,聚类最小值0.1m
int min_size 最小点云数
int max_size 最大点云数
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 将点云集群裁剪分割

脚本示例:

  1. inCloud = cloud
  2. tolerance = 0.05
  3. min_size = 100
  4. max_size = 25000
  5. cloud = pcl.doClusterExtract(inCloud, tolerance, min_size, max_size)

3.2 平面提取(pcl.doPlaneSegment)

算子名称 pcl.doPlaneSegment
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double inDistanceThreshold 阈值(内点到模型的距离)
double inDistanceWeight 表面法线权重系数(压缩厚度)
PCL_Vector3f inAxis 坐标范围
double inEpsAngle 提取角度
bool inNegative 是否保留范围内
返回值 PCL_PointCloud_ptr outCloud 坐标范围内点云
功能描述 用于将截取出的正面点云图,按X轴方向压缩。

脚本示例:

  1. inCloud = cloud
  2. inDistanceThreshold = 0.1
  3. inDistanceWeight = 0.01
  4. inAxis = asix_x
  5. inEpsAngle = 15.0
  6. inNegative = false
  7. cloud, plane = pcl.doPlaneSegment(inCloud, inDistanceThreshold, inDistanceWeight, inAxis, inEpsAngle, inNegative)

3.3 平面部分平移(pcl.doPlaneSegmentRansac)

算子名称 pcl.doPlaneSegmentRansac
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_ModelCoefficients_out outCoefficients 模型系数
double distance_threshold 距离阈值(离散点到模型距离)
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 让平面提取中的平面分割更加准确

3.4 平行线分割(pcl.doRansacParallelLine)

算子名称 pcl.doRansacParallelLine
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
pcl::PointIndices::Ptr inliners 点数索引
pcl::ModelCoefficients::Ptr coefficients 模型系数
double distance_threshold 距离阈值(离散点到模型距离)
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述

3.5 法线多边形线段分割(pcl.doPlaneSegmentFromNormals)

算子名称 pcl.doPlaneSegmentFromNormals
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_ModelCoefficients_out outCoefficients 模型系数
PCL_Normals_ptr inNormals 法线
double inDistanceThreshold 内点到模型的距离允许最大值
double inDistanceWeight 表面法线权重系数
PCL_Vector3f inAxis 数轴方向(垂直模型的轴)
double inEpsAngle 法线和给定轴之间的最大允许差值
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述

3.6 聚类分割(pcl.segment_RegionGrowing)

算子名称 pcl.segment_RegionGrowing
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
PCL_Normals_ptr cloud_normals 输入的法线
uint32_t Neighbours 邻域点的个数
float Smoothness 平滑度
float Curvature 曲率的阈值
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 将物理或抽象对象的集合分成由类似的对象组成的多个类

脚本示例:

  1. inCloud = cloud
  2. cloud_normals = normals
  3. Neighbours = 500
  4. Smoothness = 3.0 / 180.0 * M_PI
  5. Curvature = 1.0
  6. cloud = pcl.segment_RegionGrowing(inCloud, cloud_normals, Neighbours, Smoothness, Curvature)

3.7 垂直平面移除(pcl.doPerpendicularPlaneRemoval)

算子名称 pcl.doPerpendicularPlaneRemoval
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double distance 距离
double degree 角度
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 移出指定角度的相对垂直平面

脚本示例:

  1. inCloud = cloud
  2. distance = 0.01
  3. degree = 25.0
  4. cloud = pcl.doPerpendicularPlaneRemoval(inCloud, distance, degree)

3.8 渐进形态滤波(pcl.doProgressiveMorphologicalFilter)

算子名称 pcl.doProgressiveMorphologicalFilter
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 提取非地面点

3.9 水平投影分割(pcl.doGroundPlaneSegment)

算子名称 pcl.doGroundPlaneSegment
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 水平投影分割

4.特征

4.1 提取点云平面外边界(pcl.computeBoundary)

算子名称 pcl.computeBoundary
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
int k 阈值(与识别精度成正比)
double radius 边界估计所需半径
float angle 边界估计角度阈值
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 用于提取已经投影至平面的点云的外边界

脚本示例:

  1. inCloud = cloud
  2. k = 0
  3. radius = 0.05
  4. angle = 90
  5. bound = pcl.computeBoundary(inCloud, k, radius, angle)

4.2 计算法线(computeNormals)

算子名称 computeNormals
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
int k 均值
double radius 边界估计所需半径
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 指定法线方式

4.3 计算脚本(computeDescriptors)

算子名称 computeDescriptors
参数类型 参数名 参数说明
输入参数 PCL_Descriptors_ptr model_descriptors 模板点云的描述子
PCL_Descriptors_ptr scene_descriptors 场景点云的描述子
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 计算点云描述子

4.4 计算参考框架(computeReferenceFrame)

算子名称 computeReferenceFrame
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr model 模型
PCL_PointCloud_ptr model_keypoints 模型关键点
PCL_PointCloud_ptr model_normals 模型法线
float descrrad 搜索半径
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 根据模型参数计算得到参考框架

4.5 计算边框界(computeBoundingBox)

算子名称 computeBoundingBox
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 计算点云图像边框界线

5.识别

5.1 霍夫识别(pcl.doHoughRecognize)

算子名称 pcl.doHoughRecognize
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr model 输入模型
PCL_Normals_ptr model_normals 输入模型法线
PCL_PointCloud_ptr model_keypoints 输入模型关键点
PCL_Descriptors_ptr model_descriptors 输入模型描述点
PCL_PointCloud_ptr scene 输入场景
PCL_Normals_ptr scene_normals 输入场景法线
PCL_PointCloud_ptr scene_keypoints 输入场景关键点
PCL_Descriptors_ptr scene_descriptors 输入场景描述点
返回值
功能描述 计算点云图像边框界线

脚本示例:

  1. model =
  2. model_normals =
  3. model_keypoints =
  4. model_descriptors =
  5. scene =
  6. scene_normals =
  7. scene_keypoints =
  8. scene_descriptors =

5.2 几何识别(pcl.doGeometricRecognize)

算子名称 pcl.doGeometricRecognize
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr model 输入模型
PCL_Normals_ptr model_normals 输入模型法线
PCL_PointCloud_ptr model_keypoints 输入模型关键点
PCL_Descriptors_ptr model_descriptors 输入模型描述点
PCL_PointCloud_ptr scene 输入场景
PCL_Normals_ptr scene_normals 输入场景法线
PCL_PointCloud_ptr scene_keypoints 输入场景关键点
PCL_Descriptors_ptr scene_descriptors 输入场景描述点
返回值
功能描述 计算点云图像边框界线

脚本示例:

  1. model =
  2. model_normals =
  3. model_keypoints =
  4. model_descriptors =
  5. scene =
  6. scene_normals =
  7. scene_keypoints =
  8. scene_descriptors =


6.表面

6.1 点云膨胀(pcl.doMovingLeastSquares)

算子名称 pcl.doMovingLeastSquares
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double inSearchRadius 搜索半径
double inUpsamplingRadius 采样半径
double inUpsamplingStepSize 采样步数大小
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 对点云图像进行膨胀处理

脚本示例:

  1. inCloud = bound --点云平面外边界,取自computeBoundary
  2. inSearchRadius = 0.05
  3. inUpsamplingRadius = 0.15
  4. inUpsamplingStepSize = 0.005
  5. bound_up = pcl.doMovingLeastSquares(inCloud, inSearchRadius, inUpsamplingRadius, inUpsamplingStepSize)

6.2 随机均匀密度(pcl.doRandomUniformDensity)

算子名称 pcl.doRandomUniformDensity
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double inSearchRadius 搜索半径
int inRadiusPoints 半径点
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 将点云进行随机均匀分布处理

脚本示例:

  1. inCloud = cloud
  2. inSearchRadius = 0.05
  3. inRadiusPoints = 50
  4. cloud = pcl.doRandomUniformDensity(inCloud, inSearchRadius, inRadiusPoints)

6.3 体素网格膨胀(pcl.doVoxelGridDilation)

算子名称 pcl.doVoxelGridDilation
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double inSearchRadius 搜索半径
float inVoxelSize 体素大小
int inIterations 迭代次数
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 对三维图像进行膨胀处理

脚本示例:

  1. inCloud = cloud
  2. inSearchRadius = 0.05
  3. inVoxelSize = 0.01
  4. inIterations = 1
  5. incloud = pcl.doVoxelGridDilation(inCloud, inSearchRadius, inVoxeSize, inIterations)

6.4 提取凸包(pcl.doConvexHull)

算子名称 pcl.doConvexHull
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
int inDimension 维度
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 提取指定维度下点云的凸包

脚本示例:

  1. inCloud = cloud
  2. inDimension = 2
  3. bound_tu, polyons_tu = pcl.doConvexHull(inCloud, inDimension)

6.5 提取凹型轮廓(pcl.doConcaveHull)

算子名称 pcl.doConcaveHull
参数类型 参数名 参数说明
输入参数 PCL_PointCloud_ptr inCloud 输入点云
double inAlpha 点云间距
int inDimension 设置维度
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 在指定维度下,提取凹型外壳

脚本示例:

  1. inCloud = cloud
  2. inAlpha = 0.02
  3. inDimension = 2
  4. bound_ao, polyons_ao = pcl.doConcaveHull(inCloud, inAlpha, inDimension)

7.边界

7.1 提取边界(pcl.doRangeBorderExtract)

算子名称 pcl.doRangeBorderExtract
参数类型 参数名 参数说明
输入参数 PCL_RangeImage_ptr range_image 图片范围
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 提取指定图像范围的边界

7.2 范围图像(pcl.doRangeImage)

算子名称 pcl.doRangeImage
参数类型 参数名 参数说明
输入参数 PCL_RangeImage_ptr cloud 输入点云
返回值 PCL_PointCloud_ptr 坐标范围内点云
功能描述 指定提取边界范围内的图像

8.类属性说明

8.1坐标位置 (PCL.Point)

类名称 pcl.PCL_Point
属性类型 参数名 参数说明
属性列表 float x x坐标
float y y坐标
float z z坐标
成员函数 PCL_PointCloud_ptr 坐标范围内点云
功能描述 根据坐标范围截取正面的点云