前言

手机拍照 已经成为目前拍照设备的主流。 主要优点为其 便携性 。并且近几年各大手机厂商在手机拍照上的挖掘也使得手机拍照效果有了很大的提升。这里包含:

1) 硬件 上的提升,如使用更好的传感器,结合多个摄像头拍照。

2) 软件 上也得益于现在AI算法的发展,利用AI算法实现单靠手机硬件很难实现的效果。例如人像虚化,可以相对简单的使用AI分割人像达到类似真实虚化的效果,或计算深度图进行更多物体拍摄的虚化,可以节约硬件成本。

图1 

Q:

机拍照是否能够达到拍照界老大“单反”的效果呢?

A:

答案是当然达不到。这其中包含很多的原因,最直接的原因是传感器不够好。但也有很多算法在利用有限的资源向着单反的方向靠近。因为传感器直接出来的就是RAW图,提升RAW图质量便可以提升画质,也是最根本最直接最容易的方向,而利用多帧RAW图进行画质的提升便是现在的主流方向之一。

0 1

算法背景

本文介绍一种基于多帧RAW图进行画质提升及HDR的算法框架: HDR+ [1]

此算法由谷歌提出,并用在谷歌自己的Pixel手机上,使得当时的Pixel手机即使使用单摄也可以达到很高的画质。 顺便提一下,谷歌还使用单摄 (双像素) 来计算深度图 [2] ,在单摄上算是研究的很深入了。

HDR+总体思路使用连拍的多帧RAW图进行降噪,提升RAW图质量,再通过HDR算法提高整体在显示上的动态范围。HDR的部分为什么这么说呢,因为实质上是一个tone mapping的部分,这个后面还会细说。

HDR+整体是一个 传统算法 ,因此 本文会在去噪及HDR的两个部分提及一些基于深度学习的方法 ,作为一种可尝试可替代的研究方向。

图2

0 2

RAW图

玩摄影的对RAW图肯定很熟悉,RAW图是由 传感器直接采集到的数据 ,具有很高的宽容度,是摄影后期的主要数据。

如下图 相机拍照流程图

光线经过景物的反射进入镜头后会射到感光原件上,光线经过贝尔滤镜滤出RGB三种颜色。贝尔滤镜通常是RGGB排列,绿色要多一倍。滤出的光线会打到感光元件CCD或CMOS上,感光元件上会产生积累电荷,电荷产生电压并输出电流。将光的强度转成了电信号,之后经过AD将模拟信号转成数字信号。

此数字信号就是RAW图,通常是10~14bit。RAW图经过ISP (图像信号处理) 芯片后即可输出成JPG进行保存。

图3  

整个流程的 噪声来源 主要是:感光元件引入的噪声,形式相对简单,在经过ISP后会变得比较复杂。

另外, 最终保存的JPG会损失很多信息 ,用来做后处理并不太好。感光元件的大小会影响噪声程度,因为如果面积小,每个像素在曝光时采集的光子量就少,尤其是拍夜景时,感光元件输出的信号会变弱。导致细节很暗看不清。

提高亮度的两种方式

▪  提高ISO (感光度) ,但这会导致对噪声也更加敏感,噪声强度会变大。

▪ 长曝光,让感光元件多积攒些电荷。但这种方式对手持有一定要求,通常需要三脚架。

白天也会有类似的情况,有时为了避免过曝 (例如拍蓝天) ,就要降低曝光时间,但会导致其他地方变暗,强行将这部分拉亮的话就会有明显噪声。通常的处理方式是 多曝光HDR融合 ,仍然对手持有要求。

03

ISP

接下来简单提一下 ISP的总体流程 ,如下图:

图4    

ISP的总体流程

▪  BLC (BLack Level Correction) 暗电流校正。 因为传感器也是模拟器件,它在拍全黑的景时不会完全输出0电流,会有一个在一定范围的电流,暗电流校正会减去这部分电流,保证全黑的部分输出为0。

▪  Lens Shading 由于镜头本身的物理性质,会造成四周亮度相对于中心逐渐降低,这一步骤是通过曲线拟合的方式对周围的亮度进行补偿。

▪  BPC (Bad Pixel Correction) 坏点校正。 传感器某些像素可能坏了,无法反馈光线的强度,这步骤通过插值的方法进行坏点的修复。

▪  Demosaic去马赛克; 这个步骤将贝尔形式的像素经过插值还原常用的RGB三通道的形式,所以实际的有效分辨率是原图大小的四分之一,其余部分是经过插值得到的,这个步骤的计算量也比较大。

▪  Bayer denoise 是一个去噪的部分,通常是双边滤波器。

▪  AWB自动白平衡 ,将场景中白色的物体还原成白色。

▪  Color Correction颜色校正 ;校正人眼对光谱响应与传感器对光谱响应之间的差别,通常是个3x3的矩阵。

▪  Gamma伽马变换 ;传感器对光强是线性响应,但人眼不是,这一步做一个非线性的校正。

▪ 将色彩空间转为 YUV ;一方面为了后面的存储,一方面用于后续的Color denoise去彩噪步骤。最后输出成常用格式。

