调整过滤器

介绍

在如 调整合适的曝光以获取好的点云 所描述的那样调整好曝光值和图像帧之后,下一步应该调整过滤器了。有关过滤器的更多信息可查看: Filters(过滤器)

Cluster filter(聚类过滤器)

Cluster filter(聚类过滤器)过滤器可以从点云中移除漂浮的点和集聚噪点。

小技巧

如果您在拾取对象时使用了碰撞规避算法,此过滤器会特别有用。假设在一个对象上有一组点,但是这些点在现实中并不存在。机器人可能将这种漂浮的聚集噪点视为真正的障碍物,而不是它可以物理碰撞的东西。这可能导致物体的拾取位姿不理想,甚至无法拾取它。

如何控制聚类过滤器

Enabled

启用/关闭过滤器

MaxNeighborDistance

仍归类为属于同一簇的相邻点之间的最大归一化距离。该过滤器会移除相邻点之间的距离比MaxNeighborDistance更远的聚集的噪点(密度低于此阈值的聚集噪点)。设定值越低,过滤越积极。

MinArea

聚集噪点的面积,以平方毫米为单位。过滤器会移除面积低于此阈值的聚集噪点。增大该参数会导致移除更大的聚集噪点。

对于希望移除的点,它必须属于满足 MaxNeighborDistanceMinArea 要求的聚集噪点。

参数

数值

条件

Enabled

no

如果您的图像中没有漂浮的点、孤立的聚集噪点,或者如果您无法接受增加的处理时间

yes

如果你想移除漂浮的点或孤立的聚集噪点

MaxNeighborDistance

10 - 8.5

稀疏的聚集噪点,适用于大多数场景

8.5 - 5.5

密集的聚集噪点

5.5 - 2

非常密集的聚集噪点,通常由反射产生

MinArea

< 50

适用于离群值过滤器未能移除的聚集噪点

50 - 400

适用于典型大小的聚集噪点

> 400

用于移除通常由反射导致的幽灵平面

移除漂浮的聚集噪点

噪声过滤器离群值过滤器 是几乎总是会用到的基本移除过滤器。这些过滤器与 反射过滤器 (尤其是Local模式)可能无法在不移除很多正常点的情况下移除所有的漂浮点和聚集噪点。这通常是具有挑战性的场景的情况。 聚类过滤器可以移除剩余的错误点,而不会从场景的其余部分移除好的数据。

对离群值过滤器的补充

在下图中,聚类过滤器已关闭,我们可以看到不同大小和密度的漂浮的聚集噪点。

带有浮点和簇的点云示例,在没有移除过滤器的情况下捕获以演示这些伪像。

在左下角的图像中,我们可以看到离群值过滤器在设置为最严格的情况下的表现,会保留一些漂浮的噪点,同时移除了一些正常的点。在右下角的图像中,我们看到聚类过滤器(在本例中使用默认值)是如何移除这些漂浮噪点,同时保留正常的点。

严格的离群值过滤器设置(阈值设置为1毫米);聚类过滤器处于关闭状态 - 聚集的噪点未被移除 严格的离群值过滤器设置(阈值设置为1毫米);聚类过滤器处于关闭状态 - 聚集的噪点未被移除
启用聚类过滤器(使用默认值)- 聚集的噪点被移除了 启用聚类过滤器(使用默认值)- 聚集的噪点被移除了

对反射滤波器 - Local模式的补充

反射过滤器 ,尤其是在Local模式下,可能会遗留更多的漂浮的聚集噪点,如左下角的图像所示。在右下角的图像中,我们可以看到使用了聚类过滤器后(在本例中使用默认值),这些漂浮的噪点被移除了。

严格的离群值过滤器设置(阈值设置为1毫米);聚类过滤器处于关闭状态 - 聚集的噪点未被移除 严格的离群值过滤器设置(阈值设置为1毫米);聚类过滤器处于关闭状态 - 聚集的噪点未被移除
启用Local模式反射过滤器及聚类过滤器(默认值)- 聚集的噪点被移除了 启用Local模式反射过滤器及聚类过滤器(默认值)- 聚集的噪点被移除了

移除幽灵面

