主要内容

findPointsInROI

在点云中查找一个感兴趣区域内的积分

描述

指数= findpointsinroi(Ptcloud.roi在输入点云中返回感兴趣区域(ROI)内的点。使用基于KD-Tree的搜索算法获得指定ROI内的点。

指数= findpointsinroi(Ptcloud.roicamMatrix返回输入点云的ROI区域内的点。输入点云是由深度相机生成的有组织的点云。利用快速近似邻域搜索算法,得到指定感兴趣区域内的点。

该功能使用相机投影矩阵camMatrix要了解相邻点之间的关系,因此加快搜索。然而,与基于KD树的方法相比,结果具有较低的精度。

注意

  • 该语法只支持由RGB-D传感器产生万博1manbetx的有组织的点云数据。

  • 您可以使用估计估计给定点云数据的相机投影矩阵。

例子

全部收缩

将点云数据读入工作区。

ptCloud = pcread ('茶壶.ply');

在范围内定义长方体投资单XyZ.输入点云的坐标。

ROI = [-2 2 -2 2 2.4 3.5];

找出位于长方体感兴趣区域内的点的指数。

indices = findpointsinroi(ptcloud,Roi);

选择位于长方体ROI中的点并存储为点云对象。

ptcloudb = select(ptcloud,索引);

在指定的ROI中显示输入点云和点云。

figure pcshow(ptCloud.Location,[0.5 0.5 0.5]) holdpcshow (ptCloudB.Location'r');传奇('点云''在ROI中的点'“位置”'southoutside'“颜色”,[1 1 1])等

通过使用相机投影矩阵在有组织的点云数据中查找Cuboid ROI中的点。从采样点云数据点及其相应的图像点坐标计算摄像机投影矩阵。

将有组织的点云数据加载到工作区中。通过使用Kinect深度传感器生成点云。

ld = load('Object3d.mat');ptcloud = ld.ptcloud;

指定对点云数据采样的步长。

stepSize = 100;

示例输入点云并将采样的3-D点坐标存储为点云对象。

indices = 1:步骤化:ptcloud.count;tempptcloud = select(ptcloud,indices);

从采样点云中删除无效点。

[tempPtCloud, validIndices] = removeInvalidPoints (tempPtCloud);

从输入点云获取3-D世界点坐标。

WorldPoints = tempptcloud.location;

求输入点云的三维点坐标对应的二维图像坐标。

[y,x] = IND2SUB([大小(PTCloud.Location,1),大小(PTCloud.Location,2)],指数);imagePoints = [x(validindices)'y(validindices)'];

从图像和世界点坐标估计相机投影矩阵。

cammatrix = rightatecameramatrix(Verippoints,WorldPoints);

在范围内指定长方体ROIXyZ.输入点云的坐标。

roi = [0.3 0.7 0 0.4 0.1 0.3];

查找位于长方体ROI内的点云数据的指数。

indices = findpointsinroi(ptcloud,roi,cammatrix);

使用点云方法选择获取ROI内点的点云数据。

ptcloudb = select(ptcloud,索引);

显示输入点云和长方体感兴趣区域内的点。

图pcshow(ptcloud)保持pcshow (ptCloudB.Location'r');传奇('点云''ROI内的点'“位置”'southoutside'“颜色”,[1 1 1])等

输入参数

全部收缩

点云,指定为pointCloud对象。

感兴趣的区域,指定为六元素的形式向量[XMIN.xmaxyminymax.zminZmax.),地点:

  • XMIN.xmax是最小和最大限制X分别设在。

  • yminymax.是最小和最大限制y分别设在。

  • zminZmax.是最小和最大限制Z.分别设在。

相机投影矩阵,指定为一个4 × 3矩阵,它将3-D世界点映射到2-D图像点。你可以找到camMatrix通过使用估计功能。

输出参数

全部收缩

存储点的指数,作为列向量返回。矢量包含存储在点云中的ROI点的线性指标。

参考文献

[1] Muja,M.和David G. Lowe。“具有自动算法配置的快速近似邻居”。在VISAPP计算机视觉理论与应用国际会议。2009.第331-340页。

扩展能力

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

也可以看看

||

介绍了R2015a