借助算法(而不是镜头)进行数字变焦可以说是一种较为粗陋的做法,而这种方法在移动设备上已被广泛使用了多年。

和具备光学变焦能力的相机比起来,数字变焦得来的照片画质往往会很差,因此人们一般也都认为,光学结构和镜头尺寸上的「压制」是移动设备靠便携性和软件算法难以跨越的。

不过对谷歌相机团队的软件工程师和计算摄影团队的首席科学家而言,借助算法挑战硬件几乎已经是家常便饭了。今年,他们就借 Pixel 3 上的 Super Res Zoom 对移动设备上的数字变焦难题发起了挑战。

2x 变焦下,拍摄后裁剪(Pixel 2) vs. Super Res Zoom(Pixel 3)

去马赛克:数字图像变焦难的根源

数字变焦的难度在于如何丢失的细节进行「重建」。

一般而言,数字变焦会对原始图像进行裁剪并将裁剪出来的部分进行放大,在这个放大过程中,传统的 线性插值(linear interpolation)法会创造出一些原图中并没有的画面要素,导致最终生成的画面模糊严重,充满因质感和细节失真造成的「塑料感」。

从某种程度上来说,这种细节丢失其实是不可避免的,因为数字成像本身就是一种对色彩信息的重建,这个重建过程也叫「去马赛克(demosaicing)」

在普通消费者的手机上,相机传感器元件一般只记录光线强度而不是色彩信息,要将这些收集到的光线数据变成实实在在的色彩,还需要通过位于传感器前方的拜尔滤色镜(CFA)进行转化,让红黄蓝三色得以在像素上正确排列。

人眼对绿光敏感,故一个 2x2 大小的拜尔滤色阵列由 1 红、1蓝、2 绿组成

也就是说,这种画面细节的丢失从我们按下快门后就已经开始了——收集到色彩信息后,成像算法必须像扫雷那样根据捕获到的像素信息对周边缺失的像素进行推测,完成去马赛克的过程。最终经过这种「猜测」重建而成的画面大约占一张照片的 2/3!

去马赛克通过相邻像素来重建丢失的色彩信息

显然,这种通过邻近像素平均值进行细节重建的方法非常简陋,带来的画面失真问题也很严重。虽然很多去马赛克手段都采用了更为复杂的算法,但在色彩信息受限的大前提下,能够达成的实际效果难言完美,就连那些能够借助大尺寸传感器和镜头获取到更多细节的单反相机也难逃其影响。

因此当我们在手机上手动缩放照片或通过裁剪进行放大时,算法还需要借助线性插值对原本就已经有细节丢失的图像进行进一步「猜测」补全,最终得到的照片效果自然也就更差。

再向天文摄影学「取经」

但正如上面所说,图像在数字变焦放大的过程中依然有部分原始色彩信息保留了下来,这正是高速连拍与多帧合成手段排上用场的地方。而当单张图片难以满足我们的去马赛克需求时,我们就需要借助多张图片来获取同一画面场景的更多细节了——高速连拍恰好可以做到。

此前,Google 已经在 Nexus 和 Pixel 手机上的 HDR+ 算法中运用了高速连拍,通过合成多张短曝光照片来生成一张高动态范围、精细细节的合成照片。但类似的方法可以用在提升数字变焦图像精度这件事情上吗?

在天文摄影学中,DRIZZLE 是一种已经流行了数十年的常用拍摄技巧——通过捕捉并合成多张拍摄角度略有变化的照片来实现 2x 甚至 3x 的数字变焦效果。这个手法又叫做多帧超分辨率采样(超采样),基本理念是将多张低分辨率的连拍照片直接合并对齐到更高分辨率的像素网格中。具体的合并对其流程如下: 

向右、下和右下平移,最终补全缺失像素

在上面这个例子中,我们捕获了四帧画面,其中三帧都通过一个像素单位的平移(分别向右、下和右下)来进行色彩信息补全,补全后的图像完全无需进行任何的去马赛克操作。事实上,一些单反相机早已支持这种名为「microstepping」的拍摄方式,但一般都需要借助三脚架。

过去几年时间里,这种「超采样」技术的实际应用一直受限于实验室,具体操作也大多对传感器和拍摄主体的位置和相对运动状态有着诸多限制,天文摄影中的固定射电望远镜就是个最好的例子。

但这个技术迟迟没能来到移动设备上——因为要在移动设备上完美地进行「超采样」拍摄还必须满足几个基本条件,这当中最为首要的,是如何让镜头比传感器更好地解析画面细节来避免混叠(aliasing)。

图像混叠是什么?

图像混叠现象通常发生在相机传感器难以完美重现被拍摄场景中所有图案和细节的时候,最典型的呈现形式即那些常常出现在电子取景器中的 摩尔纹(Moiré pattern)。在实际拍摄的过程中,画面中某些物理边缘在画面抖动时也会扰动附近画面造成摩尔纹。

对超级采样而言,那些不停扰动画面的烦人摩尔纹扰动却是一件好事:通过仔细纪录这些摩尔纹扰动数据,我们其实可以从中获取到大量与当前画面有关的颜色和亮度数据,而正如上文所讨论的那样,这些数据是实现超采样的关键。

换句话说,我们举着手机拍照时,不经意的「手抖」恰好能为超级采样提供必要的数据支持。

