主要内容

本页采用了机器翻译。点击此处可查看英文原文。

pcmerge

合并两个三维点云

说明

ptCloudOut = pcmerge(ptCloudA,ptCloudB,gridStep) 使用盒式网格滤波器,在重叠区域内返回一个合并后的点云。gridStep 指定该滤波器的三维盒子尺寸。

示例

ptCloudOut = pcmerge(___,GridFilter=gridFilterMethod) 用于设置对合并后的点云之间重叠区域进行降采样所采用的方法。

示例

全部折叠

创建一个点云,其中 X、Y、Z 坐标均在 [0, 100] 范围内。

ptCloudA = pointCloud(100*rand(1000,3));

创建一个部分重叠的点云。

ptCloudB = pointCloud([70 20 30] + 100*rand(1000,3));

使用盒式滤波器将两个点云合并。

ptCloudOut = pcmerge(ptCloudA, ptCloudB, 1);
pcshow(ptCloudOut);

Figure contains an axes object. The axes object contains an object of type scatter.

输入参数

全部折叠

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

点云 B,指定为 pointCloud 对象。

网格滤波器的三维盒子尺寸,指定为一个正标量。增加 gridStep 的值可以通过合并更多点来减少内存占用,但也会降低所捕获的细节程度。网格滤波器针对每个三维盒子返回一个点。

数据类型: single | double

对合并后的点云之间重叠区域进行降采样的方法,指定为以下选项之一:

  • "average"(默认)- 通过计算体素内所有点的位置、颜色、亮度和法向量的平均值,选定体素中的一个点。

  • "nearest" - 根据距离体素质心最近的点,确定该体素的位置、颜色、亮度和法线。

输出参量

全部折叠

合并后的点云,以 pointCloud 对象的形式返回。该函数用于计算两个点云之间重叠区域的轴对齐边界框。边界框被划分为由 gridStep 指定的尺寸的网格框。每个网格单元内的点将使用指定的网格滤波器类型进行降采样。重叠区域外的点保持不变。

提示

  • 如果两个点云中填充的属性集不一致(例如 ColorNormal),则这些属性将在返回的点云中被清除。例如,如果 ptCloudA 有颜色而 ptCloudB 没有,那么 ptCloudOut 也不会包含颜色。

  • 该函数会过滤掉 NaNInf 值的点。

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2015a 中推出