作者:杰出工程师 Marc Levoy 和主管软体工程师 Yael Pritch

Night Sight 是 Pixel 谷歌相机的新功能,能够在非常黑暗,甚至是肉眼无法看清物体的环境下拍摄出锐利、清晰的照片。它能够在 Pixel 全系列手机的前后摄像头上工作,不需要使用三脚架或闪光灯。在本文中我们将谈论何在低光照环境下拍摄照片具有挑战性,并将讨论计算摄影和机器学习技术,以及作为 Night Sight 基础的 HDR+。

左:iPhone XS。右:Pixel 3 Night Sight。

低光摄影为何存在困难?

只要是尝试过在昏暗的场景拍照的人,就一定不会对图像杂讯感到陌生,它们看起来像是不同像素间的亮度在随机变化。对于搭载小尺寸图像感测器和镜头的智能手机来说,主要的杂讯源是通过镜头照射到感测器上的光子数目的自然变化,称为散粒杂讯。所有相机都受此影响,即使在感测器电路完美时也是如此,更何况它们并不完美。因此第二种杂讯源是光照射到感测器的像素上产生的电荷被转换为数字信号时出现的随机误差,称为读出杂讯。各种各样的杂讯源将影响整体的信噪比(SNR),用来比较「有用」的信号相对于杂讯信号的强度。幸运的是,信噪比随著曝光时间的平方根(或更快)而提升,因此使用长曝光能够有效提升图像纯净度。但是,在低光照条件下保持静止足够长的时间拍摄并不容易,此外你的摄影对象可能同样不会保持静止。

在2014年,我们提出了HDR+,一种计算摄影技术,以连拍多帧并使用软体进行对其与合成的方法来提升在这类环境拍摄时的图像质量。HDR+ 的主要目的是改善动态范围,这意味著能够拍摄具有很大亮度范围的场景(例如日落与背光人像)。每一代 Pixel 手机均搭载了 HDR+。事实证明,合成多张图像还能够降低散粒杂讯与读出杂讯的影响,因此能够改善低光照条件下的信噪比。为了保持图像锐利,即使您的手和被摄物体都在抖动,我们使用了短曝光,并且丢弃无法有效对齐的坏帧。这使得 HDR+ 即使在尝试收集更多光线时也能得到锐利的图像。

多么黑暗才算是黑暗?

但是,如果捕获和合并多个帧能够在低光照条件下产生更清晰的图像,为什么不使用 HDR + 合成几十帧,有效地看清黑暗?让我们从定义「黑暗」的含义开始吧。当摄影师谈论场景的光线水平时,他们通常以勒克斯(lux)并测量它。从技术上讲,勒克斯是每单位面积到达表面的光量,以每平方米的流明数来衡量。为了让您感受不同的勒克斯级别,这里有一个方便的表格:

30000 lux - 阳光直射的人行道

10000 lux - 晴天,但处于阴影中的人行道

1000 lux - 阴天的人行道

300 lux - 典型的办公室的亮度

150 lux - 家中桌面的亮度

50 lux - 餐厅的平均亮度

20 lux - 氛围灯照亮的餐厅

10 lux - 在抽屉里找到一对匹配的袜子的所需最低亮度

3 lux - 夜晚,路灯照亮的人行道

1 lux - 阅读报纸所需的最低亮度

0.6 lux - 满月照亮的人行道

0.3 lux - 无法在地上找到钥匙的亮度

0.1 lux - 不借助手电筒就无法步行穿过房间的亮度

拍摄单张图像的智能手机在 30 lux 以下的环境就不够理想了,使用多帧合成(例如 HDR+)的手机能够在低至 3 lux 的环境表现良好,但在更暗的环境也不得不依赖 LED 补光灯。 Night Sight 的目标是改善 0.3 – 3 lux 环境下的拍摄质量,仅需使用智能手机按下快门,并且不借助补光灯。为了使这项功能良好工作,有几个关键元素,其中最重要的是捕获更多的光子。

捕获信息

通过延长每帧的曝光时间提升信噪比以拍摄更纯净的图像时,不幸的是这将引入两大问题。首先,Pixel 手机的默认拍摄模式称为零延迟快门(ZSL),这在本质上就限制了快门时间。在启动谷歌相机 app 的同时,它就已经开始捕获图像帧并存储在一个圆形缓冲区内,这样会丢弃旧的帧并保留新的帧。按下快门时,将会取出最近的 9 或 15 帧传递给 HDR+ 或 Super Res Zoom 程序。这意味著你能够准确地捕捉到所需的瞬间——零延迟快门由此得名。但由于这些图像同时也显示在屏幕上使你能够对准目标,使得 HDR+ 限制曝光时间为最多 1/3 秒,而无论场景多么黑暗,这样做才能保持取景器至少有 15 fps 的刷新率。

