调整合适的曝光以获取好的点云
介绍
本节描述的方法旨在捕获整个场景的完整点云。在许多实际应用中,只需要对场景中的某些对象或区域进行良好的曝光即可。在这些场景中可以应用相同的方法,但不需要对不感兴趣的区域进行曝光调整。
在本教程中,我们将使用Zivid Studio中的直方图功能来帮助我们在找调整曝光值时评估点云的质量。 目标是以足够高的SNR曝光尽可能多的像素,以使点云获得较低的时间噪声。
在Zivid Studio中,当鼠标悬停在2D RGB或深度图图像中的某个像素上时,可以在Zivid Studio的屏幕左下方看到其SNR值 ,如 此处 所示。 SNR值等于或大于7被认为是好的数据,这样的SNR值通常与曝光良好的RGB通道有关,其值在32到255之间。本文中的方法旨在覆盖该区域内尽可能多的像素。
在本教程中,假定场景包括非常闪亮的材料(例如金属圆柱体)和深色材料(例如黑色塑料)。 同时还假设在50 Hz电网频率下的环境光中工作。 下图展示了一个示例场景。

由于此类场景所包含的动态范围可能比Zivid 3D相机在单次图像采集中所能捕获的动态范围要更宽,因此常常需要使用Zivid的HDR功能对不同强度频谱的区域进行多次采集,如下图所示。
备注
Zivid Two使用12位图像,因此单次采集时具有比Zivid One+更宽的动态范围。因此,使用Zivid Two可以用更少的采集次数覆盖相同的动态范围。
备注
与使用Phase Engine的单次采集相比,使用 Stripe Engine 的单次采集能够覆盖更宽的动态范围。对于Zivid One+相机,Stripe Engine动态范围的优势更为明显。而对Zivid Two来说这种效果并不明显,因为使用Phase Engine的Zivid Two所能够覆盖的动态范围比使用Phase Engine的Zivid One+的动态范围更宽。 除了能够覆盖更宽的动态范围,Stripe Engine还能够带来更多的优势,例如处理反射。

直方图
Zivid Studio中的直方图是评估点云质量的强大工具。它会对图像中具有不同强度值的像素分别进行计数,并将它们显示在范围在0到255的分区中。我们用来评估点云质量的直方图方法是基于像素强度与其3D质量之间的关系。像素强度越高(除非饱和),SNR越高,因此其3D质量越高。当使用对数x轴显示直方图时,每一格分区代表一个曝光等级(stop)。这种表示可以很方便地评估需要怎样的曝光值才能很好地曝光场景的某些区域。

上图是一个场景曝光良好的直方图示例。我们可以看出这一点,因为大多数像素位于对数图的右上半部分。从直方图中也很容易看出,将强度加倍或增加一个曝光等级(stop),会将由强度从64到128的像素形成的驼峰 “移动” 到直方图的最右侧区域。比如我们可以通过将曝光时间加倍来实现这一点。
小心
默认的 Color Mode 是 Automatic,当使用不同采集设置的多采集HDR捕获时,它等同 于 ToneMapping 的设置。色调映射(Tone mapping)会修改像素值而影响到直方图,导致无法使用直方图来评估曝光质量。因此,在使用直方图时,您必须每次评估一个采集项,并 将 Color Mode 设置为 :guilabel:` UseFirstAcquisition` 或 Automatic。
小心
Gamma 校正 和 Color Balance 设置会修改像素值,导致无法使用直方图来评估曝光质量。因此,使用直方图时必须将 Gamma 和 Color Balance 设置为1.0。
曝光等级(Stops)表格的说明
我们将使用的第二个强大的工具是Stops表格。 该表格显示了Zivid 3D相机的stops的跨度,每一行显示了Zivid相机中每个曝光参数的可调整范围。每个单元代表了Zivid相机中四个曝光变量(光圈,曝光时间,亮度和增益)的stop位置。 如果需要增加一个stop的曝光,我们可以将某一个变量向右移动一个单元格。如果需要减少一个stop的曝光,我们可以将某一个变量向左移动一个单元格。 例如:当前曝光时间为10 000μs。如果我们希望增加一个stop的曝光,那么可以将曝光时间增加到20 000μs。
请注意,该表显示了两行曝光时间,其中一行适用于50Hz电网频率,另一行适用于60Hz电网频率。 如 Exposure Time(曝光时间) 所描述。此表是为Zivid One+创建的, Zivid Two的值可能会有所不同。详见下文。

