如何处理HDR中颜色不一致的问题

介绍

在本文中,我们将讨论如何克服HDR中的颜色不一致问题。

问题

如 果 Color Mode 设置为ToneMapping或Automatic(默认设置),则多次采集的HDR捕获的彩色图像是应用了色调映射之后的结果。虽然色调映射解决了为特定捕获优化颜色的挑战性问题,但它也有一个缺点。由于它是针对整个场景的函数,会导致场景变化时颜色也变得不一致。下面的例子解释了这种现象。

假设我们有一个相对较暗的场景(黑色表面上的梨)。我们找到了涵盖足够宽的动态范围的采集设置并执行了多次采集的HDR采集(左图)。然后我们在场景中添加了一个明亮的对象(香蕉),并使用相同的设置再次捕获(右图)。

HDR捕获的深色场景的图像(Color Mode:Automatic或ToneMapping)

使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获

HDR capture of a dark scene (Color Mode: Automatic or ToneMapping)

HDR capture with the same settings of the same scene but with an additional bright object added

让我们看看输出的彩色图像(右图),特别是场景中最初的深色对象(梨或黑色表面)。我们注意到这些对象的RGB值在将明亮对象(香蕉)添加到场景之前和之后是不同的。

RGB值的变化对于某些应用来说可能是一个问题,例如,使用基于颜色信息对对象进行分类的算法的应用。原因是这些算法会期望RGB值在重复捕获时保持相同(一致)。

解决方案

使用UseFirstAcquisition颜色模式进行HDR捕获

备注

This solution can be used only with SDK 2.7 and higher. Change the KB to an older version in the top left corner to see a solution for SDK 2.6 or lower.

要克服HDR颜色不一致的问题,请确定HDR捕获的哪些采集能够提供最佳颜色。我们建议针对场景中最亮的物体优化采集以避免饱和。然后,将该采集设置为采集设置中的第一个。最后,使用UseFirstAcquisition颜色模式来捕获您的HDR图像。

我们将通过一个示例引导您完成整个过程。让我们假设我们有一个带有两次采集的HDR。第一次采集针对深色物体(梨)进行了优化。第二次采集针对明亮物体(香蕉)进行了优化。使用UseFirstAcquisition颜色模式进行HDR捕获会得到以下结果。

HDR捕获的深色场景的图像(Color Mode:UseFirstAcquisition)

使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获

HDR capture of a dark scene (Color Mode: UseFirstAcquisition)

HDR capture with the same settings of the same scene but with an additional bright object added

两张图像中深色物体(梨)的颜色相同。颜色一致性得以保留。

然而,因为第一次采集是针对深色物体进行优化的,所以场景中最亮的物体(香蕉)是饱和的。饱和度可能会导致问题,例如,如果我们想根据颜色对对象进行分类。为了克服这个问题,我们可以重新排列采集设置。我们将为场景中最亮的物体(香蕉)优化的采集设置为第一次采集。第二个采集项则针对深色物体(梨)进行优化。现在,我们看到颜色的一致性通过一起和单独捕获的明亮的和深色的对象得以保留。而且最亮的物体(香蕉)没有饱和。

HDR捕获的深色场景的图像(Color Mode:UseFirstAcquisition)

使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获

使用相同场景的相同设置但仅使用明亮对象进行HDR捕获

HDR capture of a dark scene (Color Mode: UseFirstAcquisition)

HDR capture with the same settings of the same scene but with an additional bright object added

HDR capture with the same settings of the same scene but only with the bright object

备注

有一个能够提供最佳颜色的单个采集项是最佳的状况。该采集项针对场景中最亮的物体进行了优化,因此在这些物体也具备非常好的SNR。该采集可能已经是您的HDR采集设置的一部分,那么久不需要额外的采集来处理HDR中的颜色不一致的问

如果彩色图像显得太暗,可以使 用 Gamma 进行设置。

小心

Capture Assistant返回的第一个采集可能无法提供最佳的彩色图像。因此,如果使用Capture Assistant和UseFirstAcquisition彩色模式,您可能需要重新调整采集的顺序。

提示

在Zivid Studio的采集设置中依次点击 Move to top 即可将选定的采集项移动到序列中的第一个位置。

将采集移到顶部,使其成为序列中的第一个

额外捕获

备注

该解决方案仅适合于当您不能使用Automatic或ToneMapping颜色模式进行HDR捕获的情况。

克服HDR色彩不一致的替代解决方案是在主捕获之外进行单独捕获。这种方法假设用户使用主捕获来获取点云数据,并使用附加捕获来获取彩色图像。附加捕获可以是2D或3D捕获,启用或关闭投影仪。无论使用哪种捕获模式,都必须关闭色调映射(Color Mode设置为UseFirstAcquisition)。

Color Mode设置为UseFirstAcquisition或Automatic的情况下单次捕获的深色场景

使用相同场景的相同设置但添加了额外的明亮对象的单次捕获(Color Mode设置为UseFirstAcquisition或Automatic)

Single capture of a dark scene with Color Mode set to UseFirstAcquisition or Automatic

Single capture with the same settings of the same scene but with an additional bright object added (Color Mode set to UseFirstAcquisition or Automatic)

备注

使用单独的2D捕获作为附加捕获是直观且概念上正确的。如果使用的是Zivid Two相机,请始终考虑进行单独的2D捕获。但是如果使用的是Zivid One+,请考虑以下在2D和3D捕获调用之间切换的限制。

局限性

下面我们将说明在2D和3D捕获调用之间切换时按顺序执行捕获的限制。

小心

如果您使用了在2D和3D捕获之间进行切换的顺序捕获,则Zivid One+(不是 Zivid Two)相机会有切换时间损失。仅当2D捕获设置使用了>0的亮度时才会发生这种时间损失,因为需要将不同的投影模式载入到投影仪控制器中,这会需要一定的时间。因此,在切换捕获模式(2D和3D)时,捕获之间存在延迟。从 3D切换到2D时的延迟约为350毫秒,从2D切换到3D时的延迟约为650毫秒。因此,除了2D捕获时间和3D捕获时间之外,可能还有大约1秒的额外时间开销。在SDK 2.6及更高版本中,此限制仅在使用亮度>0的2D捕获时发生。

2D捕获设置

投影仪亮度 = 0

投影机亮度 > 0

Zivid Two

没有

没有

Zivid One+

没有

350-900ms的切换时间损失

小技巧

Zivid Two相机没有Zivid One+相机的切换时间损失问题,使用Zivid Two在2D和3D捕获模式之间切换会立即执行。

备注

2.6版本的SDK移除了Zivid One+相机在3D和2D捕获模式之间切换的时间。这适用于在投影仪关闭的情况下使用2D捕获(投影仪亮度设置为0)。

对于Zivid One+相机,如果您必须使用投影仪,为了获取彩色图像而额外拍摄一张3D图像可能比使用投影仪额外拍摄一张2D图像耗时更少。此方法假定您使用来自主3D捕获(单次曝光或HDR)的点云数据和来自附加3D捕获的彩色图像。如果您的主3D捕获使用的是单次捕获,则可以对附加3D捕获使用相同的曝光时间以优化捕获时间。如果使用的是HDR,则最后一次HDR采集的曝光时间应与附加的3D采集的曝光时间相同。