文章有点标题党,但是Google 无疑是当今公布了手机相机算法技术最多的厂家,从Google 的Paper 中我们也能大致了解当前计算摄影学最热门的技术细节。以下是2019年 Google Marc Levoy 团队的三篇个人认为比较重要的文章:
1.Handheld Mobile Photography in Very Low Light
2.Learning Single Camera Depth Estimation using Dual-Pixels
3.Handheld Multi-Frame Super-Resolution
还有两篇比较实用的文章:
4.Distortion-Free Wide-Angle Portraits on Camera Phones
5.STEADIFACE: REAL-TIME FACE-CENTRIC STABILIZATION ON MOBILE PHONES
本片先介绍文章1,剩余的会继续介绍。文章1主要解释了“超级夜景”的原理,也就是以前Google HDR+(图1)的升级版,其中HDR+在公众号往期文章“Google Pixel3 拍照为什么那么牛?”中介绍过
图1
先上效果,图2 左边是Google 2016年HDR+ 的效果,右图是最新的效果。
图2
如果假设我们就是Google 的工程师,让我们来改进2016的文章我们应该怎么来改进呢?首先看下现在的问题缺陷:
问题1:需要进一步提高信噪比,才能提高图像亮度等等,不然就会增强噪声,如图3。
问题2:进一步提升夜间白平衡的准确度,且白平衡和对比度是需要尽量和人眼的感知一致,保证真实性,比如图4。
方案1.1:如何尽可能提升曝光时间?
其中问题1 的改善,从原理上来讲无所谓就是提高sensor的整体曝光量或者改善算法效果,但是想在手机上提高曝光时间而不导致人像模糊只有一种办法:
多帧合成时尽可能提高静态帧(不运动帧)的曝光时间
但是此时问题又来了,该如何判断当前帧是不怎么运动的呢,Google 给了如下方法?
简单概括为:
l 使用MPI-Sintel 光流求得相对运行情况 ,图6
l 然后使用GMM 模型来预测下一帧的运动情况
l 读取陀螺仪信息数据
图6
方案1.2:如何提升算法效果?
该类提升是根据之前的问题进行算法的修改,核心还是判断那块运动了哪块没动,没动的尽量提升temper denoising;动了的地方提升spatially denoising,但是也稍微平衡一下temper的力度:
n 提高匹配的准确度:如低照度下,增加block matching 时的block size等(肯定还用了更多方法)
n 修改多帧融合的权重计算方法等
方案2:
图7
因为人眼有如图7中的各种非线性毛病,从亮度和色彩上去改善为:
Ø 1. 使用人眼感觉舒服的图像数据去训练AWB (FFCC)算法(修改了AWB 的 Error metrics)。
Ø 2. 根据亮度分布的tone mapping 算法
原则为:
ü 在保证噪声不提升的情况下,尽可能提升gain
ü 保证全局对比度,即暗区不要增亮太多比如图8 的(b)就不好
ü 抑制高亮区域不要过曝
ü 根据亮度调整饱和度
ü 有luma shading也挺好看
1小时通篇文章看下来:思维导图为下: