处理高光和闪亮的物体
介绍
本文将讨论在捕获非常闪亮的物体的点云时可能出现的高光处理的具体挑战以及如何处理它。本文不涉及相互反射和低光成像的内容。
在存在闪亮物体的场景中,该物体的某些区域可能会导致从Zivid相机的投影仪到成像传感器的直接反射。如果该对象的镜面反射性极强,那么反射光的数量可能比图像中的其他光源强数千倍。这很可能导致像素变得过饱和。在下面的两个图像中可以看到此类区域的示例。
过饱和的像素通常会将光”溢出”到周围的像素上。 这种镜头模糊现象会导致 对比度失真伪像.这种效果在黑色到白色的过渡和光泽的圆柱体上尤其明显。见下图。
尝试切换到Stripe Engine
您可以控制的相机设置之一是 Vision Engine(视觉引擎) 。默认情况下,它被设置为Phase Engine,但将其更改为Stripe Engine可以显着提高包含了有光泽的对象的场景的点云质量。Stripe Engine具有更高的动态范围,使其拍摄高光和相互反射的场景时能够获得更好的效果。
尝试将反射过滤器模式切换为Local模式
您可以控制的另一个设置是 Reflection Filter(反射过滤器)。这个过滤器有 Global
和 Local
两种模式,其 中 Global
是默认的设置。切换 到 Local
可能会提高点云的质量,因为它通常能更好地移除幽灵平面和高光等反射伪像。
Reflection Filter disabled (ghost plane) |
Reflection Filter enabled - Global mode (smaller ghost plane) |
Reflection Filter enabled - Local mode (no ghost plane) |
请注意,与 Global
相比, Local
对离群值的过滤效果较差,因此您可能需要调整 Outlier Filter(离群值过滤器) 的阈值。
Reflection Filter - Global mode (less outliers) |
Reflection Filter - Local mode (more outliers) |
检查高光是否由投影仪导致
如上图所示,可以使用一些简单的方法来确定高光是否由Zivid投影仪导致。
研究2D图像,并考量表面上发生高光的角度。 此方法需要一些实践经验。
多拍摄一张图像进行差异比较。 通过将投影仪的亮度设置为0关闭投影仪的光线,或将投影仪镜头遮挡住(比如用手遮挡)并拍摄第二张图像。 如果高光在第二张图像中消失,则可以推断出该信号源来自投影仪。
最大化3D传感器的动态范围来捕获高光
要获得闪亮的物体的高质量点云,需要同时捕获高光和低光区域。 Zivid 3D相机具有宽广的动态范围,可以同时拍摄深色和明亮的对象。
极具挑战性的场景(如下图所示)通常需要3次或更多HDR采集。具有挑战性的场景通常应具有:
1-2次采集来覆盖最强的高光区域(非常低的曝光)。
1-2次采集来覆盖场景的大部分区域(中等曝光)。
1-2次采集来覆盖最暗的区域(非常高的曝光)。
请遵循以下两个原则:
保持曝光处于非常低的状态。
可能有必要降低投影仪的亮度,以将投影图案幅度保持在成像传感器的动态范围内。
原则上,通过限制投影仪亮度,我们试图实现的是将信号从过饱和区域带回健康区域。如下图所示。
现在我们将专注于捕获高光区域。我们假设我们已经使用上述方法识别了场景中的极端高光。在整个过程中,请按 照 如何在目标像素上获得良好的3D数据 中描述的过程验证高光部分确实过度曝光 。
让我们假设下面的场景。
我们可以清楚地看到场景中四个圆柱体中的两个上有两个强烈的亮点。
找到最低的成像传感器曝光
首先,在调整投影仪的曝光之前,我们将调整成像传感器的曝光。可以使用以下方法找到曝光:
将brightness(亮度)设置为默认值 (1.0)
使用具有最小相机曝光的单次采集:
根据电网频率将exposure time(曝光时间)设置为8333或10000(请参阅 Exposure Time(曝光时间) )。
将gain(增益)设置为1。
将f-number( f值)设置为 32。
将f值增加1-2步,并为每一步拍摄一张图像。每次捕获后观察点云和2D图像。如果点云中出现了一些点,并且图像开始显得完全黑暗,而没有包含许多过度曝光的像素,则将其作为我们的*高光采集*。
下面的视频展示了我们如何找到最低的成像传感器曝光。
补偿投影仪导致的高光
考虑到高光点在高光图像帧中仍然太大及太强烈,如果需要改善这些区域的数据,那么下一步就是减少投影仪亮度造成的高光点。
备注
在大多数应用中,没有必要使用投影仪补偿的高光帧。
克隆*高光采集*。这将添加一个与*高光采集*具有相同设置的采集。现在您将拥有两个相同的处于激活状态的采集项。
禁用第二个采集项。 我们将调整第一个采集项。
将亮度降低1/2并拍摄图像(例如,将亮度从1.0降低到0.5,或从0.5降低到0.25)。 当高光区域缩小成很小的斑点时,该设置即为第二个高光采集项。
小心
请避免使用低于 {0.25} 的投影仪亮度!
下方视频展示了调整第二个高光采集项的示例。
曝光场景的其余部分
现在我们有两个针对高光的采集,我们将继续对场景的其余部分进行曝光。
建议按照我们的其它教程了解如何进行此操作,但同时,下面的视频展示了一种简单的曝光方法。
在此示例中,我们只是简单地将每次新添加的采集项都增加了3 stops曝光,直到我们采集到场景中大部分的数据。我们从直方图中可以看出,大部分像素最终在32到255之间曝光。整个捕获时间大约为1秒。
处理对比度失真
处理对比度失真主要有两种方法。我们可以通过最大化相机的动态范围,并将相机定位到一个合适的位置上,以此减少失真现象。 然后我们可以使用 Contrast Distortion Filter(对比度失真过滤器) 修正/移除其余的受影响的点。
旋转和对齐场景中的对象
首先要注意的是,这是在3D传感器的x轴上产生的效果。 如果您的应用允许将相机的y轴上的麻烦区域旋转到其x轴,则可以大大减轻对比度失真的影响。例如下图的示例,通过将光泽的圆柱体旋转90°,沿着圆柱体顶端的过度曝光区域将对齐相机的基线。
使背景的反射率与目标对象的反射率匹配
一个好的经验法则是,尝试使用与要成像的对象相似的亮度或颜色作为场景的背景:
对于明亮的物体,可使用明亮的背景(最好是白色朗伯(Lambertian)型)。
对于深色物体,请使用深色背景(例如,大多数传送带使用的黑色橡胶)。
对于大多数有色、无光泽的物体,使用具有相似反射率的背景(例如,对于香蕉,使用灰色或黄色背景)。
对于光泽的金属物体,尤其是圆柱形,圆锥形和球形物体,可使用深色的光吸收性背景,例如黑色橡胶。 这是因为目标光线通常会在物体的可见的边缘附近被反射离开,从而使它们显得非常暗(见下图)。 同时,来自周围区域的光可能会反射到圆柱边缘。
使用对比度失真过滤器
该过滤器可修正和/或消除由于 对比度失真 - 高对比度区域中的散焦和模糊所引起的伪像。这样可以使采集的对象的几何形状与实际更接近,特别是在平面和圆柱体上可观察到。如果您想了解更多关于此过滤器以及如何调整其参数的信息,请查看 Contrast Distortion Filter(对比度失真过滤器)。
示例
我们将在下面的场景中演示使用对比度失真过滤器处理高光的方法。
以下三张图片中最上面的一张是不使用对比度失真过滤器的点云网格图像,中间一张是仅启用了该过滤器的修正功能的图像,最下面的一张是同时启用了移除和修正功能的图像。 仅使用修正功能已经可以减小伪像的尺寸, 而过滤器的移除功能则可以完全移除伪像,但也会移除场景中强度变化强烈的其他点。
进一步阅读
在下一篇文章中,我们将 处理强环境光。