查看原文
其他

“夜视”(Night Sight) 模式:Pixel 手机可在夜间视物

Google 谷歌开发者 2018-12-12

文 / 杰出工程师 Marc Levoy 和高级软件工程师 Yael Pritch

“夜视” 模式是 Pixel 相机应用的一项新功能,可让您在弱光条件下,甚至连肉眼都看不太清的昏暗条件下拍摄清晰的照片。“夜视” 模式适用于三代 Pixel 手机的主摄像头和自拍摄像头,且无需借助三脚架或闪光灯。在本文中,我们将探讨为何在弱光场景下拍照颇具挑战,还将讨论计算摄影和机器学习技术,这些技术大都基于造就 “夜视” 功能的 HDR+ 进行构建。


左图:iPhone XS 拍摄图

右图:Pixel 3 “夜视” 拍摄图



为何难以在弱光下摄影?

有过在昏暗场景下摄影经历的人对图像噪声定然不陌生,这种噪声看上去就像是像素间亮度的随机变化。对于配备小型镜头与传感器的智能手机相机而言,主要的噪声源是光子进入镜头后在数量上产生的自然变化,我们称之为散粒噪声。每个相机都会遭受这个问题,即使其拥有完美的传感器电子元件,也依旧无法避免。然而,这些电子元件并非完美无缺,因此噪声的第二来源便是在将击中每个像素的光线所产生的电子电荷转换为数字时引入的随机错误,我们称其为读出噪声。上述两种噪声和其他随机噪声源共同构成整体的信噪比 (SNR),该比值能够衡量图像从这些亮度变化中的突显程度。所幸,SNR 会随曝光时间平方根的增加而增大(或变化更快),所以曝光时间越久,照片就会越清晰。但您很难保持足够长的时间以在昏暗条件下拍摄一张好照片,而且您的拍摄对象可能也不会一直保持静止不动。

2014 年,我们推出一种计算摄影技术 HDR+,该技术可通过捕捉连拍帧、在软件中进行校准并将之合并,进而改善此种情况。HDR+ 的主要目的是改进动态范围,这意味着我们将能拍摄呈现各类亮度的场景(如日落或逆光人像)。各代 Pixel 手机均使用 HDR+。事实证明,合并多张照片还可减少散粒噪声和读出噪声的影响,因此能在昏暗场景中提高 SNR。为让您在手抖和拍摄对象移动的情形下也能拍摄出清晰的照片,我们采用短曝光方案。我们还会舍弃那些校准不精的帧。这便使得 HDR+ 可在收集更多光线的同时生成清晰的图像。



黑暗到底有多黑?

但是,若捕捉和合并多帧能在弱光条件下生成更清晰的照片,为何不使用 HDR+ 来合并众多帧,以便我们有效看清黑暗中的拍摄对象呢?好吧,让我们首先定义 “黑暗” 一词。摄影师谈论场景的亮度级时,通常以勒克斯 (lux) 作为衡量单位。从技术上讲,勒克斯是物体表面每单位面积所接收的光量,以每平方米流明作为衡量单位。您可以参阅下面的快速查看表,以了解不同的勒克斯等级:



在亮度为 30 勒克斯的场景下拍摄单张照片时,智能手机的相机开始出现拍摄问题。在亮度低至 3 勒克斯的场景下,手机可在拍照及合并多张照片(正如 HDR+ 一样)时表现出色,但在更昏暗的场景下便会表现失常(详见下文),仅能依赖闪光灯改善其拍摄效果。而凭借 “夜视” 功能,我们的目标是在仅按一次快门且无 LED 闪光灯的情况下,使用智能手机改善相机在 3 勒克斯和 0.3 勒克斯亮度之间的拍照效果。出色发挥此功能需满足几个关键条件,其中最重要的便是捕获更多光子。



捕捉数据

虽然延长每帧的曝光时间可提高 SNR 并生成更清晰的照片,但很可惜,这会带来两个问题。首先,Pixel 手机上默认的拍照模式使用零快门延时 (ZSL) 协议,本质上便会限制曝光时间。您一打开相机应用,应用便开始捕捉图像帧,并将其存储于循环缓冲区中,从而不断清除旧图像帧,为新图像帧腾出存储空间。当您按下快门按钮时,相机会将最新拍摄的 9 或 15 帧图像发送至我们的 HDR+ 或 Super Res Zoom 软件。这意味着您能准确捕捉到自己想要的时刻,此协议也因此得名 “零快门延时”。然而,由于我们在屏幕上显示这些相同的图像是为了帮助您校准相机,所以无论场景有多昏暗,HDR+ 均会将曝光时间限制在 66 毫秒以下,从而使我们的取景器至少可保持每秒 15 帧的显示速率。在亮度更低并需要更长曝光时间的场景下,“夜视” 模式使用正快门延时 (PSL),在按下快门按钮后,您需要等待相机开始捕捉图像。使用 PSL 意味着,您按下快门后需在短时间内保持不动,但其允许使用较长时间的曝光,从而可在更低亮度下提高 SNR。 

