今年的 Pixel 3 在「翻车」这件事情上丝毫不输去年那款使用一周便「烧屏」的 Pixel 2 XL。
因此从某种程度上来说,Pixel 其实是一款除了系统和相机便一无是处的手机。但既然说到了相机,我们不妨就来聊一聊上周正式向全系 Pixel 用户推送的「夜视(Night Sight)」模式。
你可以用它拍星星
Google 在 Pixel 3 发布会上用了这样一张图来展示 Pixel 3 的「夜视」模式:
就是这样一张图,将「大哥」仍然坐在 DxOMark 排行榜第二的 iPhone XS 黑得无地自容——至少在夜拍效果上,Google 这一张 PPT 不仅让很多「果粉」看了表示不能接受,连一些「谷吹」都开始重新审视自己是不是「对 Google 的力量一无所知」。
那「夜视」模式究竟有没有 Google 所宣传的那么厉害?
答案也许在命名里——早前 Night Sight 还只能借助部分 XDA 开发者修改过的 Google Camera 应用开启时,这个功能的中文翻译还仅仅是简单的「夜间」二字,而 Night Sight 上周正式上线后,中文译名已经变成了「夜视」。
从 Google 上周收集而来的样张1来看,「夜视」功能在夜拍过程中的实际表现的确媲美夜视仪(以下样张均为手持拍摄),从黄昏时分华灯初上的繁荣市区到夜间人来人往的圣潘克拉斯酒店大门,从日落后的大峡谷到优胜美地,从都柏林塞缪尔贝克特大桥到米兰的斯尔夫扎城堡……不管是光线条件复杂的城市街道、结构复杂的桥梁建筑还是层次分明的自然风光,在「夜视」功能的加持下,Pixel 能够胜任的拍摄任务显然更多了。
我们甚至可以借助这个功能手持拍星星——对当前市面上的绝大多数智能手机而言,这几乎还是一个不可能完成的任务。
「夜视」:手持 vs. 三脚架
在此基础上加上三脚架,我们甚至还能更进一步得到质量更好的星空照片:在这个过程中,由于曝光时间的延长,相机捕获到的光线也更多,我们最终得以在照片上看到更多的星星。
你甚至能在成片上标出星图
HDR+ 再进化
在解开「夜视」功能背后的奥秘之前,我们必须先聊一聊与之密切相关的长曝光。
快速合盖(短快门时间)后管内收集的雨水
想象一下,如果我们在一场淅淅沥沥的小雨中如图所示立好四根管子并立即盖上盖子,由于雨点洒落并不均匀,这四根管子收集到的雨量也相差迥异;而如果我们将盖子敞开放上一段时间,四根管子内收集到的雨量仍有差异,但都不会太少。
延长合盖时间(长曝光)后管内收集的雨水
光线同样也有其内在的随机性2,这种随机性表现为散粒噪声(shot noise)——虽然人脑无法在铺面而来的巨量光子中分辨出光线的不均匀,但相机内的图像传感器却可以,这种不均匀表现在照片上,就是老式电视机雪花屏一样的噪点。
而随着快门时间(即上图管盖敞开时间)的延长,噪点问题可以随着不断提高的信噪比(SNR,信号与噪声的比例)得到缓解。
这也是一般而言我们需要借助三脚架才能获得画面纯净、细节清晰的夜景照片的原因。
但以计算摄影学见长的 Google 早在两年前推出第一代 Pixel 手机时就对 HDR+3的可能性进行了 探索:通过捕捉多帧画面并对画面中的像素进行算法对齐,HDR+ 一直以来都是 Pixel 手机在拍照这件事情上的王牌保障。但长久以来人们也意识到,HDR+ 不仅能够输出更高的动态范围,画面的锐度和纯净度相较一般照片也更高。
初代 Pixel 借助特制版 Google Camera 拍摄的夜景
换句话说,HDR+ 的思路其实也可以用在「夜视」功能上,只是为了应对手持夜拍过程中的具体问题并尽可能照顾到 Pixel 手机上的零快门延迟(ZSL)体验,Google 对「夜视」功能的 HDR+ 算法进行了进一步改进。
据 Google 计算摄影产品经理 Alexander Schiffhauer 介绍,他们在「夜视」中引入了与 HDR+ 类似的多帧合成策略,即一次性拍摄 15 帧短曝光照片,然后借助算法进行多帧合成再输出一张等效的长曝光照片。
但考虑到手持拍摄的稳定性,「夜视」功能在正式拍摄前就会提前开始运动测量(motion metering)——借助计算机视觉和运动图像分析中常用的光流法(optic flow)4,相机会提前对握持抖动、环境光线强度和画面内物体移动进行判断,这个判断过程不仅有利于 Super Res Zoom 进行像素对齐(我们将在后续文章中详解),还将决定用于「夜视」成像的 15 帧画面所需要的总体曝光时间。
通过分析抖动来消除图像模糊
最终,视具体拍摄设备、抖动状况、场景运动量和光线环境的不同,「夜视」功能会捕捉每帧曝光时间在 1/15s~1/6s 的 15 帧连续照片。
算法堆栈以及一些额外挑战
对手机上的夜间拍摄而言,1/15~1/6s 的曝光时间是 Google 找到的平衡点,但即便是在运动检测和 HDR+ 算法的加持下,这 15 帧连续照片的锐度和画面纯净度都难以满足最终的「夜视」效果要求。
因此接下来「夜拍」还需要对这 15 帧照片进行对齐与合并,这里 Google 用到了堆栈,在初代 Pixel 和 Pixel 2 上,「夜视」利用重新调教过的定制版 HDR+ 算法来排除那些难以进行像素对齐的错位帧,而在今年推出的 Pixel 3 上,这个错位帧排除过程则由 Super Res Zoom 完成。
Pixel 2 上使用 7x 数字变焦 vs. Pixel 3 使用 Super Res Zoom
在这个对齐与合并过程中,Super Res Zoom 的效果要比 HDR+ 更好,但对处理器性能的要求更高。
算法堆栈完成后,一张「夜视」照片最终也就展现在我们眼前了。但事实上,在成片输出前,使用「夜视」在极限条件下进行拍摄往往还需要面临两个额外的挑战。
首先,自动白平衡(AWB)在弱光环境下会失效。
和戴着太阳眼镜都能分辨物体颜色的人类不同,自动白平衡从数学层面而言其实是一个不适定问题5,换句话说,在光线不足的情况下,自动白平衡很再难将一张昏黄灯光照耀下的 A4 纸颜色认定为白色。
为此,「夜视」在这里运用到了一个基于早前由 Google AI 公布的「快速傅里叶色彩恒常(FFCC)」技术7的自动白平衡算法,这个算法通过对大量白平衡正常和白平衡失常照片的区分学习,能够在极暗条件下自动调整成像白平衡来让照片色彩看上去更加自然。
白平衡:默认 vs.「夜视」
其次,「夜视」还需要对成片进行适当的色调映射(tone mapping)。
在暗光环境中,人眼中用于感知光刺激的光锥细胞开始失效,而仍在工作的光杆细胞难以区分波长且空间敏锐度低下,因此我们在夜间往往难以分清物体颜色甚至看清物体的细节。
「夜视」追求的效果则与之相反——借助上述方法,「夜视」最终会生成一张细节丰富、色彩明亮的照片,但这种长曝光和算法堆栈另一方面也会带来画面不真实的问题,比如下面这张由单反拍摄的照片,当我们把它发到朋友圈,显然会有人怀疑这张照片是否真的拍摄于夜间。
这真的是你想要的夜景吗?
艺术创作和 HDR 显示中常用的色调映射手法在这里派上了用场,通过专门为夜间拍摄调教的色调映射,每一张「夜视」照片都能像下面这张样片一样,既能让你感受到魔法般的夜拍效果,又能保证纯粹的夜景氛围。
发掘「夜视」的更多玩法
「夜拍」目前已经向所有 Pixel 机型进行推送,非 Pixel 机型可前往 这个网站 检索适合自己机型的移植版本进行尝鲜(不保证效果和稳定性)。
最后,附上派小队在实际使用过程中总结而来的小贴士:
初代 Pixel 由于不具备光学防抖和 Pixel Visual Core,「夜视」拍摄会比较吃力
「夜视」也适用于前置摄像头。在一片漆黑中,屏幕的亮光是「夜视」拍摄的理想光源
但尽量使用「夜视」拍摄夜景或对对焦要求较低的场景,因为自动对焦在弱光环境中性能会骤降
但 Pixel 3 仍然可以在「夜视」模式下进行手动对焦(独占)
「夜视」同样适用于日间拍摄,在长曝光堆栈和 Super Res Zoom 的帮助下,日间拍摄使用「夜视」能够极大提升画面细节和暗部纯净度