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教程案例48初识点云——pcshow,pointCloud,pcwrite,pcread,pcdenoise等点云基本操作函数学习