主要内容

pcfitcylinder

适合3-D点云

描述

模型= pcfitcylinder(ptcloudin,,,,MaxDistance将圆柱体拟合到一个点云,该点云具有从嵌入到圆柱体的最大允许距离。此函数使用M估计器样品共识(MSAC)算法来找到圆柱体。

模型= pcfitcylinder(ptcloudin,,,,MaxDistance,,,,参考年将圆柱体拟合到点云,并具有1 by-3参考方向输入向量指定的其他方向约束。

模型= pcfitcylinder(ptcloudin,,,,MaxDistance,,,,参考年,,,,maxangulardistance另外指定最大允许的绝对角距离。

[[模型,,,,嵌入式,,,,离群值] = pcfitcylinder(ptcloudin,,,,MaxDistance另外,将线性索引返回点云输入中的嵌入和离群点。

[[___,,,,MeanError] = pcfitcylinder(ptcloudin,,,,MaxDistance另外,返回嵌入式点距离的平均误差到模型。

例子

[[___] = pcfitcylinder(___,,,,名称,价值使用一个或多个指定的其他选项名称,价值配对参数。

例子

全部收缩

加载点云。

加载('object3d.mat');

显示点云。

图PCSHOW(PTCLOUD)XLABEL('x(m)')ylabel('y(m)')Zlabel('z(m)') 标题(“原始点云”

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

设置最大圆柱距离(5毫米)以进行气缸拟合。

maxDistance = 0.005;

设置关注区域以限制搜索。

ROI = [0.4,0.6,-inf,0.2,0.1,Inf];sampleIndices = findpointsinroi(ptcloud,roi);

设置方向约束。

参考值= [0,0,1];

检测气缸并通过指定嵌入点来从点云中提取。

[型号,inlierIndices] = pcfitcylinder(ptcloud,maxdistance,...参考年,“样品界”,样品框);pc = select(ptcloud,inlierIndices);

绘制提取的圆柱体。

图PCShow(PC)标题(PC)“气缸点云”

图包含一个轴对象。带有标题气缸点云的轴对象包含类型散点的对象。

加载点云。

加载('object3d.mat');

显示点云。

图PCSHOW(PTCLOUD)XLABEL('x(m)')ylabel('y(m)')Zlabel('z(m)') 标题(“检测到点云中的圆柱体”

图包含一个轴对象。带标题的轴对象检测到点云中的气缸包含类型散点的对象。

为气缸拟合设置最大点对西距离(5 mm)。

maxDistance = 0.005;

设置关注区域以限制搜索。

ROI = [0.4,0.6; -Inf,0.2; 0.1,inf];sampleIndices = findpointsinroi(ptcloud,roi);

设置方向约束。

参考值= [0,0,1];

检测圆柱云中的气缸并提取。

模型= PCFITCYLINDER(PTCLOUD,MAXDISTANCE,参考向量,...“样品界”,样品框);

绘制气缸。

抓住图(模型)

图包含一个轴对象。带有标题的轴对象检测到点云中的气缸包含2个类型散射的对象,表面。

输入参数

全部收缩

点云,指定为PointCloud目的。如果是普通的输入的属性ptcloud为空,该函数用值填充它,以满足拟合算法的要求。

最大距离距离圆柱的距离,指定为标量值。指定与您用于点云的单元一致的单元中的距离。

数据类型:单身的|双倍的

参考方向,指定为1 x-3矢量。

最大绝对距离,指定为标量值。最大角度距离以拟合圆柱体和参考方向之间的程度测量。

名称值参数

指定可选的逗号分隔对名称,价值参数。姓名是参数名称和价值是相应的值。姓名必须出现在引号中。您可以按任何顺序指定几个名称和值对参数NAME1,Value1,...,Namen,Valuen

例子:“样品界”,,,,[]

在输入点云中采样的点的线性索引,指定为逗号分隔对,由'样品指标'和列矢量。一个空的矢量意味着在勒索迭代期间安装气缸时,所有点都是候选者。如果指定点子集,则该函数通过仅对子集中的这些点进行采样来拟合模型。提供一部分点可以通过减少试验数来显着加快该过程的速度。您可以使用Findpointsinroi方法的方法PointCloud目的。

最大数量的随机试验来查找嵌入式,指定为逗号分隔对,由'maxnumtrials'和一个积极的整数。为了提高产出的鲁棒性,请增加此值。但是,这样做会增加其他计算。

查找最大嵌入数量的百分比,指定为逗号分隔对,由'信心'和一个数字标量(0 100)。为了提高产出的鲁棒性,请增加此值。但是,这样做会增加其他计算。

输出参数

全部收缩

气缸的几何模型,返回圆柱体模型目的。

当以下内容时,输出模型的系数设置为零

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

  • 该算法找不到足够的嵌入得分。

输入点云中嵌入点的线性索引,返回为列向量。

输入点云中离群点的线性索引返回为列向量。

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

算法

该函数返回描述气缸的几何模型。此函数使用M估计器样品共识(MSAC)算法来找到圆柱体。MSAC算法是随机样品共识(RANSAC)算法的变体。

适合算法pcfitcylinder功能需要点云正常。因此,如果普通的输入点云的属性为空,该功能填充了它。当功能填充普通的属性,它使用六个点适合本地气缸。如果六点不起作用,拟合失败,请考虑致电pcnormals功能使您可以选择要使用的点数。

参考

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

扩展功能

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

在R2015B中引入