调整过滤器
介绍
在如 调整合适的曝光以获取好的点云 所描述的那样调整好曝光值和图像帧之后,下一步应该调整过滤器了。有关过滤器的更多信息可查看: Processing(处理)设置。
Noise filter(噪声过滤器)
噪声滤波器会移除SNR值低于设定阈值的像素。 这可用于消除噪声点(例如,由于环境光而引起的噪声)。
数值 |
条件 |
7 |
“几乎总是” |
5-6 |
为了在以下场景中获得点数据,可能需要保持较低的噪声过滤器阈值:
|
备注
SNR过滤器几乎不会增加额外的处理时间。
Outlier filter(离群值过滤器)
离群值过滤器会移除它认为是相邻像素的小局部区域内的离群值的像素点。 离群值是通过它们和其最近的点有多远来衡量的。 如果距离超过离群值过滤器的阈值,则将该像素识别为离群值,并从最终点云中将其移除。 离群过滤器阈值的单位为毫米,阈值越小,移除的像素越多。 建议从较大的阈值开始调试,然后不断减小阈值,直到对密度/噪声水平满意为止。
值(mm) |
条件 |
2-10 |
适用于Zivid Two的典型值 |
1-3 |
适用于Zivid One+ Small的典型值 |
3-10 |
适用于Zivid One+ Medium的典型值 |
10-30 |
适用于Zivid One+ Large的典型值 |
50-100 |
在以下情况可考虑该设置:
|
OFF |
如果场景具有*极端*噪声,但只想要您想要获得任何能够获取的点,那么可以关闭过滤器。这可能是在非常黑暗的场景中,非常远(> 2m)或户外。 |
备注
离群值过滤器的单位是毫米
备注
离群值过滤器几乎不会增加额外的处理时间。
Reflection filter(反射过滤器)
反射过滤器将移除Zivid认为受到反射影响而产生的错误的点。这些通常在点云中被视为"幽灵平面"——漂浮在半空中的不应该存在的小点区域。
备注
启用反射过滤器后,每次采集会增加一定的处理时间,详见下文。
建议使用以下设定值:
数值 |
条件 |
|
如果场景中没有反射现象,并且您想优化采集时间。 |
|
如果您在检测反光部件或置于光反射性容器内的部件时遇到问题,请打开该过滤器。 |
模式 |
优点 |
|
|
|
|
Reflection Filter disabled (ghost plane) |
Reflection Filter enabled - Global mode (smaller ghost plane) |
Reflection Filter enabled - Local mode (no ghost plane) |
Reflection Filter - Global mode (no data on thin objects) |
Reflection Filter - Local mode (data preserved on thin objects) |
Reflection Filter - Global mode (no data on pointy objects) |
Reflection Filter - Local mode (data preserved on pointy objects) |
Reflection Filter - Global mode (less outliers) |
Reflection Filter - Local mode (more outliers) |
提示
反射滤波器的Local模式可能会留下一些孤立的漂浮的点。这是 集群过滤器 可以弥补的。
备注
反射过滤器(Global mode) 在每次3D捕获中将增加以下处理时间:
过滤器 |
Zivid One+ |
Zivid Two |
||||
---|---|---|---|---|---|---|
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
|
High-end [1] |
Low-end [2] |
High-end [3] |
High-end [1] |
Low-end [2] |
High-end [3] |
|
Reflection Global |
12 (±2) ms |
33 (±2) ms |
15 (±0.6) ms |
21 (±1) ms |
29 (±414) ms |
14 (±0.9) 毫秒 |
Reflection Local |
20 (±3) ms |
26 (±2) 毫秒 |
4 (±0.6) ms |
21 (±3) 毫秒 |
25 (±474) ms |
3 (±0.9) ms |
Cluster filter(聚类过滤器)
The Cluster Filter removes floating points and isolated clusters from the point cloud.
小技巧
This filter is especially useful if you use collision avoidance while picking objects. Let’s say there is a cluster of points above an object, but that cluster doesn’t exist in the reality. The robot can interpret such floating clusters as real obstacles instead of something it can physically collide with. That can lead to undesirable picking poses of the object or even the inability to pick it.
如何控制聚类过滤器
Enabled
启用/关闭过滤器
MaxNeighborDistance
仍归类为属于同一簇的相邻点之间的最大归一化距离。该过滤器会移除相邻点之间的距离比MaxNeighborDistance更远的聚集的噪点(密度低于此阈值的聚集噪点)。设定值越低,过滤越积极。
MinArea
聚集噪点的面积,以平方毫米为单位。过滤器会移除面积低于此阈值的聚集噪点。增大该参数会导致移除更大的聚集噪点。
对于希望移除的点,它必须属于满足 MaxNeighborDistance
和 MinArea
要求的聚集噪点。
参数 |
数值 |
条件 |
---|---|---|
|
|
If you do not have floating points, isolated clusters, or if you cannot afford the added processing time |
|
If you want to remove floating points or isolated clusters |
|
|
|
稀疏的聚集噪点,适用于大多数场景 |
|
密集的聚集噪点 |
|
|
非常密集的聚集噪点,通常由反射产生 |
|
|
|
适用于离群值过滤器未能移除的聚集噪点 |
|
适用于典型大小的聚集噪点 |
|
|
用于移除通常由反射导致的幽灵平面 |
移除漂浮的聚集噪点
噪声过滤器 和 离群值过滤器 是几乎总是会用到的基本移除过滤器。这些过滤器与 反射过滤器 (尤其是Local模式)可能无法在不移除很多正常点的情况下移除所有的漂浮点和聚集噪点。这通常是具有挑战性的场景的情况。 聚类过滤器可以移除剩余的错误点,而不会从场景的其余部分移除好的数据。
对离群值过滤器的补充
在下图中,聚类过滤器已关闭,我们可以看到不同大小和密度的漂浮的聚集噪点。
在左下角的图像中,我们可以看到离群值过滤器在设置为最严格的情况下的表现,会保留一些漂浮的噪点,同时移除了一些正常的点。在右下角的图像中,我们看到聚类过滤器(在本例中使用默认值)是如何移除这些漂浮噪点,同时保留正常的点。
Strict Outlier Filter settings (Threshold set to 1 mm); Cluster Filter turned off - Clusters not removed |
Cluster Filter (with default values) - Clusters removed |
对反射滤波器 - Local模式的补充
反射过滤器 ,尤其是在Local模式下,可能会遗留更多的漂浮的聚集噪点,如左下角的图像所示。在右下角的图像中,我们可以看到使用了聚类过滤器后(在本例中使用默认值),这些漂浮的噪点被移除了。
Reflection Filter with Local mode and Cluster Filter turned off - Clusters are not removed |
Reflection Filter with Local mode and Cluster Filter turned on (default values) - Clusters removed |
移除幽灵面
幽灵面是现实中不存在的虚假点云数据,通常是由物体之间的互相反射或与箱壁的互相反射造成的。这些漂浮的聚集噪点的一端通常与由正常数据组成的点云表面相连。有时可以通过微调聚类过滤器来移除幽灵面。这些伪影通常密度和面积都较大。因此,必须调整较为严格的过滤器设置才能将其移除,但是这可能会导致移除一些正常的数据,包括部分对象或整个(较小的)对象。
警告
When using the cluster filter to remove ghost planes, carefully observe whether any critical data is removed.
In the following example scene, a ghost plane above the cylinder appears due to the reflection between the top of the cylinder and the bin wall. Notice that in the color image, we can see the reflection of the cylinder on the top bin wall.
该幽灵面(左下图)可能被视为机器人拾取物体的障碍物。这些障碍可能导致得出不佳的抓取位姿,甚至根本没有合适的抓取位姿。在右下角的图像中,我们可以看到通过积极地调整聚类过滤器,最终移除了该幽灵面。在此示例中, MaxNeighborDistance
被设置为5.00, MinArea
被设置为1400.00。作为权衡,圆柱体底部的部分数据也被移除了。
Cluster Filter off - Ghost planes |
Cluster Filter on - No ghost planes |
如果料箱中仅存在单一类型的物体,那么调整聚类过滤器来移除幽灵面会更加容易。这是因为可以确定点云中需要保留的最小对象特征的区域。然后,可以相应地设置 MinArea
。
警告
使用Intel或AMD GPU时,聚类过滤器会显着增加处理时间。
备注
聚类过滤器在每个3D捕获中将增加以下处理时间:
过滤器 |
Zivid One+ |
Zivid Two |
||||
---|---|---|---|---|---|---|
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
|
High-end [4] |
Low-end [5] |
High-end [6] |
High-end [4] |
Low-end [5] |
High-end [6] |
|
聚类过滤器 |
88 (±2) ms |
218 (±2) ms |
8 (±0.8) ms |
94 (±1) ms |
222 (±400) ms |
8 (±0.9) ms |
搭载了GPU:Intel UHD Graphics 750 (ID:0x4C8A) 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
搭载了GPU:Intel UHD Graphics G1 (ID:0x8A56) 和 CPU:Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz, 1GbE 的低端机器
搭载了GPU:NVIDIA GeForce RTX 3070 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
Gaussian smoothing(高斯平滑)
高斯滤波器会基于3D距离对较小局部区域内的点进行平滑处理。这可用于抑制稀疏噪声、校正异常值以及将点与网格对齐。 Sigma
参数决定了过滤器的平滑程度。Sigma值越高,平滑越积极。请注意,在许多情况下,高斯滤波器可以修正离群值,但较高的Sigma值也会平滑边缘。
数值 |
条件 |
<1.0 |
如果您想保留尽可能多的细节和特征。拍摄小型物体时建议使用该设置(亚厘米级特征)。 |
1.5 |
适用于大多数条件和中型尺寸的物体。 |
2.5-5 |
如果您关注更平滑和更大的表面,例如平面的平面度。 |
Gaussian filter OFF |
||
Gaussian filter with sigma=1.5 |
||
Gaussian filter with sigma=4.0 |
备注
高斯过滤器在每次3D捕获中将增加以下处理时间:
过滤器 |
Zivid One+ |
Zivid Two |
||||
---|---|---|---|---|---|---|
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
|
High-end [7] |
Low-end [8] |
High-end [9] |
High-end [7] |
Low-end [8] |
High-end [9] |
|
平滑 |
7 (±2) ms |
14 (±2) ms |
2 (±0.8) ms |
6 (±2) ms |
13 (±445) ms |
2 (±0.8) ms |
搭载了GPU:Intel UHD Graphics 750 (ID:0x4C8A) 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
搭载了GPU:Intel UHD Graphics G1 (ID:0x8A56) 和 CPU:Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz, 1GbE 的低端机器
搭载了GPU:NVIDIA GeForce RTX 3070 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
对比度失真过滤器
对比度失真过滤器可修正和/或移除受相机镜头模糊影响的点。 在点云中,这通常发生在具有高对比度(强镜面反射)的区域以及具有大纹理梯度的区域。关于这类伪像的详细说明,请查看 对比度失真伪像。
过滤器参数strength(强度)表示在3D空间中修正一个点的程度,threshold(阈值)表示在移除某个点之前(如果启用了移除模式)的最大距离。 由于强度和移除效果取决于相机的焦点和物体的方向(相对于相机基线),因此建议在调整对比度失真过滤器参数之前先调整曝光设置 Contrast Distortion Filter(对比度失真过滤器) 参数。
警告
如果 strength 值非常高,可能会过度补偿修正。
数值 |
条件 |
0.1-0.2 |
如果对比度失真现象不严重,则仅需要进行少量修正。 |
0.3-0.5 |
“几乎总是” ,如果相机对焦良好,但存在对比度失真。只需要进行一些修正。 |
0.6-0.7 |
“常见情况”,如果点云受较大的对比度失真影响,可能是相机有一些失焦。 |
0.8-1.0 |
“不常见的情况” ,如果有非常严重的对比度失真现象, 这通常表明相机失焦! |
备注
对比度失真过滤器在每次3D捕获将增加以下处理时间:
过滤器 |
Zivid One+ |
Zivid Two |
||||
---|---|---|---|---|---|---|
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
|
High-end [10] |
Low-end [11] |
High-end [12] |
High-end [10] |
Low-end [11] |
High-end [12] |
|
Contrast Distortion Correction(对比度失真校正) |
57 (±2) 毫秒 |
97 (±1) ms |
7 (±0.7) ms |
58 (±2) ms |
98 (±420) ms |
7 (±0.9) 毫秒 |
Contrast Distortion Removal(对比度失真移除) |
40 (±2) 毫秒 |
61 (±1) ms |
4 (±0.7) ms |
41 (±1) ms |
60 (±435) ms |
4 (±0.9) 毫秒 |
搭载了GPU:Intel UHD Graphics 750 (ID:0x4C8A) 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
搭载了GPU:Intel UHD Graphics G1 (ID:0x8A56) 和 CPU:Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz, 1GbE 的低端机器
搭载了GPU:NVIDIA GeForce RTX 3070 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
小技巧
如果已启用对比度失真修正过滤器,则对比度失真移除过滤器增加的处理时间可以忽略不计。
在调整对比度失真过滤器之前调整光圈
调整对比度失真过滤器有时不足以消除对比度失真伪像。当彩色图像模糊时,伪像会变得更糟。因此,在调整过滤器之前,通过调整光圈来确保彩色图像清晰对焦是非常重要的。
我们将通过一个示例来演示如何通过调整Aperture(光圈)来消除对比度失真伪像的过程。
下图显示了失焦的彩色图像和带有可见对比度失真伪像的点云。彩色图像模糊,因为光圈使用了较低的f-值 (2.38)。设置的Contrast Distortion strength(对比度失真强度)为0.35。
Color image out of focus |
Resulting point cloud with contrast distortion |
将Aperture(光圈)从2.0更改为8.0,以消除对比度失真伪像,并通过更长的曝光时间来补偿这种变化。得到的结果是一个聚焦的彩色图像和一个没有任何对比度失真伪像的点云,如下图所示。
Color image in focus |
Resulting point cloud without contrast distortion |
此示例中使用的点云可供下载以供进一步观察:
Hole Filling(空洞填充)
Hole Filling(空洞填充)过滤器可以填充点云中的缺失点。它会在点云中缺失点周围的圆形邻域中插入被认为是丢失的点。缺失点可能是被其他过滤器移除的,或者一开始就没有重建。
备注
建议在添加空洞填充过滤器之前应用 移除过滤器 。这样可以防止噪点的插值。
Enabled
启用/关闭过滤器
HoleSize
将要填充的孔的相对直径。增加该值会填充更多的点,但需要更多的计算时间。允许填充的最大孔尺寸与成像距离是比例关系,因此我们允许在更远的距离(以毫米为单位)处填充更大的孔。
Strictness
该参数表示考虑是否应填充一个点时的严格程度。更高级别的严格程度将要求缺失点被更多边上的有效点包围,该缺失点才会被填充。增加这个值会填充更少的点,但填充非圆形间隙的可能性较小,例如两条边之间的间隙。
建议使用以下设定值:
参数 |
数值 |
条件 |
---|---|---|
|
|
如果您不接受推断出来的数据,或者如果您负担不了额外增加的处理时间。 |
|
如果您的算法需要更高的点云密度,而您目前遇到了点云较为稀疏的问题。 |
|
|
|
只填充最小的空洞(快速) |
|
(Default) Fill holes with an approximate radius of ~8 mm at 1000 mm distance [13] |
|
|
Fill large holes with an approximate radius of ~25 mm at 1000 mm distance [13] (slow) |
|
|
|
即使在圆形邻域中几乎没有有效点时也可以填充空洞 |
|
仅填充圆形邻域中被有效点包围的空洞 |
To better understand how HoleSize is a function of distance check out the visualization.
考虑以下场景,其中有一个装满消费品的箱子:
在使用消费品(Consumer Goods)类别的快速预设参数时,您将获得下方左侧显示的结果。现在,将其与*默认(default)*和*强(strong)* 空洞填充设置下的结果进行比较。这可能是计算针对所有物体的良好抓取位姿成为可能的原因。
Hole Filling filter disabled |
||
Hole Filling filter 0.2 (default) |
||
Hole Filling 0.7 (strong) |
备注
空洞填充过滤器在每个3D捕获中会增加以下处理时间:
过滤器 |
Zivid One+ |
Zivid Two |
||||
---|---|---|---|---|---|---|
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
Intel UHD 750 |
Intel UHD G1 |
NVIDIA 3070 |
|
High-end [14] |
Low-end [15] |
High-end [16] |
High-end [14] |
Low-end [15] |
High-end [16] |
|
Hole Filling(空洞填充) |
264 (±2) ms |
403 (±2) ms |
13 (±0.9) ms |
139 (±1) ms |
210 (±382) ms |
10 (±1.0) ms |
搭载了GPU:Intel UHD Graphics 750 (ID:0x4C8A) 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
搭载了GPU:Intel UHD Graphics G1 (ID:0x8A56) 和 CPU:Intel(R) Core(TM) i3-1005G1 CPU @ 1.20GHz, 1GbE 的低端机器
搭载了GPU:NVIDIA GeForce RTX 3070 和 CPU:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz, 10GbE 的高端机器
进一步阅读
继续查看 优化彩色图像。
版本历史
SDK |
变更 |
---|---|
2.9.0 |
添加了Cluster filter(聚类过滤器) 和 Hole Filling filter(空洞填充过滤器)的内容,并根据SDK 2.9.0中引入的新行为更新了Gaussian(高斯过滤器)的内容。 |