主要内容

pctransform

变换三维点云

描述

例子

ptCloudOut= pctransform (ptCloudIntform应用指定的三维仿射变换,tform到点云,ptCloudIn.转换可以是刚性转换或非刚性转换。

例子

ptCloudOut= pctransform (ptCloudInD应用位移场D到点云。使用位移场的点云变换定义了相对于点云中每个点的平移。

例子

全部折叠

读点云。

ptCloud=pcread(“teapot.ply”);

绘制点云。

图pcshow (ptCloud)包含(“X”)伊拉贝尔(“是的”) zlabel (“Z”

图中包含一个轴对象。axis对象包含一个散点类型的对象。

创建沿z轴旋转45度的变换对象。

θ=π/ 4;Rot = [cos sin 0;-sin(θ)cos(θ)0;0 0 1);Trans = [0,0,0];tform = rigid3d(腐烂,反式);

转换点云。

ptCloudOut = pctransform (ptCloud tform);

绘制转换后的点云。

图pcshow(ptCloudOut)xlabel(“X”)伊拉贝尔(“是的”) zlabel (“Z”

图中包含一个轴对象。axis对象包含一个散点类型的对象。

此示例显示三维点云的仿射变换。指定的正向变换可以是刚性变换或非刚性变换。显示的变换包括输入点云的旋转(刚性变换)和剪切(非刚性变换)。

将点云读入工作区。

ptCloud=pcread(“teapot.ply”);

3-D点云旋转

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

A = [cos(/4) sin(/4) 0 0;sin(/4) cos(/4) 0 0;0 0 1 0;0 1];tform=affine3d(A);

转换点云。

ptCloudOut1=pctransform(ptCloud,tform);

三维点云的剪切

创建一个仿射变换对象,它定义沿着x设在。

A = [1 0 0 0;0.75 1 0 0;0.75 0 1 0;0 1];tform=affine3d(A);

转换点云。

ptCloudOut2 = pctransform (ptCloud tform);

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

绘制原始的三维点云。

图1=图(“WindowState”“正常”);axes1 =轴(“家长”,图1);pcshow(云端),“家长”, axes1);包含(“X”);ylabel (“是的”);zlabel (“Z”);头衔(三维点云的“字形大小”14)

图中包含一个轴对象。标题为3d点云的轴对象包含一个散点类型的对象。

%绘制旋转和剪切仿射变换的三维点云。图2=图(“WindowState”“正常”);axes2 =轴(“家长”, figure2);pcshow (ptCloudOut1“家长”, axes2);包含(“X”);ylabel (“是的”);zlabel (“Z”); 头衔({“三维点云的旋转”},“字形大小”14)

图中包含一个轴对象。标题旋转为三维点云的轴对象包含“散布”类型的对象。

图3 =图(“WindowState”“正常”);轴3=轴(“家长”,图3);pcshow(ptCloudOut2,“家长”,axes3);xlabel(“X”);ylabel (“是的”);zlabel (“Z”); 头衔({“三维点云剪切”},“字形大小”14)

图中包含一个轴对象。标题为“三维点云剪切”的轴对象包含一个散点类型的对象。

将点云读入工作区。

ptCloud=pcread(“teapot.ply”);

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

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

沿着设置位移字段值x-轴的上半部分为7点。

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

使用点云方法findNeighborsInRadius.沿。设置位移字段值x-,y- - - - - -,z-轴表示ROI内的点,分别为4、4和-2。

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

使用位移场转换点云。

ptCloudOut = pctransform (ptCloud D);

显示原始和转换的点云。

图pcshow (ptCloud)包含(“X”);ylabel (“是的”);zlabel (“Z”);头衔(“原始3d点云”

图中包含一个轴对象。标题为“原始三维点云”的轴对象包含一个散点类型的对象。

图pcshow(ptCloudOut)xlabel(“X”);ylabel (“是的”);zlabel (“Z”);头衔(“使用位移场转换的三维点云”

图中包含一个axes对象。标题为使用位移场转换的三维点云的axes对象包含一个散射类型的对象。

输入参数

全部折叠

点云,指定为点云对象。

三维几何变换,指定为rigid3d对象或一个affine3d对象。看到定义变换矩阵有关如何设置仿射3d的细节tform输入。

位移字段,指定为-B-3或A-借-N-by-3数组。位移场是一组位移向量,用于指定点云中每个点的平移幅度和方向。位移场的大小必须与点云的大小相同位置财产点云对象。

数据类型:|

输出参数

全部折叠

变换点云,返回为点云对象。转换适用于点的坐标及其法向量。

扩展功能

C / c++代码生成
使用Matlab®编码器生成C和C++代码™.

GPU的代码生成
使用GPU编码器为NVIDIA®GPU生成CUDA®代码™.

R2015a中引入