# 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(无穷大)的点不包含在内。
你可以将点云查看器的默认旋转中心设置为坐标轴中心或某个点。可从 “计算机视觉工具箱首选项” 中设置默认行为。
当旋转点云时,旋转坐标轴(以红色、蓝色和绿色线条表示)会出现在旋转中心处。