幽灵面是现实中不存在的虚假点云数据,通常是由物体之间的互相反射或与箱壁的互相反射造成的。这些漂浮的聚集噪点的一端通常与由正常数据组成的点云表面相连。有时可以通过微调聚类过滤器来移除幽灵面。这些伪影通常密度和面积都较大。因此,必须调整较为严格的过滤器设置才能将其移除,但是这可能会导致移除一些正常的数据,包括部分对象或整个(较小的)对象。

警告

在使用聚类过滤器移除幽灵面时,请仔细观察是否移除了任何关键数据。

在下面的示例场景中,由于圆柱体顶部和箱壁之间的反射,圆柱体上方出现了幽灵面。请注意,在彩色图像中,我们可以看到圆柱体在图像顶部区域的箱壁上的反射。

展示幽灵位面伪影的场景。

该幽灵面(左下图)可能被视为机器人拾取物体的障碍物。这些障碍可能导致得出不佳的抓取位姿,甚至根本没有合适的抓取位姿。在右下角的图像中,我们可以看到通过积极地调整聚类过滤器,最终移除了该幽灵面。在此示例中, MaxNeighborDistance 被设置为5.00, MinArea 被设置为1400.00。作为权衡,圆柱体底部的部分数据也被移除了。

聚类过滤器关闭 - 图像中存在幽灵面 聚类过滤器关闭 - 图像中存在幽灵面
聚类过滤器被启用 - 幽灵面被移除 聚类过滤器被启用 - 幽灵面被移除

如果料箱中仅存在单一类型的物体,那么调整聚类过滤器来移除幽灵面会更加容易。这是因为可以确定点云中需要保留的最小对象特征的区域。然后,可以相应地设置 MinArea

警告

使用 Intel GPU 时,聚类过滤器会显着增加处理时间。

Hole Repair(空洞修复)

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

备注

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

Enabled

启用/关闭过滤器

HoleSize

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

Strictness

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

建议使用以下设定值:

参数

数值

条件

Enabled

no

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

yes

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

HoleSize

0.01

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

0.2

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

0.7

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

Strictness

1

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

4

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

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

装有消费品的箱子

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

Hole Repair filter disabled

Hole Repair filter 0.2 (default)

Hole Repair filter 0.27 (strong)

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

hidden
2+R2+2
High-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end Intel
Filters
HoleFilling0 ms (±0)0 ms (±0)0 ms (±0)0 ms (±0)0 ms (±0)0 ms (±0)

Noise filter(噪声过滤器)

Noise Filter(噪声过滤器)的目的是清理有噪声的点云。

Removal(移除)

信噪比 ( SNR ) 过滤器会 移除 SNR 低于指定阈值的投影图案信号(参考 相机捕获中可检测到的光强度 )。具有低SNR值的点会有更多噪声(例如,由于环境光原因导致的低SNR),因此SNR过滤器可以用于仅保留被认为可接受的点。

在某些检测应用中,可能需要仅保留高置信度的点。然而,在料箱拣选场景中,噪声较大的点通常被认为比"没有"点更好。这是因为,最终,匹配算法将决定它找到的匹配是否令人满意。

参数

数值

条件

Enabled

no

如果您想保留所有点,无论其 SNR 值如何(很少)

yes

如果你想通过过滤掉低SNR值的点来控制点云的质量(通常)

Threshold

1

如果您想最大化表面覆盖范围,但仍过滤掉一些置信度较低的点,例如包裹拣选

2-6

对于大多数应用,例如,制造(料箱拣选)和电子商务(单件拣选),如果您只想保留*像样的*质量的点。可以在以下场景使用较低的阈值( 2-3 ):捕获深色零件点云、强环境光情况下,远距离捕获点云。

7+

如果您只想保留高度可信的点,例如质量检测应用

提示

SNR 阈值=3 在丢弃点和移除噪声之间产生了良好的权衡。

备注

噪声移除(SNR) 过滤器几乎不会增加额外的处理时间。

有关 SNR 值的更多信息,请参阅 SNR值

Repair(修复)

该过滤器可以修复由于噪声点而丢失数据的区域。

数值

条件

Enabled::no

如果您要求点云中的所有点都具有高置信度。

Enabled::yes

如果你想最大化表面覆盖率。

备注

噪声修复会增加额外的处理时间。启用噪声修复和噪声抑制会增加与仅启用其中一项相同的处理时间。

Suppression(抑制)

该过滤器可减少点云中的噪声和异常值。

数值

条件

Enabled::no

如果您需要区分非常精细的细节,则需要避免任何平滑效果。

