编注

每年 Google 都会通过博文分享他们在计算摄影上的最新成果及背后的实现方式,今年也不例外。

今年的 Pixel 4 和以往最大的不同莫过于副摄长焦镜头的加入,除了带来出色的 变焦拍摄 能力外,这颗副摄同样也被用来改善人像模式的成片效果:双像素对焦技术与双摄系统的协同、先虚化处理再进行色调映射的流程优化,加上 Google 一直以来都专精的图像合成算法,Pixel 4 的人像模式成片效果相比以往也有了质的飞跃

我们翻译整理了 Google AI Blog 上的最新博文,为了保证可读性,成文与原文在结构和部分表述上略有调整。如果你对原文感兴趣,可以通过文末原文链接跳转阅读。


人像模式是 Pixel 手机上的一项相机功能,任何人都可以借助它拍出专业相机才有的那种浅景深照片,通过虚化照片中的背景,这个模式也可以将照片观察者的关注点聚焦在拍摄对象上。人像模式最初借由 Pixel 2 推出,在 Pixel 3 上则借助 双像素对焦系统机器学习测量景深 的方式得到进一步完善。

在这个拍摄过程中,了解拍摄物体与相机间距离、即获取景深信息,成为了至关重要的一步,以此我们才知道照片中哪些部分需要被锐化,哪些部分则应该被虚化。

而在 Pixel 4 上,我们又对人像模式进行了两项重大升级:充分利用 Pixel 4 所搭载的双摄镜头以及双像素对焦系统来提升景深计算能力,让用户无论远近都能借助人像模式拍出漂亮的虚化照片;同时我们也改善了照片中的背景虚化效果(也被称为「散景」),使其更接近专业的单反相机。

Pixel 4的人像模式可在近距离和远距离进行人像拍摄,能够带来类似 SLR 的背景虚化效果(照片来源:Alain Saal-Dalma 和 Mike Milne)

双像素对焦简要回顾

Pixel 2 和 Pixel 3 都使用相机自身的双像素自动对焦系统来测量景深。

通过将每个像素点一分为二,双像素自动对焦系统让每半个像素点都能经由镜头光圈生成略有不同的两个部分。通过分别读取每个部分的像素图像,传感器就可以获得视角稍有不同的两个画面。

这些画面虽然来自单摄相机,但它们的成像效果和同时在主镜头光圈两边固定一对相机的效果类似。当我们在这两个视角之间切换时,就会发现被摄主体固定在同一位置,背景则像是有了立体的空间感。

因为灯泡离镜头更近,它带来的视差效果也比第二张人像更加明显

这种空间感又被称为视差效果,它的大小、程度取决于景深。通过寻找不同视角成像中同一像素的对应关系,我们得以感知画面的视差效果大小并以此来估计景深信息。

与镜头距离越远的画面,视差效果就越不明显。以上图为例,我们可以以此轻易地获取近距离拍摄的灯泡与周边各个物件的景深。

但同时视差效果还取决于双目视觉的基线,也就是双摄系统中两个镜头(或者是双像素系统中的两个「虚拟相机」)的距离。由于双像素系统被塞在单一一个摄像头中,它的基线长度仅有 1mm 不到,换句话说双像素系统很难估计照片中远景的景深。

同样以上图为例,在画面右侧的人像拍摄场景下,即便借助双像素对焦以不同视角进行成像,作为被摄主体的人物在两组视图中看起来也是几乎相同的。

双摄:双像素对焦的强力补充

在双像素对焦有些不够用的时候,双摄的引入就成为了一种有力的补充。Pixel 4 的广角镜头和长焦镜头相距 13mm,远远大于双像素系统中的基线长度。由此造成的更大视差也就使得远景中的景深更容易估算。

如下图所示,双像素系统切换视角带来的视差几乎难以被察觉,而在双摄系统的切换下,视差非常明显。

但即使已经采用了双摄,双像素对焦所收集的信息依然十分有用。基线距离越大,切换视角产生的新的可见像素就越多,而这些像素在另一视角中往往找不到相对应的像素。

左:双像素对焦视图 | 右:双摄视图

依然以上面这张对比图为例,不难看出,双像素对焦获取到的画面具有非常微妙的垂直视差,而双摄获取到的画面则有更明显的水平视差。而如果我们仅仅使用双摄获取到的两个画面来测算景深,主摄视角中紧靠人物右边的背景像素在副摄视角中是没有对应像素作为参考的。

因此如果仅使用双摄,通过测量对应像素的视差来估计景深就不太可能了;然而在双像素对焦的帮助下,不同视角画面中的像素仍然可以一一对应。将二者结合起来,我们就能更好地估算这些区域的景深信息了。

