Pixel 手机上基于多曝光序列的 HDR+ 拍摄功能

文 / 软件工程师 Manfred Ernst 和 Bartlomiej Wronski,Google Research

我们从未停止对 Pixel 进行优化,并会通过定期更新,让它变得更实用、更有趣以及更多的功能,如最近对相机应用的 V8.2 更新。其中一项优化(已于十月份在 Pixel 5 和 Pixel 4a 5G 中推出)便是这一“底层”功能:基于曝光序列的 HDR+ 拍摄。此功能会通过融合以不同曝光时间拍摄的图像来提高图像质量(特别是光影部分),从而产生更自然的色彩、更丰富的细节和纹理,并降低噪声。

HDR 场景为何难以拍摄?

原始的 HDR+ 连拍 系统是高质量手机拍照成像的关键:快速拍摄一组故意曝光不足的连续图像,然后将融合、渲染,使图像在色调范围内保留细节。但这个系统有一个不足之处,那就是在高动态范围 (HDR) 场景中(如下图)的阴影部分噪声较大,这是因为所有拍摄的图像都曝光不足。

image

相同照片的 HDR+(红色轮廓)拍摄效果和基于曝光序列的 HDR+(绿色轮廓)拍摄效果。HDR+ 拍摄依然保持其标志性效果,而基于曝光系列的 HDR+ 拍摄则明显提高了图像质量,尤其是阴影部分的效果,拥有更多自然色彩,细节和纹理也更加丰富,噪声更小

图像传感器自身的物理限制,以及阴影部分的信号较弱,共同导致 HDR 场景拍摄困难。无论是针对阴影还是高光场景,我们都有办法正确曝光,但无法在单次曝光中兼顾两者。

image

采用不同曝光设置、色调映射调至相似整体亮度而拍摄的相同场景。左上:针对高亮部分设置曝光。拍摄了明亮的蓝天,但阴影部分的噪声很大。右下:针对阴影部分设置曝光。阴影部分的噪声降低,但蓝天却过曝(显示为白色)了

摄影师有时会拍摄两张不同程度的曝光,然后将其融合来克服这些限制。这种方法称为曝光融合 (exposure bracketing),可以实现两全其美的拍摄效果,但通过手动调整参数来完成这个过程非常耗时。此外,它在计算成像方面也非常具有挑战性,因为它需要做到以下几点:

  1. 在保持 Pixel 相机快速、可预测的拍摄体验的同时,拍摄额外的长曝光帧。
  2. 利用长曝光帧,同时避免帧间物体运动产生的 鬼影

为了克服这些困难,原始的 HDR+ 系统采用了一种不同的方法来处理高动态范围场景。

HDR+ 的不足

HDR+ 所用的拍摄策略是建立在曝光不足基础上的,这可以避免高光部分的细节丢失。虽然这种策略以牺牲阴影部分的成像质量为代价,但 HDR+ 通过使用连续拍摄抵消了增加的噪声。

image