从以上ISP步骤可以看出,原始sensor输出的RAW数据的噪声形式是相对简单、无相关性 (像素与像素之间) 、zero-mean的。 但经过整个ISP的处理后,噪声形式会变得异常复杂,空间滤波及去马赛克都会提高像素间噪声的相关性,双边滤波器及gamma等也会使得噪声强度变得更非线性。

0 4

RAW图的优缺点

根据上面的介绍,简单总结下使用 RAW图处理的优缺点

优点

▪ Bit数大,信息量多,宽容度高。

▪ 噪声模式相对简单、弱相关、易于去噪;ISP出来的噪声比较复杂。

▪ RAW图与场景无关,只与光强有关;ISP出来的结果与场景有一定关系 (AWB、颜色校正可能随场景变化)

▪ 数据量少,这里指处理的数据量,而非保存的文件大小;RAW图是单通道,int16类型,sRGB是三通道int8类型。并且多帧融合在RAW图上做,融合后的RAW图只要走一次ISP即可。如果在sRGB上做,采集到的每帧都要走ISP,增加了运算量。

缺点

▪ 跟camera强相关,数据可能不通用;如果基于DL这类学习方法的话,泛华性可能会比较差。

▪ 有些芯片在取出RAW图后可能没法再走原本的ISP流程,这样的话就需要自己把整个ISP流程实现一遍,当然很有可能不如原ISP的效率高。

▪ 不易于调试;一般相机输出的RAW是DNG格式,这个可以用PS打开,也是adobe定义的。但是手机的RAW数据可能无法输出这样的格式,这就需要修改一些第三方库 (例如libraw) ,结合一些有DNG的头文件进行显示。或者也可以把ISP流程实现一遍进行显示。

▪ 手机上可能不好取,对于非手机厂商,如果手机上没有提供类似的接口可能很难取到或高效的取到RAW数据。

05

其他方案的优缺点

除了HDR+方案外,也可以尝试其他方案,简单提一下。

其他方案

▪  大光圈 :可提高进光量,但手机厚度限制不好实现。

▪  光学防抖 :可以防止手持的抖动带来的模糊,但无法应对运动的物体。

▪  多曝光融合 :曝光时间不同,容易出现鬼影,而且无法提高画质,主要做HDR的。

▪ 各种吊炸天的 深度学习方法 ,数据是大问题。

06 HDR+

HDR+的 整体框架 如下:

  图5

上面分支 :实时的低分辨率预览,这部分直接走原始ISP输出。

下面分支 :最左边是一个缓存的栈,从相机打开开始便持续缓存一定数量的RAW数据。当用户按了拍照之后,取出这些RAW数据进行处理。

下面分支是非实时全分辨率的 。首先多帧RAW先对齐并融合成一张RAW图,此RAW图已经去完噪,质量更高。之后的部分,其中的local tone map是HDR的部分,其余为ISP中的流程。

因为谷歌的HDR+是自己实现的ISP步骤,也可以尝试使用原本的ISP芯片,解耦算法与ISP参数的调整。例如:

多帧RAW -> 对齐融合 -> ISP -> sRGB -> tone map。

整个HDR+算法更多的是一个框架,各个部分可以灵活调整。

07

HDR+: 曝光控制

曝光控制是很重要的一个部分,其影响后续的对齐及tone mapping。HDR+的曝光控制的 主要思想 为:

主要思想

▪  使用相同的曝光参数

目的:为了让对齐更加鲁邦。对齐采用模板匹配的方法,不同的曝光参数会导致不同帧的亮度不同,不便于进行匹配。

▪  曝光时间尽量低;

目的:

1. 避免过曝,过曝的部分是无法拉出细节的。而欠曝的部分如果RAW的质量够好是可以还原细节;

2. 可以在相同时间得到更多帧,帧间位移小使得配准更容易。

▪ 一直取帧。

08

HDR+:帧对齐

对齐部分将图像分成重叠的块,基于块与块之间通过模板匹配在局部搜索进行对齐。

大体流程

▪ 选reference帧:前3帧中计算绿通道的梯度,选梯度最锐的作为ref帧。所有其他帧的块都与ref帧的块进行对齐。

▪ 计算灰度,平均RGGB为一个像素;也降低了后续配准的计算量,图像大小变为四分之一。

▪ 建高斯金字塔;从顶层开始 (分辨率最小的层) ,每一块在一定区域内基于L2误差寻找在其他帧中最相似的块,得到块的偏移量offset。

▪ 向下一层上采样offset,继续找最相似的块。最底层用L1作为相似距离。

其中块匹配的 公式 为:

 

09

HDR+:去噪

假如块与块之前配准是完全准确的,那么将N个配准的块直接求平均即可去噪 (因为假设噪声是zero-mean的)

然而配准算法 不可能绝对准确 。例如场景有快速移动的物体,直接平均会产生鬼影。所以去噪算法需要对配准错误的地方要有一定 鲁棒性 ,不能强依赖于对齐的准确度。

