MATLAB点云处理:可视化点云(pcshow | pcshowpair | pcpalyer | showShape)

Posted 借我十斤肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB点云处理:可视化点云(pcshow | pcshowpair | pcpalyer | showShape)相关的知识,希望对你有一定的参考价值。


MATLAB 点云处理模块提供了四种可视化函数,如下表

函数功能
pcshow()绘制三维点云
pcshowpair()可视化两点云之间的差异
pcpalyer()可视化三维点云数据流
showShape()在图像、视频或点云上显示形状

下面将对以上四个函数依次进行描述。

1 pcshow()

语法:

提供了 7 种重载函数

pcshow(ptCloud)
pcshow(xyzPoints)
pcshow(xyzPoints,color)
pcshow(xyzPoints,colorMap)
pcshow(filename)
pcshow(___,Name,Value)
ax = pcshow(___)

1.1 重载函数 pcshow(ptCloud)

使用存储在点云对象中的位置和颜色显示点,即原始点云数据的位置和颜色。
示例1: 可视化点云

clc;
clear;
pc = pcread('treeXYZRGB.pcd');	% 读入点云

% 可视化点云
pcshow(pc);
title('原色显示');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');

结果展示:

在这里插入图片描述

示例2: 用纹理映射绘制球面点云

代码:

clc;
clear;
numFaces = 1000;
[x,y,z] = sphere(numFaces);


% 可视化球体,使用默认颜色贴图
figure;
pcshow([x(:),y(:),z(:)]);
title('默认颜色贴图');
xlabel('X');
ylabel('Y');
zlabel('Z');
hold on;

% 加载并显示用于纹理贴图的图像
figure;
Im = im2double(imread('horse.jpg'));
imshow(Im);
hold on;

% 调整并翻转图像以映射坐标
J = flipud(imresize(Im,size(x)));
% 使用颜色纹理打印球体
figure;
pcshow([x(:),y(:),z(:)],reshape(J,[],3));
title('纹理贴图');
xlabel('X');
ylabel('Y');
zlabel('Z');
hold off;

结果展示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 pcshow(xyzPoints)

显示xyzPoints矩阵指定的点

示例3: 显示无颜色点云,默认高程 Z 渲染显示

代码:

clc;
clear;
pc = pcread('bunny.pcd');
xyzPoints=pc.Location;

pcshow(xyzPoints);
title('默认显示');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');

结果展示:
在这里插入图片描述

1.3 pcshow(xyzPoints,color)

显示XYZ点矩阵中包含的点,颜色由color指定。

示例4: 自定义颜色显示点云

代码:

clc;
clear;
pc = pcread('bunny.pcd');

pcshow(pc.Location,[0.2,0.7,0.5]);
title('自定义颜色显示');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');

结果展示:

在这里插入图片描述

1.4 其他重载函数

pcshow(xyzPoints,colorMap) — 显示XYZ点矩阵中包含的点,颜色由colorMap指定。

1.5 pcshow(filename) — 显示存储在文件名指定的文件中的点云。

1.6 pcshow(___,Name,Value) — 使用前面的任何语法,使用一个或多个名称、值对参数(Name-Value Pair Arguments)指定的附加选项。

1.7 ax = pcshow(___) — 返回打印轴。

1.5 输入输出参数详解

1.5.1 输入参数

ptCloud — Point cloud

点云,指定为点云对象。对象包含用于渲染点云的位置、强度和RGB颜色。

点云属性颜色渲染结果
Location only z z z 值映射到当前颜色贴图中的颜色值
Location and Intensity将强度映射到当前颜色贴图中的颜色值
Location and Color使用提供的颜色
Location, Intensity, and Color使用提供的颜色

filename — Point cloud filename

点云文件名,指定为字符向量或标量字符串。pcread必须支持该文件。pcshow调用pcread从文件中读取点云,但不将数据存储在MATLAB®工作区中。

xyzPoints — Point cloud x, y, and z locations

点云x、y和z位置,指定为M×3或M×N×3数字矩阵。xyzPoints数字矩阵包含M或M×N[x,y,z]个点。矩阵中的z值通常对应于深度或高程,决定了每个点的颜色。如果颜色字段为空,则函数将会按z值进行渲染。

color — Point cloud color

点的颜色,指定为以下颜色之一:
1×3 RGB颜色规格(颜色规格)矢量,
M×3矩阵
M×N×3矩阵

可以为所有点指定相同的颜色,也可以为每个点指定不同的颜色。将C设置为single或double时,RGB值的范围为[0,1]。将C设置为uint8时,值的范围在[0,255]之间。
在这里插入图片描述

colorMap — Point cloud color map

点的颜色,指定为以下颜色之一:
M×1矢量
M×N矩阵
在这里插入图片描述

Name-Value Pair Arguments

指定可选的逗号分隔的名称、值参数对。Name是参数Name,Value是对应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数,如Name1、Value1、…、NameN、ValueN。

例如:‘VerticalAxisDir’,‘Up’ sets the vertical axis direction to up.

MarkerSize — Diameter of marker

标记的直径,指定为正标量。该值指定点标记的近似直径。MATLAB图形将单位定义为点。大于6的标记大小会降低渲染性能。