备注
单元格的颜色编码显示了这些值的”好”的程度。强烈建议您使用深绿色单元格中的设置, 浅绿色单元格也是推荐使用的设置,而黄色单元格则被认为不是太好的设置,除非有必要,否则应避免出现红色单元格中的设置。 因此,曝光值应尽可能由绿色单元格中的参数值组成。
小技巧
尝试使用Stops表中的 绿色 单元格组合来构建您的曝光值组合。
准备工作-放宽过滤器的设置
为了评估尽可能多的好的点,我们首先应放宽所有过滤器的设定值。在找到所有合适的曝光值后,最后一步才是设置过滤器。我们可以通过设置以下过滤器值来放宽过滤器过滤效果:
Noise (噪声过滤器): 1.0
Gaussian (高斯平滑): Disabled
Reflection (反射过滤器): Disabled
Outlier (离群值过滤器): 50
Contrast distortion (对比度失真过滤器): Disabled
采集#1 - 曝光高光区域
我们想从曝光高光开始,然后逐渐增加曝光,以覆盖中间区域并最终覆盖低光(深色区域)。 如果以下步骤不足以在场景中的特别光泽和明亮的部分获得良好的数据,我们建议您按 照 处理高光和闪亮的物体 里的步骤设置您的第一次采集。
第1步-设置低曝光值
我们首先关闭除一个采集项之外的所有采集项,因此我们只进行一次采集。然后将曝光设置得非常低,以使图像(或直方图)中没有像素的RGB值为255。以下起始条件应该适用于大多数情况。
光圈 (\(f\)-值): 32
Exposure time: 10 000(在60Hz电网频率的地区的设置为8 333)
Brightness: 1.0
Gain 1.0


如果图像中仍有如上图所示的过度曝光的区域,请尝试进一步减少曝光时间并增加 \(f\)-值。下图展示了没有过度曝光像素的捕获。


第2步-在最亮的像素上获得良好的曝光
参考stops表,通过减少 \(f\)-值每次向右移动一个stop,直到最亮的像素的强度接近255。请通过观察点云或RGB图像来确认高光区域已经有数据。高光区域通常位于反光的球体和圆柱体的边缘或顶部。
在这个示例中,我们需要增加2个stops。 因此,我们的首次采集将包括以下设置值:
光圈 (\(f\)-值):16
Exposure time: 10 000(在60Hz电网频率的地区的设置为8 333)
Brightness: 1.0
Gain 1.0


采集#2-曝光中间色调
在覆盖了高光之后,我们将继续曝光图像中的更多区域。通过查看直方图,我们确认需要曝光的下一部分图像为曝光强度低于32的部分。我们希望将该区域在图像的上半部向上移动到255,通常可通过增加3-4个stops来完成 。 首先应通过最大化投影仪亮度来增加第一个stop,因为这样可以获得最高的信噪比。 然后,我们可以通过增加光圈来增加3个stops以使设置的光圈值仍停留在绿色单元格中。

第1步-新采集项
添加另一个采集并禁用第一个采集。

第2步-增加曝光
总共向右移动3或4个stops。 第一个stop应该使亮度最大化,而其他的stops通常通过设置光圈实现。
示例中采集#1的光圈为16。因此,我们向右移动三个stops(在Stops表计算光圈格得出),从而获得光圈设定值5.6,并将投影仪亮度从1.0增加到 1.8。
采集#2的设置值如下:
光圈(\(f\)-值):5.6
Exposure time: 10 000(在60Hz电网频率的地区的设置为8 333)
Brightness: 1.8
Gain: 1.0


采集#N - 不断增加对低光区域的曝光
重复采集#2的步骤。找到需要更高曝光的下一个像素区域,并计算使这些像素的强度接近255所需的stops。请记住仅在启用一个采集项的情况下使用直方图。
如果我们的下一个区域的强度大约为16,我们希望将强度提高到255左右,即增加另外4个stops。 我们可以通过增加增益,光圈和曝光时间来获得这些stops:
采集#3:
光圈(\(f\)-值):2.8
Exposure time:20 000(在60Hz电网频率的地区的设置为16 667 )
Brightness: 1.8
Gain: 2.0


我们可能需要非常高的曝光才能从最暗的区域提取数据。这可能需要在最后一个采集中使用高曝光时间和增益。
继续添加采集,直到几乎所有像素都位于对数直方图的右侧,如下图所示。


享受使用HDR
启用所有采集项并捕获HDR以确认您已覆盖增加的动态范围。

专家提示:以时间为代价进一步改善噪音
如果时间预算允许,可以通过重复采集以实现额外的SNR的提升。 进行多次相同设置的采集相当于执行过采样,因此最多可将噪声抑制 \(\sqrt{N}\),其 中 \(N\) 表示采集次数。重复采集是一种以时间为代价最大化点云质量的绝佳方法,在处理需要更高精度的区域时可以复制针对该区域的采集项进行采样。

注意你的取舍
曝光变量 |
优点 |
缺点 |
Exposure Time |
|
|
Aperture |
|
|
Projector Brightness |
|
|
Gain |
|
|
备注
对于Zivid One+系列相机,更改光圈比更改曝光时间更快。
进一步阅读
在正确曝光采集后,就可以按照 调整过滤器 的说明来设置过滤器了