在黑暗的环境下,更长的曝光时间是必要的,因此 Night Sight 使用正延迟快门(PSL),在按下快门之后才会开始捕获图像。使用正延迟快门意味著需要在按下快门后一段时间内保持稳定,但这样做能够延长曝光时间,也因此能够在更低的亮度下改善信噪比。

随著每帧曝光时间的延长,第二个问题随之显现——运动模糊,通常是由于手抖或场景中的物体在移动。Pixel 2 与 Pixel 3 搭载的光学防抖(OIS)能够在中等曝光时间(最长大约 1/8 秒)抑制手抖,但对更长的曝光时间或存在移动中的物体时没有帮助。为了抑制这种光学防抖无法修正的运动模糊,Pixel 3 的默认拍摄模式使用了运动检测技术,包括使用光流法测量最近的运动并选择合适的曝光时间以抑制模糊。Pixel 1 与 Pixel 2 的默认拍摄模式没有运动检测,但三代手机在 Night Sight 模式都会使用它,如果没有检测到运动,每帧曝光时间将提升至 1/3 秒。对于没有光学防抖的 Pixel 1,曝光时间提升较少(对于同样没有光学防抖的前置摄像头,提升就更加少)。如果手机被稳定(例如用手按在墙上,或使用三脚架),每帧曝光时间将提升至 1 秒。在此基础上,手机稳定时只拍摄 6 帧,而手持时最多会拍摄 15 帧。这种限制能够避免用户疲劳(与添加一个取消按钮的必要)。因此,根据你拥有哪一代 Pixel 相机、所选择的摄像头、手抖与场景运动情况,以及亮度, Night Sight 可能会以 1/15 秒曝光时间(或更短)拍摄 15 帧或以 1 秒曝光时间拍摄 6 帧,或是两者之间的某种情况。 ^{[1]}

[1] 顺带一提,Google 相册中所显示的曝光时间(即 EXIF 信息)是每帧的曝光时间,而不是总曝光时间,取决于拍摄了多少帧。可以通过观察拍摄过程中的环形计数器动画来得知这个信息。每格代表拍摄了一帧。

左:两台并排的 Pixel 3 手机其中一台的 15 帧连拍。中:没有运动检测的 Night Sight 照片,每帧曝光时间 73 毫秒,狗狗的头因此模糊了。右:加入运动检测的 Night Sight 照片,能够注意到运动并使用了更短的 48 毫秒。这张照片的运动模糊更少。(Mike Milne)

此外有一个因为检测到手机被稳定而使用更长曝光时间的例子:

左:手持拍摄的 Night Sight 照片。因为存在轻微的手抖,Night Sight 选择了 1/3 秒 x 15 帧 = 5 秒总曝光时间。右:使用三脚架的 Night Sight 照片。天空更纯净(杂讯更少),并且能看见更多的星星。(Florian Kainz)

对齐与合成

平均多帧以降低图像杂讯的想法几乎是和数字图像本身同时出现的。在天文摄影中,称其为曝光堆栈。这种方法是简单易懂的,但难点在于当相机是手持拍摄时应该如何对齐。我们在这方面的工作始于 2010 年的一个名为 Synthcam 的 ios app。这个 app 能够持续拍摄照片并实时低解析度对齐合成,并显示合成结果,能够稳定得变得清晰。

视频封面

See In The Dark - Marc Levoy

Night Sight 使用了相似的原理,尽管是非实时的全解析度处理。在 Pixel 1 与 Pixel 2 上我们使用了 HDR+ 合成演算法,被重新调整以增强其检测并拒绝无法对齐的帧的能力,即使是充满杂讯的画面。在 Pixel 3 我上们使用了 Super Res Zoom,同样被重新调整,而无论是否缩放。尽管后者是用于超解析度,它同样能够一直杂讯,因为也进行了多帧合成。在一些夜景中,Super Res Zoom 能够产生比 HDR+ 更好的结果,但这需要 Pixel 3 上更快的处理器。

顺带一提,这些工作在手机上需要几秒钟的时间。如果你在拍摄完成之后立即点击图标进入相册幻灯片,就能够看见 HDR+ 或 Super Res Zoom 运行完成时的「冲洗」效果。

