主要内容

cuboidModel

参数长方体模型

描述

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

创建

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

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

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

描述

例子

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

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

例子

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

属性

全部展开

此属性是只读的。

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

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

  • xlenylen,zlen指定长方体的长度沿x-,y- - - - - -,z-axis,在应用旋转之前。

  • 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函数。函数将长方体参数存储为cuboidModel对象。

将点云数据读取到工作区中。

ptCloud = pcread (“highwayScene.pcd”);

在指定的感兴趣区域(ROI)内搜索点云。创建一个只包含被检测点的点云。

ROI = [-30 30 -20 30 -8 13];= findPointsInROI (ptCloud roi);ptCloudIn =选择(ptCloud);

绘制被测点的点云。

图pcshow (ptCloudIn.Location)包含(“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)包含(“X (m)”) ylabel (“Y (m)”) zlabel (“Z (m)”)标题(“在点云中检测长方体”

在点云中绘制长方体。

持有情节(模型)

控件的内部属性cuboidModel对象。

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

在点云的簇周围拟合长方体包围盒。

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

data =负载(“drivingLidarPoints.mat”);

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

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

图包含一个轴对象和一个uipanel类型的对象。标题为“输入点云”的轴对象包含一个散点类型的对象。

分割接地面。形象化分割的地平面。

maxDistance = 0.3;referenceVector = [0 0 1];[~,内围层,离群值]= pcfitplane (ptCloudIn, maxDistance referenceVector);ptCloudWithoutGround =选择(ptCloudIn、离群值“OutputSize”“全部”);hSegment =图;面板= uipanel (“父”hSegment,“写成BackgroundColor”, 0 0 0);ax =轴(“父”面板,“颜色”, 0 0 0);pcshowpair (ptCloudIn ptCloudWithoutGround,“父”ax)传说(“地面区域”“Non-Ground地区”“输入TextColor”, [1 1 1])分割地平面的

图包含一个轴对象和一个uipanel类型的对象。标题为分割地平面的轴对象包含2个散点类型的对象。这些物体分别代表地面区域和非地面区域。

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

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

适合每个集群的边界框,可视化为橙色高亮。

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

图包含一个轴对象和一个uipanel类型的对象。标题为“拟合边界盒”的轴对象包含4个类型为散点、补丁的对象。

扩展功能

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

介绍了R2020b