Enabled::yes

如果您想减少点云中的噪声和异常值或减少相互反射引起的波纹效应。

备注

噪声抑制会增加额外的处理时间。启用噪声抑制和噪声修复会增加与仅启用其中一项相同的处理时间。

Outlier filter(离群值过滤器)

离群值过滤器会移除它认为是相邻像素的小局部区域内的离群值的像素点。 离群值是通过它们和其最近的点有多远来衡量的。 如果距离超过离群值过滤器的阈值,则将该像素识别为离群值,并从最终点云中将其移除。 离群过滤器阈值的单位为毫米,阈值越小,移除的像素越多。 建议从较大的阈值开始调试,然后不断减小阈值,直到对密度/噪声水平满意为止。

值(mm)

考虑因素

5-10

Zivid 2+ M60 的典型值

5-20

Zivid 2 M70 的典型值

10-20

Zivid 2+ L110/M130 和 Zivid 2 L100 的典型值

50-100

在以下情况可考虑该设置:

  • 图像散焦严重(查看studio中的2D图像)

  • 深色物体

  • 环境光强度比投影仪强

  • 场景距离远(>2m)

OFF

如果场景具有*极端*噪声,但只想要您想要获得任何能够获取的点,那么可以关闭过滤器。这可能是在非常黑暗的场景中,非常远(> 2m)或户外。

备注

离群值过滤器的单位是毫米

备注

离群值过滤器几乎不会增加额外的处理时间。

Reflection filter(反射过滤器)

反射过滤器将移除Zivid认为受到反射影响而产生的错误的点。这些通常在点云中被视为"幽灵平面"——漂浮在半空中的不应该存在的小点区域。

备注

启用反射过滤器后,每次采集会增加一定的处理时间,详见下文。

建议使用以下设定值:

数值

条件

Enabled::no

如果场景中没有反射现象,并且您想优化采集时间。

Enabled::yes

如果您在检测反光部件或置于光反射性容器内的部件时遇到问题,请打开该过滤器。

禁用和启用了反射过滤器
反射过滤器有两种模式:Global(默认)和Local。

模式

优点

Mode::local

  • 能够移除反射伪像,如幽灵平面和高光(见下图)

  • 可以保留细的和尖锐物体的3D数据(见下图,或阅读 如何在点云中保留细的或者尖锐的对象 了解更多详情)

  • 处理时间(最多快三倍,请参阅下面的global(全局)处理时间)

Mode::global

  • 移除点云中的异常点(见下图)

  • 保留对象的边缘

禁用反射过滤器(幽灵平面) 禁用反射过滤器(幽灵平面)
启用反射过滤器 - Global模式(较小的幽灵平面) 启用反射过滤器 - Global模式(较小的幽灵平面)
启用反射过滤器 - Local模式(无幽灵平面) 启用反射过滤器 - Local模式(无幽灵平面)
反射过滤器 - Global模式(在细窄的对象上没有数据) 反射过滤器 - Global模式(在细窄的对象上没有数据)
反射过滤器 - Local模式(保留了细窄的对象上的数据) 反射过滤器 - Local模式(保留了细窄的对象上的数据)
反射过滤器 - Global模式(在细窄的对象上没有数据) 反射过滤器 - Global模式(在细窄的对象上没有数据)
反射过滤器 - Local模式(保留了细窄的对象上的数据) 反射过滤器 - Local模式(保留了细窄的对象上的数据)
反射过滤器 - Global模式(更少的离群值) 反射过滤器 - Global模式(更少的离群值)
反射过滤器 - Local模式(更多的离群值) 反射过滤器 - Local模式(更多的离群值)

提示

反射滤波器的Local模式可能会留下一些孤立的漂浮的点。这是 集群过滤器 可以弥补的。

反射过滤器(Global mode) 在每次3D捕获中将增加以下处理时间:

hidden
2+R2+2
High-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end Intel
Filters
ReflectionGlobal6 ms (±1)10 ms (±1)5 ms (±1)11 ms (±2)14 ms (±8)30 ms (±5)
ReflectionLocal0 ms (±0)0 ms (±0)0 ms (±0)0 ms (±0)0 ms (±0)0 ms (±0)

Gaussian smoothing(高斯平滑)