其他挑战

尽管上述的基本思想听起来很简单,在开发 Night Sight 的过程中,一些因为缺少光线而引入的问题被证明具有挑战性:

  1. 自动白平衡(AWB)在低光下失效

人眼感知具有很好的色彩不变性——即使是在不同色彩的光照下(或是带著墨镜时)也能正确地辨识物体的颜色。但当我们在一种光照下拍摄照片并在另一种光照下查看时,这种感知不变性就会崩溃。为了对这种感知效应进行校正,相机会局部或全局调整图像的颜色以补偿至主要光源(有时称为色温)的色彩,有效地使图像色彩看起来像是被中性(白色)光照亮。这个过程称为自动白平衡(AWB)。

白平衡在数学上属于不适定问题。画面中的雪究竟是蓝色的,还是被蓝色的天空照亮而显蓝?也许是后者。这种歧义的存在使得白平衡变得困难。在谷歌相机 Night Sight 之外的拍摄模式中的白平衡演算法表现不错,但在非常黑暗或色彩强烈的灯光下(例如照亮街道的黄色钠灯)难以判断光源的颜色。

左:位于温哥华海滨的小屋,Pixel 默认拍摄模式的白平衡演算法无法判断光源的黄色程度。右:我们的基于机器学习的白平衡演算法能够做得更好。(Marc Levoy)

2. 肉眼难以看清的环境下的色调映射

Night Sight 的目标是成为神器——在肉眼都无法看清的环境下拍照!但与此关联的问题是在非常黑暗的环境下人眼无法看见颜色,因为视网膜上的视锥细胞在这种条件下不再工作,只剩下视杆细胞,难以辨别不同波长的光线。夜景依然充满色彩,只是我们无法看见。我们希望 Night Sight 照片在夜晚充满色彩,这是神器的一部分,但还有另一项潜在的挑战。我们的视杆细胞对空间的灵明度较低,这也是为什么夜晚物体看起来不够清晰。我们希望 Night Sight 照片在夜晚保持锐利,能够记录比肉眼所见更多的细节。

举个例子,如果使用三脚架稳定单反相机进行很长时间的曝光——例如几分钟,或者堆栈几张较短时间的曝光,就能使夜间看起来像白天。阴影中会存在细节,整个场景起来锐利并充满色彩。观察下面这张单反拍摄的照片,这想必是夜晚,因为能够看见星星,但草地是绿色,天空是蓝色,月光投射到树上的阴影看起来更像是太阳产生的。这样的效果看起来不错,但恐怕不总是你想要的结果,如果把这样的照片分享给朋友,它们也许会困惑你是什么时候拍摄的。

夜间的优胜美地山谷。使用佳能单反相机,28mm f/4 镜头,3分钟曝光,ISO 100。

艺术家们几个世纪前就掌握了如何使一张画看起来是夜晚,查看下面的例子。

《一位哲学家讲授太阳系仪》(A Philosopher Lecturing on the Orrery),约瑟夫·怀特(Joseph Wright)所作,1766 年。这位艺术家使用了从黑色到白色的各种颜料,但所描绘的场景明显是黑暗的。他是如何做到的?他增加了对比度,使用深色包围场景,并把阴影略为黑色,因为我们无法看到那里的细节。

我们在 Night Sight 运用了相同的技巧,一定程度上是在色调映射中引入S形曲线。但要在得到令人惊艳的效果同时能够正确的判断拍摄时间,是不容易把握平衡的。下面这张照片在这方面比较成功。

Pixel 3 拍摄,6 秒总曝光时间的 Night Sight 照片,使用了三脚架。(Alex Savu)

Night Sight 能够看见多暗?

在 0.3 lux 以下,自动对焦将无法工作。如果你无法在地上找到钥匙,你的智能手机也同样无法对焦。为了克服这个限制,我们在 Pixel 3 的 Night Sight 模式加入了两个手动对焦按钮。「近」按钮将对焦至 1.2m 远,而「远」按钮则对焦至 3.6m 远。后者是镜头的超焦距,意味著处于这个距离的一半至无限远处的物体都能够对焦。在 0.3 lux 以下的环境,你依旧能够拍摄令人惊讶的照片,甚至是如这篇文章所展示的进行天文摄影,但需要一个三脚架、手动对焦、第三方或自己编写的 app 调用 Android 的 Camera 2 api(拍摄 RAW 图像)。

