如何处理波纹现象

高斯平滑滤波器噪声抑制过滤器 可以帮助消除波纹现象,因为它们可以改善点云中的绝对噪声并抑制更加系统性的噪声,例如波纹现象。

备注

为了可持续地抑制波纹现象,在大部分场景中, Sigma 需要设置为比常用的设置值更高的数值。

为什么点云中会出现波纹?

由于相互反射,点云中会出现波纹或波浪现象。下面是一个波纹现象的示例,其中波纹的形状、频率和幅度各不相同。因此,这种类型的点云伪影的表现比其他类型的噪声更加系统性。对于使用具有光反射表面的料箱的用例来说,波纹问题通常具有较大的挑战性,因为很容易发生从料箱侧壁到料箱底部的相互反射。出于同样的原因,它也会使检测箱内的物体变得困难,因为物体可能会因波纹而变形。对于使用 Phase Engine 捕获,这可能会带来问题, 因为它不像 Stripe Engine 或者 Omni Engine 那样能够抵抗反射 。然而,对于有着严格的时间预算的应用, Phase Engine 因其速度因素而通常是首选。

../_images/ripple-suppression-shiny-bin.png

本文中展示的图像都是来自上方2D图像展示的场景,在该场景中,有一些信封被放置在料箱底部,用于展示从料箱侧壁到料箱底板的互相反射。可以清楚地看到,在2D图像中的信封上有来自料箱侧壁的光反射。

波纹

没有波纹

For very shiny bins, ripples often occur due to interreflections from the outer bin wall onto the bin floor and objects.

The ripples on the bin floor are smoothed out with the Gaussian filter. A sigma value of 2 is applied in this scenario.

逐步抑制纹波现象

  1. 使用 Phase Engine 进行捕获。

    备注

    对于使用 Stripe EngineOmni Engine 的捕获,波纹效应影响最小,没有必要去抑制波纹现象。因此,如果您的捕获时间预算允许,请选择这些引擎以更好地保留边缘,因为它不需要像Phase Engine那样相同级别的高斯平滑。请注意,Omni Engine 本身会应用一些平滑处理。如果您使用这些引擎时仍碰到波纹失真,请启用噪声过滤器(Noise Filter)的 Suppression 功能。

  2. 在Zivid Studio中,放大点云中带有波纹的区域。

    • 深度图也可用于观察,方法是将Z范围调整为波纹区域的深度。如果深度限制范围设置得足够小,则可以看到Z分量中的颜色差异。然后可以将鼠标悬停在波纹的极值上,来获取波纹的最小值和最大值之间的差异。

  3. 启用噪声过滤器 Suppression 并检查波纹是否被去除或减少,如上图所示。

    • 要验证波纹是否已被移除或减少,请使用前一点中说明的深度图方法。

  4. 如果不够,请增加高斯过滤器 sigma 直到波纹被消除或减少。

  5. 最后,必须评估过滤如何影响场景中的边缘和形状。下图显示了给定场景的平滑如何影响这些功能。

    • 对象是否足够完整,以便您的应用运行的算法能够确定有效的拾取位姿?例如,对于基于 CAD 的匹配,这是一个特别重要的主题。因此,在某些情况下,您必须在允许一些波纹现象和保持对象形状和边缘完整之间进行折衷。对于这种情况,请减少 sigma 或禁用 Suppression ,直到找到折衷方案。

    • 请注意,对比度失真校正过滤器会添加额外的平滑效果,如下面最右边的图所示。通常, 对比度失真伪影 会在高对比度场景中出现,例如反光的金属柱状工件。对于这些类型的场景,不应关闭对比度失真校正过滤器,因为它对于保持物体的形状非常重要。对于所有其它可以关闭该过滤器的场景,建议关闭 Contrast Distortion Filter(对比度失真过滤器)

edge

edge_gaussian

edge_contrast_dist

An example of an edge where there are data points on both the upper surface and adjacent surfaces.

This type of edge is smoothed when the Gaussian filter is used for ripple suppression.

The edge is more smoothed when the Gaussian filter and the contrast distortion filter are combined.

edge_2

edge_2_gaussian

An example of an edge where there are only data points on the top surface due to its position relative to the projector.

This type of edge is minimally smoothed when the Gaussian filter is used for ripple suppression.