高斯滤波器会基于3D距离对较小局部区域内的点进行平滑处理。这可用于抑制稀疏噪声、校正异常值以及将点与网格对齐。 Sigma 参数决定了过滤器的平滑程度。Sigma值越高,平滑越积极。请注意,在许多情况下,高斯滤波器可以修正离群值,但较高的Sigma值也会平滑边缘。

数值

条件

<1.0

如果您想保留尽可能多的细节和特征。拍摄小型物体时建议使用该设置(亚厘米级特征)。

1.5

适用于大多数条件和中型尺寸的物体。

2.5-5

如果您关注更平滑和更大的表面,例如平面的平面度。

Gaussian filter OFF Gaussian filter OFF
Gaussian filter with sigma=1.5 Gaussian filter with sigma=1.5
Gaussian filter with sigma=4.0 Gaussian filter with sigma=4.0

高斯过滤器在每次3D捕获中将增加以下处理时间:

hidden
2+R2+2
High-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end Intel
Filters
Smoothing0.7 ms (±0)6 ms (±1)0.6 ms (±1)6 ms (±2)1.8 ms (±2)11 ms (±4)

对比度失真过滤器

对比度失真过滤器可修正和/或移除受相机镜头模糊影响的点。 在点云中,这通常发生在具有高对比度(强镜面反射)的区域以及具有大纹理梯度的区域。关于这类伪像的详细说明,请查看 对比度失真伪像

过滤器参数strength(强度)表示在3D空间中修正一个点的程度,threshold(阈值)表示在移除某个点之前(如果启用了移除模式)的最大距离。 由于强度和移除效果取决于相机的焦点和物体的方向(相对于相机基线),因此建议在调整对比度失真过滤器参数之前先调整曝光设置 Contrast Distortion Filter(对比度失真过滤器) 参数。

警告

如果 strength 值非常高,可能会过度补偿修正。

小技巧

关闭对比度失真有助于保持 3D 边缘的清晰度。

数值

条件

0.1-0.2

如果对比度失真现象不严重,则仅需要进行少量修正。

0.3-0.5

"几乎总是" ,如果相机对焦良好,但存在对比度失真。只需要进行一些修正。

0.6-0.7

"常见情况",如果点云受较大的对比度失真影响,可能是相机有一些失焦。

0.8-1.0

"不常见的情况" ,如果有非常严重的对比度失真现象, 这通常表明相机失焦!

对比度失真过滤器在每次3D捕获将增加以下处理时间:

hidden
2+R2+2
High-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end IntelHigh-end NVIDIAHigh-end Intel
Filters
ContrastDistortionCorrection2 ms (±0)15 ms (±1)1.9 ms (±1)12 ms (±2)7 ms (±2)85 ms (±4)
ContrastDistortionRemoval0.5 ms (±1)6 ms (±1)0.5 ms (±1)6 ms (±1)3 ms (±2)60 ms (±4)

小技巧

如果已启用对比度失真修正过滤器,则对比度失真移除过滤器增加的处理时间可以忽略不计。

在调整对比度失真过滤器之前调整光圈

调整对比度失真过滤器有时不足以消除对比度失真伪像。当彩色图像模糊时,伪像会变得更糟。因此,在调整过滤器之前,通过调整光圈来确保彩色图像清晰对焦是非常重要的。

我们将通过一个示例来演示如何通过调整Aperture(光圈)来消除对比度失真伪像的过程。

下图显示了失焦的彩色图像和带有可见对比度失真伪像的点云。彩色图像模糊,因为光圈使用了较低的f-值 (2.38)。设置的Contrast Distortion strength(对比度失真强度)为0.35。

彩色图像失焦 彩色图像失焦
产生对比度失真的点云 产生对比度失真的点云

将Aperture(光圈)从2.0更改为8.0,以消除对比度失真伪像,并通过更长的曝光时间来补偿这种变化。得到的结果是一个聚焦的彩色图像和一个没有任何对比度失真伪像的点云,如下图所示。

聚焦的彩色图像 聚焦的彩色图像
生成的没有对比度失真的点云 生成的没有对比度失真的点云

此示例中使用的点云可供下载以供进一步观察:

进一步阅读

继续查看 优化彩色图像

版本历史

SDK

变更

2.9.0

添加了Cluster filter(聚类过滤器) 和 Hole Filling filter(空洞填充过滤器)的内容,并根据SDK 2.9.0中引入的新行为更新了Gaussian(高斯过滤器)的内容。