我们能够走多远?最终,亮度会低至感测器像素收集的光子数量被读出杂讯淹没。还有其他的杂讯源,例如暗电流,随著曝光时间提升,并且随温度变化。为了避免这些杂讯,生物学家们懂得在拍摄弱荧游标本时将相机冷却到 0 华氏度(约 -18 摄氏度)以下——我们不建议对 Pixel 手机这样做!充满过多杂讯对图像也难以可靠地对齐。其实你解决了所有的这些问题,风也会吹,树木会摇摆,星星与云会移动。超长时间曝光摄影是困难的。

如何充分利用 Night Sight

Night Sight 不仅可以在低光照条件拍摄优质的照片,它使用起来也很有趣,因为它能够在你看不清任何东西的情况下拍摄照片。在谷歌相机的默认拍摄模式下,如果场景足够黑暗,将会弹出一个提示以快速切换到 Night Sight 以拍摄更好的照片,但不要局限在这些场景。在日落后,在音乐会或是城市中,使用 Night Sight 拍摄纯净(低杂讯)的照片,并使它们看起来比现实更亮。以下是使用 Night Sight 照片的一些示例,以及与 HDR+ 的一些 A/B 比较。主要由我们的同事拍摄。(点击链接可访问谷歌相册,下面是挑选部分上传)

作者:Narvin Sarma, 暮光之城。使用三脚架曝光 750 毫秒 x 8帧= 6秒。 埃尔卡皮坦(El Capitan)峡谷上的灯光是登山者们。
作者:Isaac Raynolds,拍摄多张 Night Sight 照片并使用 Lightroom 拼接的纽约全景。
HDR+
Night Sight

HDR+
Night Sight
HDR+
Night Sight

以下是使用 Night Sight 的一些提示:

- Night Sight 无法在完全黑暗的环境中操作,选择一个有光线落在其上的场景。

- 柔和,均匀的照明比恶劣的照明更好,后者可能会产生黑暗的阴影。

- 为了避免镜头眩光伪像,请尽量将非常明亮的光源保持在视野之外。

- 如果想增加曝光,请点按各种对象,然后移动曝光滑块。再次点按即可停用。

- 如果想减少曝光,拍摄并在 Google 相册的编辑器中调暗,这样做能够减少杂讯。

- 如果太暗,相机无法对焦,可以尝试点击高对比度边缘或光源边缘。

- 如果这对您的场景不起作用,请使用近(4英尺)或远(12英尺)对焦按钮(见下图)。

- 为了最大限度地提高图像清晰度,请将手机靠在墙上或树上,放在桌子或岩石上。

- Night Sight也适用于自拍,如A / B 相册中所展示,可选择屏幕本身作为照明。

手动对焦按钮,仅限 Pixel 3 手机。

Night Sight 在 Pixel 3 上效果最好,我们也将其推送给了 Pixel 2 与 Pixel 1,尽管后者因为没有光学防抖而不得不使用更短的曝光时间。此外,我们的基于机器学习的白平衡演算法是为 Pixel 3 训练的,因此在前代手机上的精确度会有所降低。顺便,我们提高了 Night Sight 模式下的取景器亮度以帮助用户在低光照条件拍摄,但由于取景器刷新率为 15fps,它将充满杂讯,但这并不代表著最终的效果。所以,尝试一下吧,取景对焦并按下快门。你常常会为结果而惊讶!

致谢

Night Sight 是 Google 多个团队的合作成果。主要贡献者包括:Gcam 团队的 Charles He, Nikhil Karnad, Orly Liba, David Jacobs, Tim Brooks, Michael Milne, Andrew Radin, Navin Sarma, Jon Barron, Yun-Ta Tsai, Jiawen Chen, Kiran Murthy, Tianfan Xue, Dillon Sharlet, Ryan Geiss, Sam Hasinoff and Alex Schiffhauer;Super Res Zoom 团队的 Bart Wronski, Peyman Milanfar and Ignacio Garcia Dorado; from the 谷歌相机app 团队的 Gabriel Nava, Sushil Nath, Tim Smith , Justin Harrison, Isaac Reynolds and Michelle Chen.

写在最后:文中提到了几个 Pixel 3 独占特性,那么告诉你一个好消息:它们全部都被移植出来了。以下给出能够与原版谷歌相机共存的 mod,直接安装即可。

Pixel 2:celsoazevedo.com/files/

Pixel 1:celsoazevedo.com/files/


推荐阅读:
相关文章