增加每帧曝光时间所带来的第二个问题是运动模糊,产生的原因可能是手部抖动或对象在场景中移动。Pixel 2 和 Pixel 3 配备的光学防抖 (OIS) 系统可减少为实现适度曝光时间(最高约为 1/8 秒)而产生的手部抖动,但这对更长时间的曝光或移动的对象不起作用。为解决 OIS 无法修复的运动模糊问题,Pixel 3 的默认拍照模式使用 “动作测光”,包括通过光流来测量最近的场景移动及选择可使模糊最小化的曝光时间。Pixel 1 和 Pixel 2 在默认模式下并未使用动作测光,但这三款手机均可在 “夜视” 模式下使用此技术,从而将每帧的曝光时间最高提升至 333 毫秒(若无大幅移动)。我们对未配备 OIS 的 Pixel 1 小幅提升曝光时间(对于同样未配备 OIS 的自拍相机,提升的曝光时间甚至更短)。如果将相机固定(如靠墙放置或使用三脚架),则每帧的曝光时间将提升至一秒。除改变每帧的曝光时间之外,我们还会更改拍摄帧数:若将手机固定在三脚架上,便会拍摄 6 帧;若是手持型设备,便会最多增加至 15 帧。这些帧数限制可免除用户的疲劳(以及取消按钮的需要)。因此,根据您所拥有的 Pixel 手机、相机选择、手部抖动、场景移动以及场景亮度,“夜视” 模式可拍摄 15 帧(每帧耗时 1/15 秒或更短时间)或 6 帧(每帧耗时 1 秒),或介于两者之间的任意帧数。1


以下是我们在检测到移动时对每帧使用更短曝光的具体示例:


左图:由两部并排的 Pixel 3 手机中的一部拍摄的 15 帧连拍画面。中间图:停用动作测光时的 “夜视” 拍摄图,导致手机使用 73 毫秒的曝光时间。在这张裁剪照中,狗的头部移动动作较为模糊。右图:启用动作测光时的 “夜视” 拍摄图,使手机注意到该动作并使用更短的 48 毫秒曝光时间。此次拍摄的动作模糊程度较轻 (Mike Milne)


以下还提供了当我们察觉手机被固定在三脚架上时使用更长曝光时间的示例:


左图:用手持型设备对天空进行 “夜视” 拍摄后的裁剪照。由于存在轻微的手部抖动,“夜视” 模式选择了 5.0 秒(每帧 333 毫秒,共 15 帧,由二者相乘得出)的拍摄时间。右图:由三脚架固定后拍摄的照片。由于未检测到手部抖动,“夜视”模式使用了 6.0 秒(每帧 1.0 秒,共 6 帧,由二者相乘得出)的拍摄时间。所拍摄的天空照清晰度较高(噪声较少),您还可看到更多星星 (Florian Kainz)



校准与合并

求取帧数均值以减少成像噪声的想法与数字成像一样古老。在天文摄影术中,这称为曝光堆叠。虽然这项技术本身很简单,但最大的难点是在手持相机的情况下正确校准镜头。我们在此领域的投入始于 2010 年一款叫作 Synthcam 的应用。这款应用可连续拍摄照片、以低分辨率实时校准及合并照片,之后显示合并结果,而且您可看到所得照片的清晰度会稳步提升。

“夜视” 模式也采用类似原理,不过是以全传感器分辨率进行非实时处理。我们在 Pixel 1 和 Pixel 2 上使用 HDR+ 的合并算法,并加以修正与重新调整,从而提高其检测与舍弃未准确校准帧画面的能力,即便在噪声充斥的场景中也是如此。在 Pixel 3 上,我们使用 Super Res Zoom,同样进行重新调整,无论您在拍摄时是否变焦均是如此。虽然开发后者的目的是处理超分辨率图像,但因其能对多张图像求取均值,因而也有助减少噪声。在一些夜间场景中,Super Res Zoom 可生成优于 HDR+ 的照片,但需仰仗 Pixel 3 上更快速的处理器。

顺便一提,手机上的所有这些处理仅耗时几秒。只需快速点按可将您带至幻灯片处的图标(请等候拍摄完成!),您便能查看经 HDR+ 或 Super Res Zoom 处理后的照片 “优化效果”。



其他挑战

尽管以上描述的基本理念听起来很简单,但在开发 “夜视” 模式的过程中遇到光线不足的情况时,仍会出现一些难题:

