主要内容

cuboidModel

参数长方体模型

描述

cuboidModel对象存储参数化长方体模型的参数。创建一个cuboidModel对象,您可以使用对象函数提取长方体的角点,以及长方体内的点。的输出用长方体模型来存储pcfitcuboid函数。它是一个形状拟合函数,在点云上拟合一个长方体。

创建

有两种方法来创建cuboidModel对象。

  • 中指定长方体参数来创建长方体模型cuboidModel函数。

  • 方法在点云上拟合长方体模型pcfitcuboid函数。

描述

例子

模型= cuboidModel (参数个数从1 × 9的输入向量构造一个参数长方体模型,参数个数

模型= pcfitcuboid (ptCloudIn在输入点云数据上拟合一个长方体。的pcfitcuboid函数将长方体的属性存储在参数化的长方体模型对象中,模型

例子

模型= pcfitcuboid (ptCloudIn指数在选定的点集上拟合一个长方体,指数,在输入点云中。

属性

全部展开

此属性是只读的。

长方体模型参数,存储为形式为[的九元行向量xctryctrzctrxlenylenzlenx腐烂y腐烂z腐烂].

  • xctryctr,zctr指定长方体的中心。

  • xlenylen,zlen的长方体的长度x- - - - - -,y- - - - - -,z-轴,分别在应用旋转之前。

  • x腐烂y腐烂,z腐烂指定长方体沿的旋转角度x- - - - - -,y- - - - - -,z分别设在。从它们对应轴的正向看,这些角都是顺时针正的。

该图显示了这些值如何确定长方体的位置。

参数指定这些参数参数个数输入参数。

数据类型:|

此属性是只读的。

长方体的中心,存储为形式为[的三元素行向量xctryctrzctr].向量中长方体中心的三维坐标x- - - - - -,y- - - - - -,z分别设在。

属性派生自参数财产。

数据类型:|

此属性是只读的。

长方体的尺寸,存储为形式为[的三元素行向量xlenylenzlen].这个向量包含了长方体的长度x- - - - - -,y- - - - - -,z分别设在。

属性派生自Paramareters财产。

数据类型:|

此属性是只读的。

长方体的方向,存储为形式为[x腐烂y腐烂z腐烂,以度为单位。这个向量包含了长方体沿x- - - - - -,y- - - - - -,z分别设在。

属性派生自Paramareters财产。

数据类型:|

对象的功能

getCornerPoints 得到长方体模型的角点
findPointsInsideCuboid 求出由长方体模型包围的点
情节 图长方体模型

例子

全部折叠

在点云中检测一个长方体pcfitcuboid函数。函数将长方体参数存储为acuboidModel对象。

将点云数据读入工作空间。

ptCloud = pcread(“highwayScene.pcd”);

在指定的感兴趣区域(ROI)内搜索点云。只创建检测到的点云。

ROI = [-30 30 -20 30 -8 13];in = findPointsInROI(ptCloud,roi);ptCloudIn = select(ptCloud,in);

绘制被检测点的点云。

图pcshow(ptCloudIn.Location) xlabel(“X (m)”) ylabel (“Y (m)”) zlabel (“Z (m)”)标题(“ROI检测点”

在点云中查找指定ROI中的点的索引。

ROI = [9.6 13.8 7.9 9.3 -2.5 3];sampleIndices = findPointsInROI(ptCloudIn,roi);

将长方体与点云中所选的点集拟合。

模型= pcfitcuboid(ptCloudIn,sampleIndices);图pcshow(ptCloudIn.Location) xlabel(“X (m)”) ylabel (“Y (m)”) zlabel (“Z (m)”)标题(“在点云中探测长方体”

在点云中画出长方体。

持有情节(模型)

控件的内部属性cuboidModel对象。

模型
参数:[11.4873 8.5997 -1.6138 3.6713 1.3220 1.7576 0 0.9999]中心:[11.4873 8.5997 -1.6138]尺寸:[3.6713 1.3220 1.7576]方向:[0 0 0.9999]

在点云中的群集周围拟合长方体边界框。

将点云数据加载到工作区中。

数据=负载(“drivingLidarPoints.mat”);

从点云中定义并裁剪感兴趣的区域(ROI)。可视化点云所选的ROI。

ROI = [-40 40 -6 9 -2 1];in = findPointsInROI(data.ptCloud,roi);ptCloudIn = select(data.ptCloud,in);Hcluster =图;面板= uipanel(“父”hcluster,“写成BackgroundColor”,[0 0 0]);Ax = axes(“父”面板,“颜色”,[0 0 0]);pcshow (ptCloudIn“MarkerSize”30岁的“父”ax)标题(“输入点云”

图中包含一个axes对象和一个uipanel类型的对象。标题为Input Point Cloud的axis对象包含一个散点类型的对象。

分割接地面。可视化分割的地平面。

maxDistance = 0.3;referenceVector = [0 0 1];[~,inliers,outliers] = pcfitplane(ptCloudIn,maxDistance,referenceVector);ptCloudWithoutGround = select(ptclouddin,outliers,“OutputSize”“全部”);hSegment =图;面板= uipanel(“父”hSegment,“写成BackgroundColor”,[0 0 0]);Ax = axes(“父”面板,“颜色”,[0 0 0]);pcshowpair (ptCloudIn ptCloudWithoutGround,“父”ax)传说(“地面区域”“Non-Ground地区”“输入TextColor”,[1 1 1])标题(“分段地平面”

图中包含一个axes对象和一个uipanel类型的对象。标题为分段地平面的坐标轴对象包含两个散点类型的对象。这些对象表示地面区域,非地面区域。

将点云的非地面区域分割成簇。可视化分割的点云。

distThreshold = 1;[labels,numClusters] = pcsegdist(ptCloudWithoutGround,distThreshold);labelColorIndex =标签;hCuboid =图;面板= uipanel(“父”hCuboid,“写成BackgroundColor”,[0 0 0]);Ax = axes(“父”面板,“颜色”,[0 0 0]);pcshow (ptCloudIn。位置、labelColorIndex“父”ax)标题(“设置边界框”)举行

在每个集群上安装边界框,以橙色高光显示。

i = 1:numClusters idx = find(labels == i);model = pcfitcuboid(ptCloudWithoutGround,idx);情节(模型)结束

图中包含一个axes对象和一个uipanel类型的对象。标题为Fitting Bounding Boxes的axis对象包含4个类型为scatter、patch的对象。

扩展功能

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

在R2020b中引入