Super Res Room可以说是此次几项全新AI拍照功能中最难理解的一个,也让不少业内人士感到好奇。幸而,谷歌计算成像领域首席科学家Peyman Milanfar和软件工程师Bartlomiej Wronski在Google Blog特意发布一篇博文,讲述了Super Res Room技术实现的全部过程。
一直以来,使用算法(而不是镜头)来进行数码变焦的移动设备相机就像是“丑小鸭”。数码变焦的图像质量难以与数码单反相机的光学变焦相提并论,因此传统观点认为,大型相机的复杂光学机制无法被更紧凑的移动设备相机和聪明的算法替代。
凭借Pixel 3上新的Super Res Zoom功能,我们正在挑战这一概念。
此前,数码变焦技术主要是升级单个图像中的像素,Pixel 3中的Super Res Zoom技术则不然。Super Res Zoom的做法是将许多帧的图像直接合并以产生更高分辨率的图像,这个方法能大大改善图片的细节,能许多其他智能手机上的2倍光学变焦镜头大致相当。
2倍变焦:Pixel 2 vs. Super Res Room Pixel 3
数码变焦的挑战
数码变焦是困难的。因为一个好的算法期望从低分辨率的图像开始,并可靠地“重建”缺失的细节——在典型的数字变焦中,单个图像的一小部分被放大,生成一个大得多的图像。传统上,这是通过线性插值方法来实现的,这种方法试图重新创建在原始图像中丢失的信息,但会使得图像模糊,缺乏纹理和细节。基于单图像来提升图像质量一般采用机器学习的方法(包括我们自己的早期工作RAISR)。这些图像放大了一些特定的图像特征,如直线边缘,甚至可以合成某些纹理,但无法恢复自然的高分辨率细节。虽然我们仍然使用RAISR来提高图像的视觉质量,不过Super Res Zoom创新性地采用了多帧图像方法。
彩色滤镜阵列和脱模
重构细节尤其困难,因为数码照片已经不完整了。通过一种叫做脱模(Demosaicing)的过程,我们可以从部分颜色信息中重构丢失的信息。在典型的消费相机中,相机传感器元件只用于测量光的强度,而不是直接测量光的颜色。为了捕捉场景中呈现的真实颜色,摄像机使用放置在传感器前面的颜色滤镜阵列,以便每个像素只测量一种颜色(红色、绿色或蓝色)。如下图所示,它们以拜耳模式排列。
拜耳马赛克彩色滤镜:每2×2组像素捕获由特定颜色过滤的光——两个绿色像素(因为我们的眼睛对绿色更敏感),一个红色,一个蓝色。这种模式在整个图像中重复出现。
然后,在给定部分信息的情况下,摄像机处理管道必须重构所有像素的真实颜色和所有细节。 脱模(Demosaicing)过程的第一步是要猜测丢失的颜色信息,通常会选取附近像素的颜色进行插值,这意味着RGB数字图像的三分之二实际上是重建的!
脱模利用相邻像素重建丢失的颜色信息
在最简单的形式中,这可以通过对相邻值进行平均来实现。大多数真正的解谜算法都比这更复杂,但由于只能得到部分信息,脱模的效果仍然不完美而且有很重的人工痕迹。虽然大尺寸的单反相机也存在这种情况,但它们更大的传感器和更大的镜头能比一般的移动相机能够捕捉到更多的细节。
如果你在移动设备上进行缩放变焦,情况会变得更糟;然后,算法被迫通过附近的像素进行插值来弥补更多的信息。然而,这也不是一无是处,因为即使受到移动设备光学的限制,高速连拍(Burst Photography)以及多幅图像的融合可以用来实现超分辨率。
从高速连拍(Burst Photography)到多帧超分辨率
虽然单个帧不能提供足够的信息来填充缺失的颜色,但是我们可以从高速连续拍摄的多个图像中获得一些缺失的信息。谷歌的HDR 算法在Nexus手机和Pixel手机上得到了成功应用,它已经利用多帧的信息使手机照片达到了更大传感器所期望的质量水平,是否可以使用类似的方法来提高图像分辨率?
多帧超分辨率的概念出现已经有十多年历史了(在天文摄影上,类似的概念被称为“drizzle”),通过捕捉和组合多个细微位置差异的照片可以产生相当于光学变焦的效果,至少在2-3倍的低倍变焦和良好的照明条件下。在这个过程中,一般的想法是将低分辨率的图像部分直接对齐并合并到一个理想(更高)分辨率的网格上。下面是一个理想化的多帧超分辨率算法如何工作的例子:
(与顶部的需要插值的脱模过程相比,用多个图像填充,每个图像水平或垂直移动一个像素更为理想)
在上面的示例中,我们捕获了4个帧,其中3个帧精确地移动了一个像素:从水平方向、垂直方向以及同时从水平和垂直方向。所有的洞都会被填满,根本就不需要任何脱模。一些单反相机支持这种操作,但只有当相机在三脚架上,传感器/镜头能进行移动,这有时被称为“微步”(microstepping)。
多年来,这种“超级分辨率”的高分辨率成像方法的应用仍然主要局限于实验室,或以其他方式控制的设置中。在这些设置中,传感器和主体是对齐的,它们之间的移动要么是有意控制的,要么是受到严格限制的。例如,在天文成像中,用固定的望远镜来拍摄星空的移动轨迹。但在当今智能手机等广泛使用的成像设备及应用程序中,超级分辨率的实际应用仍是可望而不可及的。
多帧超分辨率功能需要满足一些条件。首先,也是最重要的一点,镜头需要比所使用的传感器更好地处理细节(相反,你可以想象这样一个情况,镜头设计得很差,添加一个更好的传感器没有任何好处)。数码相机有的一种常见的且不受欢迎的效果,叫做混叠(aliasing)。
图像混叠
当摄像机传感器不能忠实地表示场景中的所有模式和细节时,就会发生混叠。混叠的一个很好的例子是龟纹图案( Moiré patterns),当两种同样的图案以一定的角度重叠会出现的现象。
由两组平行线产生的莫尔条纹,一组垂直,另一组倾斜5°
此外,当物体在场景中移动时,对物理特征(如表边)的混叠效果也会发生变化。您可以在以下连拍序列中观察到这一点,在连拍序列中,相机的轻微运动会产生时变的混叠效果:
左图:高分辨率下的桌子边缘的单幅图像,右图:连拍产生的不同图像帧。混叠效果和云纹效果在不同的帧之间是可见的——像素似乎跳来跳去,产生不同的彩色图案
但是,我们也能因祸得福,如果分析混叠效果产生的模式,就会得到颜色和亮度值的多样性,以实现超分辨率。尽管如此,要在手持移动设备和任何连拍序列中实现高分辨率,依然有诸多挑战存在。
手部移动实现超分辨率
如前所述,一些单反相机提供了特殊的三脚架超分辨率模式,类似于我们目前描述的方式。这些方法依赖于相机内传感器和光学器件的物理运动,但需要相机完全稳定。然而,这在移动设备上是不切实际的,因为它们几乎总是手持的。
然而,借助手部运动方案,我们将这个最大的难点变成了我们的优势。当我们用手持相机或手机拍摄一组照片时,画面之间总会有一些运动。光学图像稳定(OIS)系统可以补偿相机的大运动——通常间隔1/30秒以内的5-20像素移动——但不能完全消除更快、更低的幅度、自然的手震颤。当使用高分辨率传感器的手机拍照时,这种手抖的幅度只有几个像素。
在进行处理后,连拍中手掌震颤的结果
为了利用手部抖动的优势,我们首先需要将高速连拍的照片排列在一起,我们选择高速连拍图像中的单个图像作为“基”或参考帧,并对齐与之相关的所有其他帧。对齐后,这些图像大致结合在一起。当然,手部运动不太可能将图像精确地移动单个像素,因此我们需要在每个新捕获的帧中插入相邻像素,然后将颜色注入基帧的像素网格中。
当由于设备是完全稳定的(例如放置在三脚架上)而没有出现手部运动时,我们仍然可以通过故意“抖动”相机来达到模拟自然手部运动的目的,通过强迫OIS模块在镜头之间轻微移动。这个移动非常小,选择的时候不会干扰正常的照片——但是你可以在Pixel 3上自己观察它,你可以把手机完全固定,比如把它按在窗口上,或者最大限度地缩放取景器。如下图所示,可以观察远处物体微小但连续的椭圆运动。
克服超分辨率的挑战
以上是我们对理想过程的描述,听起来很简单,但是要实现超分辨率并不是那么容易。有很多原因导致没有被广泛应用到手机等消费产品中,例如其需要大量的算法创新。挑战可以包括:
- 即使在良好的光照条件下,连拍的单个图像也是有噪声的。一个实用的超分辨率算法需要意识到这种噪音,并正确工作。我们不想只得到更高分辨率的噪声图像——我们的目标是既提高分辨率,又能产生更小的噪声。
左:在良好的光照条件下拍摄的单帧图像,由于曝光不足,仍然可能包含大量的噪声。右:连拍处理后合并多帧的结果。
- 在连拍的图像之间的运动不仅仅局限于相机的运动,可能有复杂的场景中运动如风吹动的树叶、水面涟漪、汽车、人的面部变化、火焰的闪烁——甚至一些不能被视为独立运动的如吸烟。一般来说,完全可靠和局部对准是不可能的,因此即使运动估计不完美,一个好的超分辨率算法也要能用。
- 因为大多数运动是随机的,即使有良好的对齐,数据可能在图像的某些区域密集,而在其他区域稀疏。超分辨率的关键是一个复杂的插值问题,因此数据的不规则传播使得在网格的各个部分生成更高分辨率的图像具有挑战性。
以上所有的挑战似乎都使得超分辨率在实践中不可行,或者充其量只能局限于静态场景和放在三脚架上的相机。利用Pixel 3上的Super Res Room,我们开发了一种稳定、精确的连拍分辨率增强方法,它使用自然的手部运动,并且足够强大,可以部署在手机上。
以下是我们解决上述挑战的方法:
- 为了在高速连拍(Burst Photography)情况下有效地合并帧,并为每个像素生成一个红色、绿色和蓝色的值,而不需要进行除噪,我们开发了一种跨帧集成信息的方法,该方法考虑了图像的边缘,并相应地进行了调整。具体地说,我们分析输入帧并调整我们如何将它们组合在一起,权衡增加的细节,分辨率,噪声抑制和平滑。我们通过沿着明显边缘的方向合并像素,而不是跨越它们来实现这一点。效果是我们的多帧方法提供了噪音减少和细节的增强之间的最佳平衡。
- 为了使算法能够可靠地处理复杂的局部运动场景(人、车、水或树叶移动),我们开发了一个鲁棒性模型来检测和减轻对齐误差。我们选择一帧作为“参考图像”,并只有当我们确信我们找到了正确的对应特征才将来自其他帧的信息合并到它。通过这种方式,我们可以避免像“重影”或运动模糊,或者是错误地合并图像的部分。
一辆快速行驶的公共汽车的连拍图像。左:没有鲁棒性模型下合并。右:有鲁棒模型下合并
推动移动摄影技术的发展
去年谷歌推出的人像模式(Portrait mode),以及之前HDR pipeline都展示了移动摄影的优越性。今年,我们从变焦下手。Super Res Room能提高计算机摄影技术水平,同时缩小移动摄影和数码单反之间的质量差距。
超分辨率的概念比智能手机的出现早了至少10年。在几乎同样长的时间里,它也通过电影和电视在公众的想象中存在,它也是学术期刊和学术会议上成千上万篇论文的主题。现在,在你手掌中的Pixel 3里,超分辨率真实存在。
如何最大限度地利用Super Res Room?
这里有一些关于如何在Pixel 3的手机上使用Super Res Room的技巧:
- 缩放再缩放,或者使用 按钮增加缩放的离散步骤。
- 双击预览以快速切换缩放和缩小。
- Super Res可以在所有缩放系数下工作,不过出于性能原因,它只激活了1.2倍以上。
- Pixel的广角摄像机的光学分辨率有基本的限制。因此,为了最大限度地利用缩放,请保持放大系数适中。
-
避免快速移动的物体。Super Res Room能正确捕捉它们,但你不可能得到更高的分辨率。