主要内容

pctransform.

转换3-D点云

描述

例子

ptCloudOut= pctransform (ptCloudIn,tform.)应用指定的三维仿射变换,tform.对于点云,ptCloudIn。变换可以是刚性变换也可以是非刚性变换。

例子

ptCloudOut= pctransform (ptCloudIn,D)应用位移场D指向点云。点云转换使用位移字段定义相对于点云中的每个点的平移。

例子

全部折叠

读点云。

ptcloud =缺陷(“teapot.ply”);

绘制点云。

图pcshow (ptCloud)包含(“X”)ylabel(“Y”) zlabel ('z')

使用沿z轴旋转45度旋转的变换对象。

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

变换点云。

ptCloudOut = pctransform (ptCloud tform);

绘制转换后的点云。

图pcshow(ptcloudout)xlabel(“X”)ylabel(“Y”) zlabel ('z')

此示例显示了3-D点云的仿射变换。指定的前向变换可以是刚性或非侵略性的变换。所示的变换包括输入点云的旋转(刚性变换)和剪切(非rigid变换)。

读取一个点云进入工作区。

ptcloud =缺陷(“teapot.ply”);

旋转三维点云

创建一个仿射变换对象,用于沿着沿着45度旋转的仿射变换对象z设在。

A = [cos(/4) sin(/4) 0 0;-sin(/4) cos(/4) 0 0;0 0 1 0;0 0 0 1];tform = actifine3d(a);

变换点云。

ptcloudout1 = pctransform(ptcloud,tform);

三维点云的剪切

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

A = [1 0 0 0;0.75 1 0 0;0.75 0 1 0;0 0 0 1];tform = actifine3d(a);

变换点云。

ptCloudOut2 = pctransform (ptCloud tform);

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

绘制原始的三维点云。

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

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

图3 =图(“WindowState”,“正常”);轴3 =轴('父母',图3);pcshow(ptcloudout2,'父母', axes3);包含(“X”);ylabel (“Y”);zlabel ('z');标题({'3-D点云的剪切'},“字形大小”14)

读取一个点云进入工作区。

ptcloud =缺陷(“teapot.ply”);

创建一个位移场D和点云一样大。

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

设置位移字段的值x- 对于7点的前半部分到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)xlabel(“X”);ylabel (“Y”);zlabel ('z');标题(“使用位移场转换三维点云”)

输入参数

全部折叠

点云,指定为apointcloud.对象。

三维几何变换,指定为arigid3d对象或一个affine3d对象。看到定义变换矩阵关于如何建立仿射3d的详细信息tform.输入。

位移字段,指定为任一- 3或3-通过-N3数组。位移场是一组位移向量,它指定了点云中每个点平移的大小和方向。位移场的大小必须与位移场的大小相同位置财产的财产pointcloud.对象。

数据类型:|

输出参数

全部折叠

转换点云,返回为pointcloud.对象。转换适用于点和正常载体的坐标。

扩展功能

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

在R2015A介绍