主要内容

pcfitcylinder

适合缸三维点云

描述

模型= pcfitcylinder (ptCloudIn,maxDistance)适合一个圆柱体的点云最大允许汽缸内围层点距离。这个函数使用M-estimator样品一致(MSAC)算法发现缸。

模型= pcfitcylinder (ptCloudIn,maxDistance,referenceVector)点云的缸符合额外的方向约束指定的1×3参考方向输入向量。

模型= pcfitcylinder (ptCloudIn,maxDistance,referenceVector,maxAngularDistance)另外指定的最大允许绝对的角距离。

(模型,inlierIndices,outlierIndices)= pcfitcylinder (ptCloudIn,maxDistance)此外返回线性指数窗和异常值点的点云输入。

(___,meanError)= pcfitcylinder (ptCloudIn,maxDistance)此外返回的距离窗的平均误差模型。

例子

(___)= pcfitcylinder (___,名称,值)使用指定的一个或多个额外的选项名称,值对参数。

例子

全部折叠

加载点云。

负载(“object3d.mat”);

显示点云。

图pcshow (ptCloud)包含(“X”(m))ylabel (“Y (m)”)zlabel (“Z”(m))标题(“原始点云”)

图包含一个坐标轴对象。坐标轴对象与标题原始点云包含一个散射类型的对象。

设置最大point-to-cylinder距离(5毫米)圆柱拟合。

maxDistance = 0.005;

设置限制搜索感兴趣的区域。

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

设置方位限制。

referenceVector = [0, 0, 1];

检测气缸和从点云提取它通过指定窗点。

(模型、inlierIndices) = pcfitcylinder (ptCloud maxDistance,referenceVector SampleIndices = SampleIndices);电脑=选择(ptCloud inlierIndices);

提取的油缸。

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

图包含一个坐标轴对象。坐标轴对象与标题缸点云包含一个散射类型的对象。

加载一个垫子文件包含一个点云到工作区中。

负载(“object3d.mat”);

显示点云。

图pcshow (ptCloud)包含(“X”(m))ylabel (“Y (m)”)zlabel (“Z”(m))标题(“发现一个圆柱体点云”)

设置最大point-to-cylinder距离圆柱拟合5毫米。

maxDistance = 0.005;

指定感兴趣区域(ROI)约束拟合函数。

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

设置方向约束的拟合函数

referenceVector = (0 0 1);

检测气缸在指定的点云的ROI和提取。

模型= pcfitcylinder (ptCloud maxDistance referenceVector,SampleIndices = SampleIndices);

情节的模型检测气缸。

持有情节(模型)

图包含一个坐标轴对象。与标题检测气缸轴对象点云包含2类型的对象分散,表面。

输入参数

全部折叠

点云,指定为一个pointCloud对象。如果正常的属性的输入ptCloud是空的,函数填充它的值满足要求的合适的算法。

最大距离缸内围层点,指定为一个标量值。指定距离的单位是一致的点云的单位使用。

数据类型:|

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

最大绝对角距离,指定为一个标量值。最大角距之间的度测量的方向安装汽缸和参考方向。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“SampleIndices”,[]

点的线性指标样本的输入点云,指定为逗号分隔两人组成的“SampleIndices和一个列向量。空向量意味着所有点是候选人在RANSAC样本拟合缸时迭代。如果指定点的子集,这个函数只适合模型的采样点的子集。提供的一个子集点可以显著加快这一进程,减少试验的次数。您可以生成指数向量使用findPointsInROI的方法pointCloud对象。

最大数量的随机试验寻找窗,指定为逗号分隔两人组成的MaxNumTrials”,一个正整数。为了提高输出的鲁棒性,增加这个值。然而,这样做增加了额外的计算。

寻找最大数量的比例内围层,指定为逗号分隔两人组成的“信心”和一个数字标量,范围在100年(0)。为了提高输出的鲁棒性,增加这个值。然而,这样做增加了额外的计算。

输出参数

全部折叠

几何模型的圆柱,作为一个返回cylinderModel对象。

输出模型的系数设置为0时:

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

  • 该算法不能找到足够的内围层点。

的线性指数窗点输入点云,作为一个列向量返回。

离群点的线性指标在输入点云作为一个列向量返回。

内围层点的距离的平均误差模型,作为标量值返回。

算法

函数返回一个几何模型,描述了汽缸。这个函数使用M-estimator样品一致(MSAC)算法发现缸。MSAC算法随机样本共识的一种变体(RANSAC)算法。

的匹配算法pcfitcylinder函数需要点云法线。因此,如果正常的属性输入点云是空的,函数填充它。当函数填充正常的财产,它使用6分,以适应当地的汽缸。如果6分不工作和安装失败,考虑调用pcnormals函数允许您选择要使用的点数。

引用

[1]托,p·h·S。,and A. Zisserman. “MLESAC: A New Robust Estimator with Application to Estimating Image Geometry.”计算机视觉和图像理解。78年卷1,2000年4月,第138 - 156页。

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

版本历史

介绍了R2015b