VerticalAxis — Vertical axis

垂直轴,指定为“X”、“Y”或“Z”(默认)。重新加载保存的地物时,对地物执行的任何操作都会将垂直轴重置为z轴。

VerticalAxisDir — Vertical axis direction

垂直轴方向,指定为“向上”**(默认)**或“向下”。重新加载保存的地物时,对地物执行的任何操作都会将方向重置为向上方向。

Parent — Axes on which to display the visualization

显示可视化效果的轴,指定为轴对象。要创建Axes对象,请使用Axes功能。若要在新图形中显示可视化效果,请保留未指定的“Parent”。

1.5.2 输出参数

ax — Plot axes

打印轴,作为轴图形对象返回。
可以将点云查看器的默认旋转中心设置为围绕轴中心或围绕点旋转

1.6 提示

为了提高性能,通过单击鼠标旋转、平移或放大或缩小时,pcshow会自动对渲染的点云进行下采样。使用鼠标滚动机制放大或缩小时不应用下采样。使用数据提示(data tips)时,不应用下采样。降采样仅用于渲染点云,不影响保存的点。

2 pcshowpair()

提供 3 种重载函数

pcshowpair(ptCloudA,ptCloudB)
pcshowpair(ptCloudA,ptCloudB,Name,Value)
ax = pcshowpair(___)

2.1 重载函数 pcshowpair(ptCloudA,ptCloudB)

创建描述两个输入点云之间差异的可视化效果。使用点云A的洋红和点云B的绿色混合显示差异。

示例2: 可视化两点云之间的差异

代码:

clc;
clear;
pc1=pcread('treeXYZ1.pcd');
pc2=pcread('treeXYZ2.pcd');

% 默认,以Z轴为垂直轴,以向上(Up)为垂直轴方向进行显示
figure;
pcshowpair(pc1,pc2);%,
title('两点云之间的差异(默认:Z↑)')
xlabel('X(m)')
ylabel('Y(m)')
zlabel('Z(m)')
hold on;

% 以Y轴为垂直轴,以向上(Up)为垂直轴方向进行显示
figure;
pcshowpair(pc1,pc2,'VerticalAxis','Y','VerticalAxisDir','Up');
hold on;
title('两点云之间的差异(Y↑)')
xlabel('X(m)')
ylabel('Y(m)')
zlabel('Z(m)')

% 以X轴为垂直轴,以向下(Down)为垂直轴方向进行显示
figure;
pcshowpair(pc1,pc2,'VerticalAxis','X','VerticalAxisDir','Down');
hold off;
title('两点云之间的差异(X↓)')
xlabel('X(m)')
ylabel('Y(m)')
zlabel('Z(m)')

结果展示:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 其他重载函数

pcshowpair(ptCloudA,ptCloudB,Name,Value) — 使用由一个或多个名称、值对参数指定的其他选项可视化差异。

ax = pcshowpair(___) — 使用前面的任何语法将绘图轴返回到差异的可视化。

2.3 输入输出参数详解

2.3.1 输入参数

ptCloudA — Point cloud

点云A,指定为点云对象。当点云不包含颜色信息时,该函数使用纯品红显示ptCloudA。

ptCloudB — Point cloud

点云B,指定为点云对象。当点云不包含颜色信息时,该函数使用纯绿色显示ptCloudB。

Name-Value Pair Arguments

指定可选的逗号分隔的名称、值参数对。Name是参数Name,Value是对应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数,如Name1、Value1、…、NameN、ValueN。

例如: ‘VerticalAxisDir’,‘Up’ sets the vertical axis direction to up.

MarkerSize — Diameter of marker

点标记的近似直径,指定为正标量。单位是点。大于6的标记大小会降低渲染性能。

VerticalAxis — Vertical axis

垂直轴,指定为“X”、“Y”或“Z”(默认)。重新加载保存的地物时,对地物执行的任何操作都会将垂直轴重置为z轴。

VerticalAxisDir — Vertical axis direction

垂直轴方向,指定为“向上”**(默认)**或“向下”。重新加载保存的地物时,对地物执行的任何操作都会将方向重置为向上方向。

Parent — Axes on which to display the visualization

显示可视化效果的轴,指定为轴对象。要创建Axes对象,请使用Axes功能。若要在新图形中显示可视化效果,请保留未指定的“Parent”。

2.3.2 输出参数

ax — Plot axes

打印轴,作为轴图形对象返回。
可以将点云查看器的默认旋转中心设置为围绕轴中心或围绕点旋转

3 pcpalyer()

4 showShape()


未完待续…

以上是关于MATLAB点云处理:可视化点云(pcshow | pcshowpair | pcpalyer | showShape)的主要内容,如果未能解决你的问题,请参考以下文章

matlab点云处理函数

如何在 pcshow Matlab 中设置视角?

MATLAB教程案例48初识点云——pcshow,pointCloud,pcwrite,pcread,pcdenoise等点云基本操作函数学习

MATLAB点云处理:点云赋色 | 显示自定义颜色的点云

matlab那个版本可以进行点云

matlab对点云旋转平移