主要内容

pctransform

转换3d点云

描述

例子

ptCloudOut= pctransform (ptCloudIn,tform)应用指定的三维仿射变换,tform到点云,ptCloudIn。变换可以是刚性变换、相似变换或仿射变换。

例子

ptCloudOut= pctransform (ptCloudIn,D)应用位移场D到点云。使用位移场的点云变换定义了关于点云中每个点的平移。

例子

全部折叠

读一个点云。

ptCloud = pcread (“teapot.ply”);

绘制点云。

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

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

rotationAngles = [0 0 45];Translation = [0 0 0];tform = rigidtform3d (rotationAngles、翻译);

变换点云。

ptCloudOut = pctransform (ptCloud tform);

绘制变换后的点云。

图pcshow (ptCloudOut)包含(“X”) ylabel (“Y”) zlabel (“Z”)

本例对三维点云应用刚性变换(旋转)和非刚性变换(剪切)。

读取一个点云到工作区。

ptCloud = pcread (“teapot.ply”);

绘制原始的3d点云。

图1 =图;axes1 =轴(父=图1);pcshow (ptCloud、家长= axes1 AxesVisibility =“上”);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(三维点云的字形大小= 14)

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

3-D点云旋转

创建一个刚性转换对象,定义沿z设在。

rotationAngles = [0 0 45];Translation = [0 0 0];tform = rigidtform3d (rotationAngles、翻译);

变换点云。

ptCloudOut1 = pctransform (ptCloud tform);

绘制旋转的点云。

figure2 =图;axes2 =轴(父= figure2);pcshow (ptCloudOut1、家长= axes2 AxesVisibility =“上”);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题({“3d点云的旋转”},字形大小= 14)

图中包含一个坐标轴对象。标题为旋转的3-D点云坐标轴对象包含一个类型为scatter的对象。

3-D点云剪切

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

A = [1 0.75 0.75 0;0 1 0 0;0 0 1 0;0 0 0 1];tform = affinetform3d(一个);

变换点云。

ptCloudOut2 = pctransform (ptCloud tform);

绘制变换后的点云。

图3 =图;axes3 =轴(父=图3);pcshow (ptCloudOut2、家长= axes3 AxesVisibility =“上”);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题({“剪切3d点云”},字形大小= 14)

图中包含一个坐标轴对象。带有标题剪切的3-D点云坐标轴对象包含一个类型为scatter的对象。

读取一个点云到工作区。

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。

indices = 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”);标题(“原创3d点云”)

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

输入参数

全部折叠

点云,指定为pointCloud对象。

三维几何变换,指定为rigidtform3d,simtform3d,或affinetform3d对象。看到指定变换矩阵了解如何设置仿射3d的详细信息tform输入。

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

数据类型:|

输出参数

全部折叠

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

扩展功能

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

GPU的代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

版本历史

介绍了R2015a

全部展开

Baidu
map