文档

pctransform

将三维点云

描述

例子

ptCloudOut= pctransform (ptCloudIn,tform)适用于指定的三维仿射变换,tform点云,ptCloudIn。转换可以是一个刚性的或非刚性的变换。

例子

ptCloudOut= pctransform (ptCloudIn,D)应用位移场D点云。点云转换使用位移场定义翻译对每个点的点云。

例子

全部折叠

这个例子显示了一个三维点云的仿射变换。指定的变换可以严格的或非刚性的变换。所示的转换包括旋转(刚性变换)和剪切(非刚性变换)的输入点云。

读点云到工作区中。

ptCloud = pcread (“teapot.ply”);

旋转的三维点云

创建一个仿射变换对象,定义了一个45度旋转沿z设在。

= (cos(π/ 4)sin(π/ 4)0 0;sin(π/ 4)因为(π/ 4)0 0;0 0 1 0;0 0 0 1);tform = affine3d(一个);

将点云。

ptCloudOut1 = pctransform (ptCloud tform);

三维点云的剪切

创建一个仿射变换对象定义的剪切x设在。

= (1 0 0 0;0.75 - 1 0 0;0.75 0 1 0;0 0 0 1);tform = affine3d(一个);

将点云。

ptCloudOut2 = pctransform (ptCloud tform);

显示原始的和仿射变换三维点云

绘制原始三维点云。

图1 =图(“WindowState”,“正常”);axes1 =轴(“父”,图1);pcshow (ptCloud“父”,axes1);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(三维点云的,“字形大小”14)

%画出旋转和剪切仿射转换三维点云。figure2 =图(“WindowState”,“正常”);axes2 =轴(“父”,figure2);pcshow (ptCloudOut1“父”,axes2);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题({三维点云的旋转},“字形大小”14)

图3 =图(“WindowState”,“正常”);axes3 =轴(“父”,图3);pcshow (ptCloudOut2“父”,axes3);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题({三维点云的剪切},“字形大小”14)

读点云到工作区中。

ptCloud = pcread (“teapot.ply”);

创建一个位移场D同样大小的点云。

D = 0(大小(ptCloud.Location));

设置位移场值x设在第一一半的点到7。

pthalf = ptCloud.Count / 2;D (1: pthalf, 1) = 7;

提取指数的内点(ROI)使用pointCloud方法findNeighborsInRadius。沿着设置位移场值x- - - - - -,y- - - - - -,z设在ROI到4点,4,分别和2。

指数= findNeighborsInRadius (ptCloud] [0 0 3.1, 1.5);D(指标,1:2)= 4;D(下标3)= 2;

使用位移场变换的点云。

ptCloudOut = pctransform (ptCloud D);

显示原始和点云转换。

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

图pcshow (ptCloudOut)包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(三维点云转换使用位移场的)

输入参数

全部折叠

点云,指定为一个pointCloud对象。

三维仿射几何变换,指定为一个affine3d对象。看到定义变换矩阵(图像处理工具箱)有关如何设置tform输入。

位移场,指定为3或——- - - - - -N3数组。位移场是一组位移向量指定大小和方向的翻译为每个点的点云。位移场的大小必须一样的大小位置财产的pointCloud对象。

数据类型:|

输出参数

全部折叠

将点云,作为一个返回pointCloud对象。转换适用于点的坐标和法向量。

扩展功能

介绍了R2015a