主要内容

pcfitcylinder

将圆柱体与三维点云拟合

描述

模型= pcfitcylinder(ptcloudinMaxdistance.将圆柱体与从嵌套点到圆柱体的最大允许距离的点云相匹配。该函数使用m估计样本一致性(MSAC)算法来寻找柱体。

模型= pcfitcylinder(ptcloudinMaxdistance.参考矢量使用由1×3参考方向输入向量指定的附加取向约束将气缸拟合到点云。

模型= pcfitcylinder(ptcloudinMaxdistance.参考矢量maxAngularDistance另外指定允许的最大绝对角距离。

模型inlierIndicesuterierindices) = pcfitcylinder (ptcloudinMaxdistance.另外,返回点云输入中的内嵌点和离群点的线性索引。

___meanError) = pcfitcylinder (ptcloudinMaxdistance.另外返回Inlier点到模型的距离的平均误差。

例子

___) = pcfitcylinder (___名称,价值使用一个或多个指定的其他选项名称,价值对论点。

例子

全部收缩

加载点云。

负载(“object3d.mat”);

显示点云。

图pcshow (ptCloud)包含(“X (m)”)ylabel(“Y (m)”)Zlabel('z(m)') 标题(原始点云的

图中包含一个坐标轴。具有标题原始点云的轴包含类型分散的对象。

设置气缸连接件的最大点到气缸的距离(5mm)。

maxDistance = 0.005;

设置感兴趣的区域以约束搜索。

ROI = [0.4,0.6,-inf,0.2,0.1,INF];sampleIndices = findPointsInROI (ptCloud roi);

设置方向约束。

referenceVector = [0, 0, 1];

检测圆柱体并通过指定内嵌点从点云中提取圆柱体。

(模型、inlierIndices) = pcfitcylinder (ptCloud maxDistance,...referenceVector,'Samemindices',样品暗物典);PC = SELECT(PTCLOUD,INLIELINDICES);

绘制提取的圆柱体。

图pcshow(PC)标题(“缸点云”

图中包含一个坐标轴。标题圆柱点云的轴包含类型散射的对象。

加载点云。

负载(“object3d.mat”);

显示点云。

图pcshow (ptCloud)包含(“X (m)”)ylabel(“Y (m)”)Zlabel('z(m)') 标题('在点云中检测一个气缸'

图中包含一个坐标轴。标题为“检测点云中的圆柱体”的轴包含一个散点类型的对象。

设置气缸连接件的最大点到气缸的距离(5mm)。

maxDistance = 0.005;

设置感兴趣的区域以约束搜索。

投资回报率=[0.4,0.6;负无穷,0.2,0.1,正);sampleIndices = findPointsInROI (ptCloud roi);

设置方向约束。

referenceVector = [0, 0, 1];

检测点云中的气缸并提取它。

模型= pcfitcylinder (ptCloud maxDistance referenceVector,...'Samemindices',样品暗物典);

绘制气缸。

持有情节(模型)

图中包含一个坐标轴。具有标题的轴检测点云中的圆柱体包含2个类型散射,表面的物体。

输入参数

全部收缩

点云,指定为apointcloud.目的。如果是正常的输入的财产ptCloud是空的,该功能填充了值,以满足拟合算法的要求。

从Inlier点到圆柱的最大距离,指定为标量值。指定与您正在使用的单位为点云的单位的距离。

数据类型:|双倍的

参考方向,指定为1 × 3向量。

最大绝对角距离,指定为标量值。最大的角距离是在被拟合圆柱的方向和参考方向之间的度数。

名称值对参数

指定可选的逗号分隔的对名称,价值论点。的名字参数名和价值是相应的价值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'Samemindices'[]

输入点云中待采样点的线性指数,指定为逗号分隔对,由'SampleIndices'和列向量。空向量表示在RANSAC迭代拟合圆柱体时,所有点都是待采样的候选点。如果你指定了一个子集的点,这个函数通过只抽样子集中的那些点来拟合模型。提供分数子集可以通过减少试验次数而显著加快过程。可以使用findpointsinroi.方法的方法pointcloud.目的。

用于查找inliers的最大随机试验次数,指定为由“逗号分隔的配对”MaxNumTrials和一个正整数。为了提高输出的稳健性,请增加该值。然而,这样做会增加额外的计算。

查找最大嵌套数的百分比,指定为逗号分隔对,由'信心'和数字标量,在范围内(0 100)。为了提高输出的稳健性,增加此值。然而,这样做会增加额外的计算。

输出参数

全部收缩

圆柱的几何模型,返回为Cylindermodel.目的。

输出模型的系数设置为零:

  • 输入点云没有包含足够的有效点。

  • 算法找不到足够的Inlier点。

输入点云中Inlier点的线性指标,作为列向量返回。

输入点云中的异常值的线性指标作为列向量返回。

Inlier点到模型的距离的平均误差,作为标量值返回。

算法

该函数返回描述圆柱体的几何模型。该函数使用m估计样本一致性(MSAC)算法来寻找柱体。MSAC算法是RANdom SAmple Consensus (RANSAC)算法的一种变体。

拟合算法pcfitcylinder函数需要点云法线。因此,如果正常的属性为空时,函数将填充它。当函数填充正常的属性,它使用6个点来适合本地圆柱体。如果六个点不工作和拟合失败,考虑调用Pcnormals.功能使您能够选择要使用的点数。

参考

Torr, P. H. S.和A. Zisserman。“MLESAC:一种新的用于估计图像几何的鲁棒估计器”。计算机视觉与图像理解.78卷,第1期,2000年4月,138-156页。

扩展功能

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

在R2015B中介绍