为此, 极限情况为 :如果完全对齐,则直接平均。如果完全对不齐,直接使用ref的图像,介于去噪与完全不去噪之间,为了保证清晰度以及降低鬼影牺牲了去噪能力。

接下来 考虑误差来源 ,对于已经对齐的块,其误差来源于噪声,而噪声属于高频段,是希望去掉的部分。对于配准有误的块,其误差主要来源于没对齐的部分,即边缘,仍然来源于高频 (边缘误差>噪声误差) ,需要压制。

如果配准差得特别多,低频也会贡献误差。因此去噪的融合在频域上融合,频域上融合会影响整个频段,但不会影响空间域的某个区域 (例如不会出现一块亮一块暗、一块有噪一块没噪的情况) 。融合公式为:

 

此外还需要将融合后的多个块 (因为有overlap) 融合成整张图,这部分也有个加权的计算,每个像素的目标值为overlap的块在其位置的加权和。

去噪结果

▪ b图 是直接空间域取均值,没有对齐,融合结果会比较模糊。

▪ c图 是加了对齐,可以看到对于静态场景对齐比较好的情况 (中间排) 效果挺好,但对于下排有运动的物体就会有虚影。

▪ d图 是频域加权可以解决运动物体有虚影的问题。

图6  

10

去噪部分DL方法

可以使用DL方法训练去噪模型,输入RAW,输出去噪后的RAW。数据够的话可以尝试单图直接去噪,可以得到不错的结果, 也可以直接在sRGB上去做。

DL方法主要难点

▪ groundtruth的获取,采用人工加噪的方式训练很难泛化到真实的噪声上,实际应用场景上效果一般不理想。但是DL的数据只用于线下训练,可以尝试比较复杂的方法获取groundtruth数据。

论文 [3] 采用一套复杂的pipeline获取groundtruth。

▪ 另一个泛化问题就是可能不同的手机都要针对性采数据,应对不同的手机,会比较费时费力。

图7  

还有一些比较邪门的方法类似这个Noise2Noise [4] ,可以更高效地利用数据。还有就是以上DL方法一般针对静物,对于动弹的物体,例如人,采数据会比较有难度……

 

 

图8  

11

HDR+: 多曝光融合(tone mapping)

多曝光融合是一类HDR算法 ,将不同曝光产生的不同动态范围的图像融合成一张HDR图像。 如下图例:

a中 最左边是短曝光图像,用来捕获高光区域的细节。中间是正常曝光。右边是长曝光,用来捕获暗区域的细节;

下排三张 黑白图 :是每张图对应的权重图像,一般是通过一些亮度相关的系数进行计算的;将三张图进行融合得到HDR图像b,高光部分不过曝,暗处能看清楚。

图9  

图10

融合时直接使用上面的权重图进行加权会导致边缘有artifact,效果有涂抹感,一般采用下图的拉普拉斯金字塔融合。将融合图像与权重图像进行 拉普拉斯金字塔分解 ,再从顶层逐级融合,得到最终的融合图像。

图11

上面是 多曝光融合算法 ,需要多张曝光图像。然而前面多帧融合后只有一张图像,因为图像本身是HDR的 (高bit数) ,这里采用的方式是由这一张HDR图像模拟多曝光的效果,产生多张曝光图像,再进行多曝光融合。 所以 本质上是一个local tone mapping

12

Tone Mapping的DL方法

Tone mapping的DL方法可以采用谷歌的HDRNet [5] ,此算法优化得好是可以在手机上跑实时的, 模型结构 为:

 

上面分支 是走DL网络的,输入图像resize到固定大小 (256x256) ,所以计算量也是固定的。 网络模型前面是一些卷积层 (stride=2降采样) ,中间分成全局部分 (降成fc) 跟局部部分 (固定输出大小conv) ,再结合起来输出bilateral grid (16x16xd,d=8)

下面分支 是一个类似bilateral guided upsampling的过程。前面的pixel-wise network是非线性的单通道颜色变换 (参数需训练) 并融合成一个灰度图像guidance map,再结合上面分支得到的bilateral grid,引导上采样得到一组与原图一样大的颜色变换参数sliced coefficients,每个像素都有一组颜色变换参数 (3x(3x4) color transform矩阵) ,作用到原图上得到输出图

训练仍然需要groundtruth,论文中用到的数据集MIT FiveK [6] 是由相机的RAW图,找专业学生调整后作为groundtruth的。如果需要自定义效果仍然需要自己采集数据并进行定制化调整训练。

参考文献:

[1] Burst photography for high dynamic range and low-light imaging >

[2]  Learning Single Camera Depth Estimation using Dual-Pixels

[3] A High-Quality Denoising Dataset for Smartphone Cameras

[4] Noise2Noise: Learning Image Restoration without Clean Data

[5]Deep Bilateral Learning for Real-Time Image Enhancement

[6] Learning Photographic Global Tonal Adjustment with a Database of Input / Output Image Pairs

投稿 | 内容标签团队

编辑 | sea

排版 | sea

往期推荐

在看点一下 大家都知道

相关文章