HDR 色彩不一致

问题

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

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

HDR捕获的深色场景的图像(Color Mode:Automatic或ToneMapping) HDR捕获的深色场景的图像(Color Mode:Automatic或ToneMapping)
使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获 使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获

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

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

解决方案

独立配置 2D 捕获设置

如果您遇到 HDR 颜色不一致的问题,很可能是因为您没有配置 Settings::Color (在 SDK 2.14 中添加)。在这种情况下,Zivid 软件会从同一次多采集 HDR 捕获中生成点云和彩色图像。

要解决 HDR 的色彩不一致问题,请考虑以下几点。

首先,使用 Settings::Color 配置 2D 采集设置。我们建议从 2D 预设值 开始。如果需要进一步调整,请查看 优化彩色图像

小技巧

您可以在 Zivid Studio 中加载旧的 YML 文件,配置 2D 设置,并将设置导出到 YML 文件。

分别进行 2D 和 3D 捕获

使用 capture2D() 进行 2D 捕获。

使用 capture3D() 进行 3D 捕获。

小技巧

您可以对这两个捕获 API 使用相同的 YML 文件/设置对象。

一次性进行 2D 和 3D 捕获

使用 capture2D3D() 执行结合了 2D 和 3D 捕获的单一操作。

独立配置深色场景的 2D 设置 独立配置深色场景的 2D 设置
相同的设置,但向场景中添加了一个额外的明亮物体 相同的设置,但向场景中添加了一个额外的明亮物体

如果必须使用已弃用的 camera.capture() API,请确保使用 Settings::Color 明确配置 2D 采集设置。这可确保根据指定的 2D 采集设置生成彩色图像。

这些解决方案需要 Zivid SDK 2.14 或更高版本。如果您必须使用旧版 SDK,请查看下一个解决方案。

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

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

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

HDR捕获的深色场景的图像(Color Mode:UseFirstAcquisition) HDR捕获的深色场景的图像(Color Mode:UseFirstAcquisition)
使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获 使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获

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

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

HDR捕获的深色场景的图像(Color Mode:UseFirstAcquisition) HDR捕获的深色场景的图像(Color Mode:UseFirstAcquisition)
使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获 使用了相同设置但添加了额外的明亮对象的相同场景的HDR捕获
使用相同场景的相同设置但仅使用明亮对象进行HDR捕获 使用相同场景的相同设置但仅使用明亮对象进行HDR捕获

备注

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

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

小心

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

提示

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

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

额外捕获

备注

仅当您必须使用自动或色调映射颜色模式进行 HDR 捕获时,才应使用此解决方案。

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

颜色设置为UseFirstAcquisition或Automatic的情况下单次采集捕获的深色场景 颜色设置为UseFirstAcquisition或Automatic的情况下单次采集捕获的深色场景
使用相同场景的相同设置但添加了额外的明亮对象的单次采集捕获(颜色模式设置为UseFirstAcquisition或Automatic) 使用相同场景的相同设置但添加了额外的明亮对象的单次采集捕获(颜色模式设置为UseFirstAcquisition或Automatic)