最后,同时启用双像素对焦系统和双摄系统也可以解决孔径问题,这一点在我们先前的博文中已有描述:当画面中存在大量横向和纵向画面内容时,不管是双像素对焦系统还是双摄系统都很难单独对这些画面内容的景深进行判断。

Pixel 3 曾借助学习景深来解决立体景深难以搞定的背景虚化问题

而在 Pixel 4 上双像素对焦和双摄的排布基准线是垂直的,因此我们可以估算画面中任何方向线条的景深信息。

三个圆圈中的斜线在视觉效果上有着相同的运动轨迹(左上方向),但实际却可以由三种运动方式来完成

有了这些信息作为综合补充,我们就可以估算远处物体的景深,同时减少所有场景下的景深处理误差了。

综合计算景深,算法魔力依旧

上面提到,去年我们曾展示过在双像素对焦系统下如何使用机器学习来估算景深效果(并解决孔径问题)。

而对 Pixel 4 上的人像模式而言,我们拓展了这种估算方式:通过使用 Tensorflow 训练的卷积神经网络,同时估算双像素和双摄系统下的景深效果。这种神经网络会将输入的编码先转为中间编程语言,因此它先使用两个不同的编码器来分别处理双像素和双摄系统的输入,然后再由一个单独的解码器通过中间编程语言来计算景深。

卷积神经网络可以根据双像素对焦和双摄的信息综合计算景深信息

为了强制让机器学习的模型同时使用两路输入,在训练的过程中我们采用了一种删除技术,也就是随机的将一路输入设置为零。 如此这般以教会模型合理处置异常,包括可能面临的一路输入不可用的情况,比如画面主体太近辅助长焦镜头无法对焦的时候。

双像素对焦和双摄在景深计算的过程中各尽其能

上图中的灯笼展示了这个算法如何借助双像素对焦和双摄获取的两路信号,协同解决孔径问题的过程:一路输入只能使我们准确地预测一个方向上线性景深(就像水平之于双像素,垂直之于双摄);而两路信号协同,我们就可以在任意方向上再现线性景深。

至于下半部分的人像,对于手臂和躯干之间的遮挡区域,双像素系统能提供了更好的景深信息;而对于背景和地面,基线距离更大的双摄则能发挥更好的作用。双像素对焦系统在景深测量中的表现偏好在画面左上角和右下角体现得尤为明显,你可以在 这里 查看更多示例。

媲美单反的背景虚化

浅景深照片或者说背景虚化的照片让很多摄影师痴迷。而在那些由单反拍摄的高品质背景虚化照片中,最引人注意的一个点莫过于:散焦状态下,背景中区域面积较小的明亮区域会出现散布,当这些区域的亮度够高时,则会在画面中形成圆形光斑。

左:单反相机的虚化光斑 | 中:旧版人像模式的光斑效果 | 右:新版人像模式的光斑效果

为了重现这种背景虚化效果,我们采用了一个半透明「圆盘」来替换画面背景中的对应像素,这个圆盘的大小则取决于景深。实质上也是对原始图像的一种模糊处理。

而在过去,这种模糊处理通常是在色调映射(即将原始传感器数据转换为可在手机屏幕上查看的图像)之后进行的,在色调映射的过程中,原始数据的动态范围会被压缩,阴影区域相较于高光区域也会变得更加明亮;不幸的是,这种处理流程也会导致相关场景中物体亮度信息的丢失,没有这些信息,我们就很难模拟出高对比度的背景虚化效果,结果往往是背景虚化的光斑与背景融合在一起,远没有单反成像那么自然。

解决这个问题的方法在于,先虚化由 HDR + 生成的、合并后而来的原始图像,然后再进行色调映射。 这样一来,背景虚化中的光斑效果更明亮也更明显,同时前景、背景的画面饱和度也能保持一致。

这个功能已经向 Pixel 4 以及 Pixel 3/3a 机型进行推送,升级到 Google Camera 7.2 既可体验。你也可以在 这里 查看更多样张。

色调映射前进行虚化处理,可以让背景更加饱和、光斑效果的对比度更高

实际拍摄技巧

通过提升景深质量,减少最终成像中的计算误差并优化背景虚化的最终观感,我们让 Pixel 4 的人像模式变得更优秀了。

不过当相机距离拍摄物体至少有 20cm(长焦副摄的最小对焦距离)距离时,双摄和双像素对焦的综合景深计算最为有效。 因此为了获得更好的人像模式成片质量,不妨在手机与拍摄景物间保持这个距离。

相关链接:

关联阅读:

> 下载少数派 客户端、关注 少数派公众号 ,领略 Google 计算摄影的魅力 ✨

> 特惠、好用的硬件产品,尽在 少数派sspai官方店铺 🛒