主要内容

pcfitplane

平面与三维点云拟合

描述

模型= pcfitplane (ptCloudInmaxDistance将平面与点云拟合,该点云具有从内嵌点到平面的最大允许距离。该函数返回描述该平面的几何模型。

该函数使用m估计样本一致性(MSAC)算法来寻找平面。MSAC算法是RANdom SAmple Consensus (RANSAC)算法的一种变体。

模型= pcfitplane (ptCloudInmaxDistancereferenceVector拟合平面到点云,点云有额外的方向约束,由1 × 3指定referenceVector输入。

例子

模型= pcfitplane (ptCloudInmaxDistancereferenceVectormaxAngularDistance将平面与具有指定的最大角距离的点云拟合。

模型inlierIndicesoutlierIndices) = pcfitplane (ptCloudInmaxDistance另外,返回点云输入中的内嵌点和离群点的线性索引。

___meanError) = pcfitplane (ptCloudInmaxDistance另外,使用前面的任何语法返回inlier点到模型的距离的平均误差。

例子

___) = pcfitplane (ptCloudInmaxDistance名称,值使用一个或多个指定的附加选项名称,值对参数。

例子

全部折叠

加载点云。

负载(“object3d.mat”

显示和标记点云。

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

图中包含一个轴对象。标题为Original Point Cloud的轴对象包含一个类型为scatter的对象。

设置平面拟合的最大点到平面的距离(2cm)。

maxDistance = 0.02;

设平面的法向量。

referenceVector = [0, 0, 1];

设置最大角度距离为5度。

maxAngularDistance = 5;

检测第一个平面,即表,并从点云中提取它。

[model1, inlierIndices outlierIndices] = pcfitplane (ptCloud,...maxDistance、referenceVector maxAngularDistance);plane1 =选择(ptCloud inlierIndices);remainPtCloud =选择(ptCloud outlierIndices);

设置感兴趣的区域限制搜索第二个平面,左墙。

roi =[正无穷,0.4,正,负,正);sampleIndices = findPointsInROI (remainPtCloud roi);

检测左壁并从剩余的点云中提取。

[model2, inlierIndices outlierIndices] = pcfitplane (remainPtCloud,...maxDistance,“SampleIndices”, sampleIndices);plane2 =选择(remainPtCloud inlierIndices);remainPtCloud =选择(remainPtCloud outlierIndices);

画出两个平面和其余的点。

图pcshow (plane1)标题(第一架飞机的

图中包含一个轴对象。标题为First Plane的轴对象包含一个类型为scatter的对象。

图pcshow (plane2)标题(第二架飞机的

图中包含一个轴对象。标题为Second Plane的axis对象包含一个类型为scatter的对象。

图pcshow (remainPtCloud)标题(“剩下的点云”

图中包含一个轴对象。标题为Remaining Point Cloud的axis对象包含一个类型为scatter的对象。

输入参数

全部折叠

点云,指定为pointCloud对象。

从内嵌点到平面的最大距离,指定为标量值。指定与点云使用的单位一致的单位距离。

数据类型:|

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

数据类型:|

拟合平面的法向量与参考方向之间的最大绝对角距离,指定为以度数表示的标量值。

数据类型:|

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“SampleIndices”[]

输入点云中待采样点的线性指数,指定为逗号分隔对,由'SampleIndices'和列向量。空向量表示在RANSAC迭代中所有点都是拟合平面的候选样本。当您指定一个子集时,只有子集中的点被抽样以适合模型。

提供分数子集可以显著加快过程并减少试验次数。可以使用findPointsInROI的方法pointCloud对象。

查找嵌套的最大随机试验数,指定为逗号分隔对,包含'MaxNumTrials和一个正整数。增加这个值会使输出更健壮,但会增加额外的计算。

查找最大嵌套数的置信百分比,指定为逗号分隔对,由'信心'和一个范围为[0 100]的数字标量。增加这个值会使输出更健壮,但会增加额外的计算。

输出参数

全部折叠

几何模型的平面,返回作为planeModel对象。

当输入点云没有包含足够的有效点,或者当函数找不到足够的嵌套点时,输出模型的系数设为零。

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

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

inlier点到模型的距离的平均误差,以标量值返回。

参考文献

Torr, P. H. S.和A. Zisserman。“MLESAC:一种新的用于估计图像几何的鲁棒估计器”。计算机视觉与图像理解.2000.

扩展功能

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

介绍了R2015b