不过想要在移动设备上实现手持拍摄的超级采样还有别的挑战。

「手抖」超采样的实践过程

上面提到,很多单反相机需要借助特制的三脚架来进行超采样拍摄,这个拍摄过程中,我们还必须保证相机本身在拍摄位置移动和变焦过程中的绝对稳定。

对手机而言,这样的要求显然不够实际——即便光学防抖(OIS)能够对那些抖动幅度较大的相邻两帧画面进行补偿,幅度较小的自然抖动不可避免,因此当我们拿着拥有高分辨率的手机拍下一组连拍照片时,每张照片的拍摄位置都会因为抖动而存在几个像素值的差距。

但利用拍摄时的手抖却恰好能够实现优劣转化,将手持移动设备的难点变成突破点。

为了对这种「手抖」的优势进行进一步转化,Google 首先会在一组连拍照片中选定一帧作为参照帧(base frame),然后基于该帧画面对其他画面进行一一对齐。但这组连拍照片由于手抖的存在显然不能完全对齐,每帧画面中的像素也不能按照我们需要的方式进行有规律的平移,因此在对齐后,我们还需要在新的画面帧加入时对相邻两个像素进行插值,然后再进行对齐。

当然,其实也存在不会「手抖」的情况,比如当我们把手机固定在三脚架上的时候。在这种情况下,Google 相机会强制光学防抖模块进行有规律的抖动来模拟「手抖」——如果你将手里的 Pixel 3 拿得足够稳,也许会发现这个「小秘密」。

克服超级采样的挑战

超采样的流程如上所述,原理听上去颇为简单,但实际操作起来难度不小。为了应对超采样过程中可能会出现的问题,我们还需要对算法进行大量的创新——这也是它至今没能被广泛应用在智能手机上的原因(Google:没错你们技术不过关)。具体的问题包括:

  • 即便在光线条件较好的拍摄环境下,高速连拍生成的单张照片噪点其实也不少,因为高速连拍留给每张照片的曝光时间并不长,而 Super Res Zoom 在进行超采样的同时还必须对付这些噪点
  • 现实情况下要考虑的运动环境更为复杂,除了「手抖」,画面主体的状态也瞬息万变,比如微风吹动的树叶、层层散开的涟漪、变化莫测的人物神态……此外,烟雾、玻璃这类本身形态透明或层次复杂的事物也极难进行运动状态区分,对它们进行对齐合并需要更加聪明算法
  • 运动具有随机性,即便我们能够进行很好的对齐与合并,部分色彩信息也势必会无规律分布,这种数据散布对以插值为基本原理的超采样而言也是个难题

这些难题加在一起,几乎让实现超采样成为了一件非三脚架不可的技术。但 Google 相机团队还是通过以下路径对这些问题一一进行了攻关并最终实现了手持 Super Res Zoom 功能:

  • 适当的妥协:为了更有效地进行高速连拍多帧合成,保证 RGB 像素尽量不被去马赛克,Google 在这里引入了 边缘检测算法。这个算法通过对输入画面帧的分析调整多帧合成方式,在增加细节和抑制噪点之间进行合理权衡,保证最终画面的边缘锐度和纯净度。
  • 合理的参考:针对复杂的运动状态和多帧合成容易失效的画面,利用一个侦察纠错模型来避免鬼影和模糊问题,只有当这个模型确认帧与帧之间的图像特质吻合,相关部分才能够被合并。

此外,Google 在 Super Res Zoom 中还采用了与线性插值截然不同的基于机器学习的现代单图像插值方法 RAISR,尽管 RAISR 也难以对图像细节进行最为自然的高质量还原,但在进行图像变焦的过程中,这种算法更注重对图像特质的学习和还原,甚至能够根据现有特质合成一些材质细节。因此当我们借助 Super Res Zoom 拍摄 2-3x 变焦的画面时,Google 其实还会通过在多帧合成使用 RAISR 插值的方法来增强画面变焦后的细节质量。

探索手机摄影的极限

从 HDR+ 到去年的单摄人像,Google 一直在不断探索手机摄影的可能性,而今年为我们带来的 Super Res Zoom,同样也算得上是利用计算摄影学(Computational Photography)缩小手机与单反差距的一小步。

超分辨率概念先于智能手机出现至少十年,围绕这个话题的论文也有成百上千篇,而现在,这些灵感创意和技术探索的结晶终于转化成了可以握在手里的产品。

无变焦 vs. 2.23x 变焦,by Steve Van Dinter

基于以上理论和方法,Super Res Zoom 在画质结果上要优于以往任何一种数字变焦手段。也正是在这个技术的帮助下,Pixel 3 才得以在 2x 变焦这个重量级上靠单摄实现媲美市面上某些多摄机型才有的变焦效果。换句话说,如果你在按下快门前手动缩放取景器进行变焦,最终得到的画面细节要比拍完后再放大进行裁剪好很多。

你可以利用 Google Photos 浏览 Google 给出的 Super Res Zoom 样张

编译自 Google AI Blog

📷 关联阅读:《单摄夜拍照样「碾压」iPhone?Google 的「夜视」功能是如何做到的》

> 下载少数派客户端、关注少数派公众号,发现更多系统背后的故事 📱