主要内容

pctransform

将三维点云

描述

例子

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];翻译= (0 0 0);tform = rigidtform3d (rotationAngles、翻译);

将点云。

ptCloudOut = pctransform (ptCloud tform);

转换后的点云。

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

这个例子适用于刚性变换(旋转)和非刚性的转换(剪切)三维点云。

读点云到工作区中。

ptCloud = pcread (“teapot.ply”);

绘制原始三维点云。

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

图包含一个坐标轴对象。坐标轴对象标题三维点云,包含X, Y ylabel包含一个散射类型的对象。

旋转的三维点云

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

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

将点云。

ptCloudOut1 = pctransform (ptCloud tform);

绘制旋转点云。

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

图包含一个坐标轴对象。标题旋转的轴对象三维点云,包含X, Y ylabel包含一个散射类型的对象。

三维点云的剪切

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

0.75 - 0.75 A = [1 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”);标题({三维点云的剪切},字形大小= 14)

图包含一个坐标轴对象。标题剪切的坐标轴对象三维点云,包含X, Y ylabel包含一个散射类型的对象。

读点云到工作区中。

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”);标题(原始三维点云的)

图包含一个坐标轴对象。坐标轴对象与标题原创三维点云,包含X, Y ylabel包含一个散射类型的对象。

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

图包含一个坐标轴对象。坐标轴对象与标题转换三维点云使用位移场,包含X, Y ylabel包含一个散射类型的对象。

输入参数

全部折叠

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

三维几何变换,指定为一个rigidtform3d,simtform3d,或affinetform3d对象。看到指定变换矩阵有关如何设置一个仿射3 dtform输入。

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

数据类型:|

输出参数

全部折叠

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

扩展功能

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

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

版本历史

介绍了R2015a

全部展开