自动白平衡 (AWB) 在弱光场景下失效
人类善于保持颜色恒常性,即甚至在彩色照明的条件下(或当戴上太阳镜时)也可正确感知事物的颜色。但当我们在一种光照下拍照并在另一种光照下查看照片时,此过程便会中断;我们在观看时会感觉照片带上了色彩。为纠正这种知觉效果,相机调整了图像色彩,以对照明主色(有时称为色温)作出部分或全部补偿,从而有效改变图像中的色彩,使图片场景看上去犹如经过中性(白)光照亮一般。此过程称为自动白平衡 (AWB)。

我们的问题在于白平衡是数学家所称的不适定问题。相机记录的雪真是蓝色的吗?抑或是被蓝天照亮的白雪?我想大概是后者。这种模棱两可的现象使得白平衡难以实现。非“夜视”模式中使用的 AWB 算法表现良好,但在十分昏暗或色彩强烈的光线条件下(想象一下钠蒸汽灯),我们便很难确定真实的照明色彩。

为解决这些问题,我们开发出一种基于学习的 AWB 算法,并训练其区分白平衡效果良好和较差的图像。当所拍摄图像的白平衡较差时,此算法便能建议您如何通过改变图像颜色以使照明色彩看上去更偏中性。训练此算法需使用 Pixel 手机拍摄多种场景,然后需要您在色彩校准显示器上查看照片时,手动修正白平衡。您可以使用 Pixel 3 通过两种途径拍摄同一弱光场景的照片,然后进行对比,以此获知此算法的工作原理:


左图:Pixel 默认相机模式中的白平衡器不了解温哥华这座滨海小屋的黄色照明色的色度。右图:我们基于学习的 AWB 算法表现更佳 (Marc Levoy)


漆黑场景下的色调映射
“夜视” 模式旨在允许我们在肉眼无法看清的场景中拍照,简直是神乎其技!与之相关的一个问题是,在十分昏暗的场景中,人类看不到色彩,因为此时我们视网膜中的视锥细胞会停止运作,只有视杆细胞继续发挥作用,但这些细胞无法区分不同波长的光。夜晚的场景依旧缤纷多彩,但我们却无法看到。我们希望“夜视”照片也具有丰富的色彩,这是其超能力的一部分,但也会带来潜在矛盾。最后,我们的视杆细胞具有较低的空间视敏度,这也是我们无法在夜间看清事物的原因。我们希望将“夜视”照片变清晰,提供更多您无法在夜间真正看清的细节。

例如,如果您将一台数码单反相机固定在三脚架上,并采用长达几分钟的曝光时间或将几次较短曝光堆叠整合,便可营造黑夜如同白昼的视觉观感。阴影部分的细节不仅能展现出来,场景也会变得清晰多彩。请观看下方用数码单反相机拍摄的照片;我们根据图中的星星可以推测出拍摄场景一定是在夜晚,但我们还能看到蓝天绿草,而且树木在月光下的投影犹如日光下的阴影。这种效果很棒,但却不是您始终想要的结果,而若将这张照片分享给您的好友,他们也会对您的拍摄时段感到困惑。


夜晚的优胜美地峡谷,Canon 数码单反相机,28 毫米 f/4 镜头,3 分钟曝光,ISO 100。虽是夜晚(因为可以看到星星),却如同白天 (Jesse Levinson)


早在几个世纪前,艺术家们便已知道如何将一幅画呈现出夜晚的视觉效果;请看下方示例。2


1766 年由德比的 Joseph Wright 创作的《一位哲学家讲授太阳系仪》(A Philosopher Lecturing on the Orrery)(图像来源:维基数据)。艺术家使用的颜料从黑到白,但描绘的场景显然是夜晚。他是如何实现这一效果的呢?他提高对比度、用黑暗笼罩整个场景,然后将阴影投射在黑暗中(因为我们无法看到黑暗处的细节)


我们在 “夜视” 模式中也采用了一些相同技巧,其中包括在我们的色调映射中投射一条 S 曲线。但是,若在给予您 “神奇超能力” 的同时还要提醒您这张照片的拍摄时段,那要实现这两者之间的有效平衡便显得颇为困难。下方照片在这一点上表现得尤为出色。


Pixel 3,6 秒 “夜视” 拍摄,使用三脚架 (Alex Savu)



“夜视” 模式适应的场景亮度可低至多少?

当拍摄场景亮度低于 0.3 勒克斯时,自动对焦便开始失效。若亮度低到致使您无法在地板上找到钥匙,那么您的智能手机也将无法对焦。为解决此限制,我们为 Pixel 3 的 “夜视” 功能添加了两个手动对焦按钮,其中 “近景” 按钮的焦距约为 4 英尺,而 “远景” 按钮的焦距约为 12 英尺。后者是镜头的超焦距,意味着从该焦距的 1/2 距离(6 英尺)处向外扩展的一切事物均应位于对焦范围内。此外,我们也在努力提高 “夜视” 模式在弱光场景下的自动对焦能力。当拍摄场景亮度低于 0.3 勒克斯时,您仍可使用智能手机拍摄出令人惊叹的照片,甚至可拍摄出精美的天文摄影照片(正如本篇文章所展示的),但您需要一个三脚架、用 Android Camera2 API 编写的第三方或自定义应用,并需进行手动对焦。

