2026a

# pcshowpair


可视化两个点云之间的差异

函数库: TyImageProcessing

# 语法

pcshowpair(ptCloudA,ptCloudB)

pcshowpair(ptCloudA,ptCloudB;Name=Value)

ax = pcshowpair(___)

# 说明

pcshowpair(ptCloudA,ptCloudB) 创建一个可视化图形,展示两个输入点云之间的差异。差异通过将点云 A 用洋红色表示、点云 B 用绿色表示并进行混合来显示。示例


pcshowpair(ptCloudA,ptCloudB;Name=Value) 除了使用先前语法中的任意参数组合外,还可使用一个或多个名称-值参数来指定选项。例如, pchowpair(ptCloudA,ptCloudB;BackgroundColor="yellow"),将图形的背景颜色设置为黄色。


ax = pcshowpair(___) 使用上述任意一种语法调用时,会返回用于显示差异的绘图坐标轴。

# 示例

可视化两个点云之间的差异

加载在家庭环境中使用 Kinect 设备采集的两个点云数据。

using TyImageProcessing
using TyBase
using TyPlot

load(pkgdir(TyImageProcessing) * "/resources/livingRoom.mat")
pc1 = pointCloud(pc1_location; Color=pc1_color)
pc2 = pointCloud(pc2_location; Color=pc2_color)

绘制点云并设置点云的视角。

figure()
pcshowpair(pc1, pc2; VerticalAxis="Y", VerticalAxisDir="Down")
plt_view(-10,-50)
zoom(1.5)
title("Difference Between Two Point Clouds")
xlabel("X(m)")
ylabel("Y(m)")
zlabel("Z(m)")

# 输入参数

ptCloudA — 点云
pointCloud 对象

点云 A,指定为 pointCloud 对象。该函数使用不同深浅的洋红色来表示点云 A,若点云不包含颜色信息,则使用纯洋红色表示。

ptCloudB — 点云
pointCloud 对象

点云 B,指定为 pointCloud 对象。该函数使用不同深浅的绿色来表示点云 B,若点云不包含颜色信息,则使用纯绿色表示。

# 名称-值参数

指定可选的参数对作为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是相应的值。名称-值参数必须出现在其他参数之后,但是对这些对的顺序不重要。

示例: ViewPlane="XY" 将用于可视化点云的平面设置为 x-y 轴所在平面。

MarkerSize — 标记的直径
6 (默认) | 正标量

标记的直径,指定为一个正标量。该值指定了点标记的近似直径。标记大小大于 6 可能会降低渲染性能。

数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64

BackgroundColor — 背景颜色
[0 0 0] (黑色) (默认) | RGB 三元组 | 字符串标量

背景颜色,指定为 RGB 三元组、十六进制颜色代码,或指定颜色全称或简称的字符向量。

数据类型: String | UInt16 | UInt8 | Int16 | | Float64 | Float32

VerticalAxis — 垂直轴
"Z" (默认) | "X" | "Y"

垂直轴,指定为 “X”、“Y” 或 “Z”。该值将点云所选的轴设置在垂直方向上。

VerticalAxisDir — 垂直轴的方向
"Up" (默认) | "Down"

垂直轴的方向,指定为 “向上(Up)” 或 “向下(Down)”。

Projection — 用于三维视图的相机投影类型
"perspective" (默认) | "orthographic"

用于三维视图的相机投影类型,指定为以下值之一:

  • "perspective"(透视投影) —— 将视景体投影为一个棱台(一个顶点被平行于底面截去的棱锥)。离相机越远的物体看起来越小。距离会导致近大远小的效果,这使你能够感知三维物体的深度。当你想要展示真实物体的逼真视图时,这种投影类型很有用。透视投影不会保留物体的相对尺寸。相反,它会将远处的线段显示得比相同长度的近处线段更小。数据中平行的线条在场景中可能看起来不平行;

  • "orthographic"(正交投影) —— 这种投影类型会保持图形对象相对于观察者的正确相对尺寸。与相机的相对距离不会影响物体的大小。数据中平行的线条在屏幕上看起来也是平行的。当需要保持物体的实际大小以及物体之间的角度时,这种投影类型很有用。

ViewPlane — 用于可视化点云的平面
"auto" (默认) | "XY" | "YX" | "XZ" | "ZX" | "YZ" | "ZY"

用于可视化点云的平面,指定为 "auto"(自动)、"XY"、"YX"、"XZ"、"ZX"、"YZ" 或 "ZY"。ViewPlane 参数设置了从相机(位于所选平面中心)到绘图中心的视线方向。

ColorSource — 用于颜色映射的点云属性
"auto" (默认) | "X" | "Y" | "Z" | "Intensity" | "Color" | "Row" | "Column"

用于颜色映射的点云属性,指定为 "auto"(自动)、"X"、"Y"、"Z"、"Intensity"(强度)、"Color"(颜色)、"Row"(行)、"Column"(列)。pcshowpair 函数在渲染点云时使用 ColorSource 的值来分配颜色映射。这些值对应以下属性:

  • "X" —— 输入点云的 Location(位置)属性中的 x 坐标;

  • "Y" —— 输入点云的 Location 属性中的 y 坐标;

  • "Z" —— 输入点云的 Location 属性中的 z 坐标;

  • "Intensity" —— 输入点云的 Intensity(强度)属性;

  • "Color" —— 输入点云的 Color(颜色)属性;

  • "Row" —— 有组织点云的行值;

  • "Column" —— 有组织点云的列值。

当你将 ColorSource 设置为 "auto" 时,函数会根据输入点云对象中可用的属性值来设置颜色映射:

可用的点云属性 颜色来源
仅位置 将 z 值映射到当前颜色映射中的颜色值
位置和强度 将 z 值映射到当前颜色映射中的颜色值
位置和颜色 将颜色值映射到当前颜色映射
位置、强度和颜色 将颜色值映射到当前颜色映射
AxesVisibility — 坐标轴可见状态
true (默认) | false

坐标轴可见状态,指定为 true(开启)或 false(关闭)。

  • true —— 显示坐标轴及其子对象;

  • false —— 隐藏坐标轴但不删除它。

Parent — 用于显示可视化内容的坐标轴
用于显示可视化内容的坐标轴

用于显示可视化内容的坐标轴,指定为一个 Axes(坐标轴)对象。要创建一个 Axes 对象,可使用 axes 函数。若要在新图形中显示可视化内容,则无需指定 Parent(父对象)。

# 输出参数

ax — 绘图坐标轴
坐标轴图形对象

绘图坐标轴,以坐标轴图形对象的形式返回。表示为 NaN(非数字)或 Inf(无穷大)的点不包含在内。

你可以将点云查看器的默认旋转中心设置为坐标轴中心或某个点。可从 “计算机视觉工具箱首选项” 中设置默认行为。

当旋转点云时,旋转坐标轴(以红色、蓝色和绿色线条表示)会出现在旋转中心处。