使用连拍提升图像质量 。HDR+ 的处理始于一组全分辨率原始图像连拍,每个欠曝图像都为相同的曝光程度()。根据场景的不同,系统会配准 2 至 15 张图像并将它们融合成一个用于计算成像的 裸格式图像)。这个融合图像具有更低的噪声和更高的动态范围,从而生成更高质量的最终结果(

此方法适用于具有中度动态范围的场景,对于 HDR 场景却无任何帮助。如要究其原因,我们需要更深入地了解这两种噪声是如何在图像中出现的。

连拍中的噪声

一种重要的噪声叫做散粒噪声 (shot noise),它仅取决于拍摄时获得的总进光量,也就是 N 个帧的进光量之和。每个曝光时间为 E 秒的帧,其散粒噪声与一个曝光时间为 N × E 秒的单个帧相同。如果这是所拍摄图像中唯一的噪声类型,那么连续拍摄可以达到和长时间曝光一样的效果。

遗憾的是,在拍摄每一帧时,传感器都会带入第二种噪声:读出噪声 (read noise)。读出噪声与拍摄时的进光量无关,而是取决于所拍摄的帧数,也就是说,每拍摄一帧,就会额外增加固定量的读出噪声。

这就是为什么用连拍方法来减少总噪声不如简单地长时间曝光来得有效:多帧拍摄虽然可以减少散粒噪声,但也会增加读出噪声。虽然读出噪声随帧数的增加而升高,但我们仍然可以通过连拍降低整体噪声,但这样做会降低效率。如果将一个长曝光分解成 N 个短曝光,则最终图像中的信噪比会因为读出噪声的增加而降低。在这种情况下,要获得单次长曝光的信噪比,我们则需要合并 N2个短曝光帧。在下面的例子中,如果一个长曝光被分成 12 个短曝光,我们必须拍摄 144 (12 × 12) 个短帧来匹配阴影部分的信噪比!拍摄和处理这些帧会花费更多时间,连拍和处理连拍可能需要一分钟以上,从而导致糟糕的用户体验。相反,采用包围式曝光则使我们能够在兼具高光保护和降噪功能的情况下,同时拍摄短曝光帧和长曝光帧。

image

左图 :夜视模式下合并 12 个短曝光帧的效果。右图:曝光时间为单个短曝光帧 12 倍的单个帧。更长的曝光时间能显著降低阴影部分的噪声,但会牺牲高光部分的效果

基于多曝光融合的解决方案

多曝光融合带来的挑战使得原始的 HDR+ 系统无法使用它,但我们在之后不断改进,加上最近的不懈努力,终于让它在相机应用中得到实现。首先,为 HDR+添加多曝光融合需要重新设计拍摄策略。使用零秒延时 (ZSL) 技术使拍摄变得复杂, 这项技术可为 Pixel 上的快速拍摄体验提供支持。在 ZSL 的助力下,按下快门前 ,取景器中显示的帧均是用于 HDR+ 连拍融合的帧。在使用多曝光融合的情况下,我们会在按下快门后拍摄一个额外的长曝光帧,而此帧不会显示在取景器中。请注意,在按下快门后保持相机静止半秒钟来适应长曝光,有助于改善图像质量,即使正常手抖也不会对此造成影响。

image

拍摄策略上图:此例中,在按下快门之前,原始的 HDR+ 方法拍摄了六个短曝光帧。下图:在按下快门之前,基于曝光序列的 HDR+ 拍摄了五个短曝光帧,并在按下快门后拍摄了一个长曝光帧

在夜视模式下,此拍摄策略则不受取景器的限制,因为所有帧都是在按下快门之后拍摄的,此时取景器已关闭,此模式能够很好地适应长曝光帧拍摄。本例中,我们拍摄了三个长曝光帧,以进一步去噪。

image

在夜视模式下的拍摄策略。上图:原始夜视功能拍摄了 15 个短曝光帧。下图:启用包围式曝光的夜视功能拍摄了 12 个短曝光帧和 3 个长曝光帧

融合算法

在融合多曝光图像序列时,将一个短帧选作参考帧,以避免可能发生的高光部分过曝和运动模糊。在合并所有其他帧之前,先将其与此帧对齐。这就带来了一个挑战:对于复杂的场景运动或遮挡区域,无法找到精确匹配的区域,此时使用朴素融合算法将会造成鬼影 (Ghosting Artifacts)。

image

左图 :停用去鬼影功能后,移动的人周身出现鬼影;右图 :强鲁棒性融合后生成清晰的图像

为解决此问题,我们设计了一个新的空间融合算法,其与 超分辨变焦 (Super Res Zoom) 所用的算法类似,会逐个判断像素的内容,决定是否应该合并图像内容。这一去鬼影过程在处理不同曝光程度的帧时将会更加复杂。长曝光帧会产生不同的噪声特征,高光部分会出现过曝或不同程度的运动模糊,这使得与短曝光参考帧的对比更加困难。此外,所拍摄曝光序列中的鬼影更明显,因为遮掩这些错误的噪声减少了。尽管存在这些挑战,我们的算法和原始的 HDR+ 及超分辨变焦一样,能够很好地解决上述问题,并不会产生鬼影。同时,它的图像合并速度较之前提升 40%。这是因为在成像过程初期就对裸格式图像进行了融合,所以我们能够在保持其余成像步骤和 HDR+ 的标志性效果不变的同时,实现所有这些好处。此外,喜欢使用计算成像中的裸格式图像的用户也能从这些图像质量和性能改进中获益。

Pixel 上的多曝光融合

多曝光融合的 HDR+ 功能目前已在 Pixel 4a (5G) 及 Pixel 5 上推出,用户可以在使用默认相机时,在夜视和人像模式下使用这一功能。Pixel 4 及 4a 用户则可以通过 Google 相机应用在夜视模式下使用多曝光融合功能。用户无需采取任何操作,即可激活基于多曝光融合的 HDR+ 功能。基于多曝光融合的 HDR+ 功能将根据场景的动态范围和运动存在与否,选择最佳曝光度,以拍摄出优质的图像(示例)。

致谢

基于曝光序列的 HDR+ 是 Google 多个团队合作的成果。该项目的成功离不开以下成员的共同努力,感谢 Sam Hasinoff、Dillon Sharlet、Kiran Murthy、Mike Milne、Andy Radin、Nicholas Wilson、Navin Sarma、Gabriel Nava、Emily To、Sushil Nath、Alexander Schiffhauer、Isaac Reynolds、Bill Strathearn、Marius Renn、Alex Hong、Jose Ricardo Lima、Bob Hung、Ying Chen Lou、Joy Hsu、Blade Chiu、David Massoud、Jean Hsu、Ellie Yang 和 Marc Levoy。

原文:HDR+ with Bracketing on Pixel Phones
中文:TensorFlow 公众号