那我们所拍摄的场景亮度究竟能低至多少呢?最终,拍摄场景将达到一个终极亮度级,即读出噪声会吞噬该像素所收集的光子数量。同时还有其他噪声源,包括会随曝光时间延长而增加且随温度而变化的暗电流。为避免这种情况,生物学家知道在对弱荧光标本成像时,要把相机温度降至零下(华氏度),但我们不建议您对 Pixel 手机采取相同做法!噪声密布的图像同样亦难实现准确校准。即使您能解决所有这些问题,却依旧无法避免风吹、树摆以及星移云动的情形。超长曝光摄影着实很难。



如何充分利用 “夜视” 模式

“夜视” 模式不仅可在弱光场景下拍摄佳照,使用起来也是乐趣无穷,因为利用此模式能在十分昏暗的场景中拍照。当拍摄场景足够昏暗时,我们会在屏幕上弹出一块 “芯片”,如此您便可使用 “夜视” 模式得到一张更棒的照片,但别仅限于此。即便是在日落后、音乐会上抑或繁华都市中,“夜视” 模式也可拍摄出清晰(低噪声)照片,将其呈现得比现实还要明亮。这是一种 “外观”,若处理得当,便会显得奇妙绝伦。以下展示了若干 “夜视” 照片 示例 (https://photos.google.com/share/AF1QipOzxQ9ocVf--sBwsXabf3uU6b4uEowF52AkxMv3ULmYupcWp5Ct59EWKXxW2eTVrQ?key=dzhYQWJpbzF4cEM4ZGFFRVhCdXhlbjF6VTFzR3JB),以及主要由我们的同事拍摄的一些 A/B 对比照。以下是使用 “夜视” 模式的几则建议:


  • “夜视” 模式无法在完全黑暗的场景中启用,所以请挑选带些许光线的场景。

  • 柔和均匀的光线要优于刺眼的光线,后者会产生暗影。

  • 为避免镜头闪光伪影,请尽量让非常明亮的光源远离视野。

  • 如要增加曝光,请点按各种拍摄对象,然后移动曝光滑块。再次点按可停用此功能。

  • 如要减少曝光,请先拍摄照片,然后在 Google 的照片编辑器中对其进行调暗处理;这将会减少噪声。

  • 如果场景过暗导致相机无法对焦,请点按高对比度边缘或光源边缘部分。

  • 如果依旧无法解决场景问题,请使用 “近景”(4 英尺)或 “远景”(12 英尺)对焦按钮(见下方)。

  • 如要最大化图像的清晰度,请将手机靠墙或靠树固定,或者将其固定在桌子或岩石上。

  • 正如 A/B 相册所示,您也可选择通过屏幕自身发出的光亮,使用 “夜视” 模式进行自拍。


手动对焦按钮(仅限 Pixel 3)


“夜视” 模式只有在 Pixel 3 上才能产生最佳效果。此外,我们已将此功能引入 Pixel 2 和初代 Pixel,只不过由于后者未配备光学防抖 (OIS) 系统,我们对其采用了更短的曝光。同时,我们研发的基于学习的白平衡器专门针对 Pixel 3 进行训练,因此其在前代手机上的精确度会有所下降。顺便一提,我们已调亮 “夜视” 模式中的取景器,能够帮助您在弱光场景下采景,但由于该取景器基于 1/15 秒曝光,因此拍摄后的照片会含噪声,而且无法有效展示最终照片的呈现效果。快快尝试采景,并按下快门吧。通常情况下,您会大吃一惊!


1 顺便一提,Google 照片中显示的(若您按 “i”)是每帧的曝光时间而非总曝光时间,这取决于拍摄的帧数。在相机采光的同时,您可观看拍摄动画来了解帧数。圆圈周围的每个记号代表拍摄的一帧图像。

2 如需查看这些技术的精彩分析,请参阅 von Helmholtz 的 “《论光学与绘画的关系》(On the relation of optics to painting)” (1876) https://archive.org/details/popularscientifi00helmuoft/page/n3。



致谢

“夜视” 模式是 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 和 Alex Schiffhauer;Super Res Zoom 团队的 Bart Wronski、Peyman Milanfar 和 Ignacio Garcia Dorado;Google 相机应用团队的 Gabriel Nava、Sushil Nath、Tim Smith、Justin Harrison、Isaac Reynolds 和 Michelle Chen。



更多 AI 相关阅读:



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存