除了作为部分厂商纯粹「蹭热点」式的营销噱头以外,双摄的确能够在不增加摄像头模组厚度的前提下为手机成像带来多方面的提升。这也让它和圆角、全面屏一样,成为了今年 iOS 和 Android 阵营的众多「潮流」之一。
即便如此,仍然有这么一个「异类」,凭借单摄在今年的旗舰行列站稳脚跟,用 98 分的 DxOMark 评分证明了自己不俗的软硬件优化实力——它就是本月初发布的 Google Pixel 2 和 Pixel 2 XL。
(注:为了行文方便,以下将这两款手机统称为 Pixel 2)
浅景深、虚化与人像模式
在专业摄影中,我们可以使用单反相机轻松拍出「刀锐奶化」的效果——焦内如刀割般锐利,焦外如奶油般化开。这种拍摄手法不仅能够突出画面主体,同时还能对杂乱、无关的背景进行抑制,因而也被广泛应用于人像拍摄当中。
但手机不一样,手机的镜头体积更小;保证画面主体(对焦平面)清晰的前提下,基本很难再从硬件层面上实现单反那样的焦外虚化效果。
这也是手机厂商纷纷引入双摄方案的原因之一。
诚然,采用双摄方案的手机能够带来更纯粹的黑白照片成像效果(比如华为 P9)、细节更丰富的变焦(比如 iPhone 8 Plus)以及视野更开阔的广角(比如 LG G6);但除此以外,多出来的这颗摄像头往往还能充当景深镜头,带来大家喜闻乐见的「人像模式」。
那双摄手机具体是如何进行成像的呢?
手机如何看清主体与背景
我们不妨从一道数学题说起:
这天,Yves 走在上班的路上,发现文刀正在路对面站着发呆;此时,Yves 和文刀的连线与公路的夹角为 60 度。
Yves 再往前走了两米,发现文刀还在原地;此时 Yves 和文刀的连线与公路的夹角变成了 120 度。那么问题来了:这条公路有多宽?
放在高中,大家也许可以很轻松地给出上面这道数学题的答案。即便是将数学知识都还给了数学老师的我,在查阅相关原理和公式之后,也能得出公路的宽度是「根号3」米(自豪,但例子不太好,公路似乎太窄了)。这里不仅涉及到勾股定理、几何学原理和三角函数之类的曾经大家都会的东西,还可以外延出三角定位、立体算法等知识。
在这道数学题中,如果我们将两个位置的 Yves 看作是两颗并排放置的摄像头、将文刀看作是所拍照片中的某个像素点,利用这个原理,手机就能够轻松地计算出这个像素点和其他像素点各自的距离。
这与人眼能够分辨物体距离、层次和凹凸的原理类似:
利用上述原理来区分画面层次的过程又被称作立体算法。在手机进行实际拍摄的过程中,背后所涉及到的处理操作和算法要更为复杂。
但那些没有采用双摄的手机有时也能通过算法来实现一定的虚化效果:它们将一张照片分割成两个不同的图层,一层包含画面主体的像素(通常是人像),另一层则包含背景像素。这个过程通常又被叫做图像分割。但采用这个方法是无法获知某个像素距离画面主体的实际距离,因而也就无法根据远近来实现虚化强度的变化。
另外,如果画面中除了背景和画面主体还存在更为靠近镜头的前景,简单图像分割也是不会将这部分内容进行虚化处理的;而在单反相机的成像当中,这部分画面内容也可以得到有效虚化。
说完主体和背景分割的原理和一般方法,我们再把目光重新聚焦到 Pixel 2 上:只有一颗摄像头的 Pixel 2 是如何拍出这样的人像的呢?
Pixel 2 如何处理人像
首先需要说明的一点是,Pixel 2 和 Pixel 2 XL 的前置与后置镜头都是支持人像模式的,但二者的实现原理不同。其中,前置镜头的人像模式主要用到的就是上面的图像分割,此外还有机器学习算法的参与。
后置镜头虽然只有一个,但它依然能够结合立体算法和图像分割两种算法,实现不输其他双摄手机的人像拍摄效果。
图像分割自不必说,Pixel 2 的后置镜头又是如何进行立体算法成像的呢?这里主要有四个步骤:
1. 生成 HDR+ 图像
人像模式始于一张清晰的 HDR+ 照片。
而熟悉 Google Camera 的用户对 HDR+ 一定不会感到陌生:利用计算成像(computational photography)技术,Google Camera 在我们按下快门后捕获并合成一系列曝光不足的照片来防止过曝、对齐并矫正这些照片中的相同像素点来减少暗部噪点、保持局部对比度的同时失当降低整张照片的全局对比度……最终,即使是在昏暗的光线条件下,我们也能够拍出一张细节锐利、画面纯净的拥有高动态范围的照片。
Pixel 2 开启 HDR+ 前/后对比(注意右上角天空和内部细节)
2. 模糊什么:基于机器学习的图像分割
在一些特技电影的花絮当中,我们经常能看见演员们身披护具和威亚,在一片绿色的摄影棚中「尬演」;但我们最终所看到的成片中,是没有绿色背景的。
这就是电影产业中常用的色键抠像(chroma keying),虽然很高效,但显然不能用在手机上进行图像分割。在这里,Google 引入了自家特长——机器学习。
具体而言,Google 使用 TensorFlow 搭建了一个卷积神经网络(convolutional neural network),利用一百多万张照片进行学习和训练之后,这个卷积神经网络不仅可以判断某张照片是否属于「人像」,更能够在人像照片中准确识别哪些像素属于这个「人」。
利用这个卷积神经网络进行图像分割仍显粗劣,但也不算太差:在上面的例子中,它成功地将照片中女性的头发和她手中的杯子识别成了「主体」。如果我们根据这个分割结果来对这张照片进行虚化,就能得到上面出现过的那张照片:
但也正如上文所说,利用卷积神经网络进行图像分割的技术固然成熟,但如果你仔细观察上面这张照片,会发现它依然存在两个问题:
除了主体和背景以外的前景偶尔也会被「一概而论」划作背景;
这种粗暴的背景虚化方式无法体现背景元素距离画面主体的「距离感」。
3. 模糊多少:从双像素到景深映射
要改善上面提到的两个问题,就不得不用到本文第二部分提到过的立体算法。
Pixel 2 虽然采用单摄,但它的 CMOS 传感器上每个像素都有两个独立光敏二极管,这就好比把传感器一分为二,两部分通过对同一个像素点的观察来判断这个像素和对焦平面之间的位置关系。
在下面的例子中,Pixel 2 的双像素传感器就分别从上、下两个位置捕捉到了两张看似相同的照片,但如果你仔细观察最右的对比动图,就会发现同一个像素传感器上的上、下两部分捕捉到了细节略有差别的照片!
上下并排分布的两个像素捕捉到的画面,细微差距肉眼几乎难以识别
这种成像技术又被称作双像素自动对焦(DPAF),但它还有一个更为大众所熟知的名字——相位对焦(PDAF)。通过相位对焦技术对两张照片的「找茬」,Pixel 2 将照片中所有像素和镜头之间的距离映射成了一张景深图:
在上图左侧的景深映射图中,颜色越浅意味着距离拍摄者越近;右侧 Pixel 2 将这种远近关系进一步「可视化」——黑色区域无需虚化、蓝色区域被识别为前景、红色区域则会根据颜色深浅程度给予不同程度的虚化效果。
4. 合成最终照片
将上面每个步骤所得到的结果综合起来,就可以合成一张完美的人像照片了。
(HDR+ -> 机器学习分割 -> 双像素景深映射 -> 算法合成)
如果你有兴趣对每个步骤进行深挖,会发现即便是那些看上去相对比较简单步骤背后,都包含了 Google 多年以来积淀下来的图像处理经验和技术。而当我们使用 Pixel 2 的人像模式进行拍摄时,上述所有过程都被压缩到了 4 秒以内完成。
你可以点 这里 查看更多 Pixel 2 人像模式的样片;当然,我们甚至还可以使用这个模式拍摄一些人像以外的题材,比如:
微距拍摄:在这种情形下,尽管步骤二中的机器学习算法无法获取到任何「人脸」,但 Pixel 2 仍然能够凭借双像素对焦技术对画面主体以外的部分进行有效虚化;
前置摄像头自拍:Pixel 2 的前置摄像头没有双像素对焦,因此 Google 也坦言,除了使用步骤二从的机器学习算法区分主体人像和背景以外,前置摄像头无法根据距离远近对背景进行有区别的虚化。但总体而言,前置摄像头的人像模式自拍效果还算不错。
One More Thing
事实上,抛开双像素对焦技术不谈,一些机型仅靠机器学习和算法也能够获得不错的人像照片,但合成速度却往往不太理想(比如以往 Google 机型在 Google Camera 中就可以使用纯算法驱动的 Lens Blur 功能)。
而除了拍照,机器学习在手机上的应用前景也越来越受到人们重视,从 A11 上的「神经网络引擎」到麒麟 970 上的独立 NPU,当移动设备上的现有硬件无法满足机器学习任务需求时,独立的机器学习芯片就该适时登场了。
而这一次,不断强调「AI First」的 Google 终于也多长了一个心眼。在 Pixel 2 发布近两周后 Google 正式确认,Pixel 2 上其实还有一款叫做 Pixel Visual Core 的图像处理单元(IPU)尚未启用。
这个图像处理单元将在 Android 8.1 预览版中以「开发者选项」的方式开启,届时,Pixel 2 在 HDR+ 和人像模式这类拍照任务上的效率会变得更高;此外,HDR+ 的 API 接口后续也会开放给第三方应用。
至此,Pixel 2 作为一款「拍照旗舰」的地位似乎更加深入人心了;而从收编苹果芯片架构师 Manu Gulati 到最近收购 HTC 的 Pixel 研发团队,Google 似乎正迈上一条「硬件定制+软硬优化」的道路。
「Made by Google」的未来正越发让人期待。
最后,你还可以通过这段 视频(自带简中字幕)来了解 Google Pixel 2 相机的硬件构造、软件特色、图像处理方式以及幕后测试调教的全过程。