Hole Repair Filter(空洞修复过滤器)

空洞修复过滤器会填充点云中的缺失点。它会在点云中缺失点周围的圆形邻域中插入剩余点。缺失点可能已被其他过滤器移除,或者一开始就没有重建。

备注

建议在添加空洞修复过滤器之前应用 移除过滤器 。这可以防止插入噪声点。

为什么需要空洞修复过滤器?

如果您的算法需要特定的点云密度,则此过滤器可以帮助填补密度较低的区域。

考虑以下场景,其中有一个装满消费品的箱子:

装有消费品的料箱

使用消费品的快速预设设置,您会得到左下图的结果。现在,将其与 defaultstrong Hole Repair(空洞修复) 进行比较。这可能就是计算所有物品的良好抓取位姿的原因。

空洞修复过滤器被禁用

空洞修复过滤器被禁用

Hole Repair filter disabled

空洞修复过滤器设置为 0.2(默认)

空洞修复过滤器设置为 0.2(默认)

Hole Repair filter 0.2 (default)

空洞修复过滤器设置为 0.7(强)

空洞修复过滤器设置为 0.7(强)

Hole Repair 0.7 (strong)

如何控制空洞修复过滤器

Enabled

打开/关闭过滤器

HoleSize

将要填充的孔的相对直径。增加该值会填充更多的点,但需要更多的计算时间。允许填充的最大孔尺寸与成像距离是比例关系,因此我们允许在更远的距离(以毫米为单位)处填充更大的孔。”

Strictness

该参数表示考虑是否应填充一个点时的严格程度。更高级别的严格程度将要求缺失点被更多边上的有效点包围,该缺失点才会被填充。增加这个值会填充更少的点,但填充非圆形间隙的可能性较小,例如两条边之间的间隙。

建议使用以下参数值:

参数

数值

条件

Enabled

no

如果您不接受推断出来的数据,或者如果您负担不了额外增加的处理时间。

yes

如果您的算法需要更高的点云密度,而您目前遇到了点云较为稀疏的问题。

HoleSize

0.01

只填充最小的空洞(快速)

0.2

(默认)在 1000 毫米距离处填充直径约为 8 毫米的孔 [1]

0.7

在 1000 毫米距离处填充直径约为 25 毫米的大孔 [1] (慢)

Strictness

1

即使在圆形邻域中几乎没有有效点时也可以填充空洞

4

仅填充圆形邻域中被有效点包围的空洞

可视化Hole Size

在下面的可视化工具中,孔尺寸显示为黄色圆圈。它按比例绘制在Zivid标定板的顶部。轴显示了给定距离处相机的FOV。因此,您实际上可以看到棋盘格占据了多少FOV。

处理时间

由于过滤器的操作方式,处理时间随 hole size 参数呈指数增长。只要您有一台功能强大的PC,那么这通常不是问题,比如 11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz with NVIDIA GeForce RTX 3070 。对于较便宜的硬件,尤其是集成GPU,应该注意设置了较大的孔尺寸的处理时间。在低端硬件上最高设置可能需要几秒钟。

空洞修复过滤器在每次 3D 捕获时会增加以下处理时间:

特殊的注意事项

空洞修复功能会在点云中添加点,但实际上并未增加新的信息。这些添加的点是从经过其他滤波器处理后保留下来的信息插值得到的。空洞修复功能适用于系统其他部分存在一定程度容错的应用场景,例如采用吸盘抓取单个或多个 SKU 时。这类应用在使用密集的点云时可能表现更优,因为提供良好抓取位姿的可能性更高。

有些应用依赖于每个单独点的绝对精度。例如高分辨率检测和/或三维模型构建。这些应用可能不太适合使用空洞修复功能。

版本历史

SDK

变更

2.12.0

Hole Filling已从实验性功能中移除并重命名为Hole Repair(空洞修复)。

2.9.0

增加了空洞填充过滤器