Google 相册中新降噪和锐化算法让您的照片更清晰

发布人:Google Research 的研究员 Mauricio Delbracio、和软件工程师 Sungjoon Choi

成像技术虽然近期尤其在 移动设备 上取得飞跃式进步,但在改善照片视觉质量方面,图像噪点和清晰度仍然是最重要的两个途径。在光线条件欠佳的情况下拍照,这些两方面的问题尤其突出。相机可能会通过提高感光度 (ISO) 或减慢快门速度进行补偿,从而加剧噪点的存在,有时还会降低图像的清晰度。噪点可能与光的粒子性质有关(散粒噪点 (Shot noise)),也有可能由电子元件在读出过程中产生(读出噪点 (Read noise))。然后通过相机图像处理器 (Image processor,ISP) 对捕获的噪点信号进行处理,随后可能在图像编辑过程中进一步增强、放大或扭曲。多种现象都有可能造成图像模糊,包括拍摄过程中不经意的相机抖动、相机对焦不正确(自动或非自动),或由于有限的镜头光圈 (Airy disk)、传感器分辨率或相机的图像处理。

如果详细地了解传感器、光学硬件和软件模块,那么在相机管道内尽可能减少噪点和模糊的影响就容易得多。然而,如果是任意一个相机(可能未知)产生的图像,由于无法深入了解相机内部参数,改善噪点和清晰度就更加具挑战性。在大多数情况下,这两个问题在本质上具有相关性:降噪倾向于消除精细的结构和多余的细节,而降低模糊则是为了改善结构和细化细节。这种相关性会增加移动设备上开发高计算效率图像增强技术的难度。

今天,我们推出一种新的无关相机估测以及消除噪点和模糊的方式,帮助改善大多数图像的质量。我们开发出一种 拉推式去噪 算法,该算法需与一种被称为 Polyblur 的去模糊方法搭配使用。这两个组件都是为了最大限度地提高计算效率,这样用户就可以在移动设备上用几毫秒的时间成功提高数百万像素图像的质量。这些降噪和降模糊的策略是近期 Google 相册编辑器更新的关键组成部分,其中包括“去噪”和“锐化”工具,让用户能够增强条件不理想的情况下拍摄的图像,或增强可能含有更多噪点传感器、或光学器械模糊的老旧设备所拍摄的图像。

Google 相册编辑器目前提供的“去噪”和“锐化”工具的演示

图像的噪点可以有多严重?

为了准确处理摄影图像并成功减少噪点和模糊的非必要影响,首先确定图像中发现的噪点和模糊的类型及水平,这一点至关重要。因此,无关相机的降噪方式,也不管形成噪声的设备是什么,首先要做的是制定一个衡量任何给定图像的像素级噪点强度的方法,同时将噪点水平建模成为基础像素亮度的函数。也就是说,对于每个可能的亮度水平,该模型是以一种与噪点实际来源或处理流水线无关的方式来估计相应的噪点水平。

为了估计基于亮度的噪点水平,我们在整个图像上取样一些小的图块,在大致去除图像中的任何底层结构后,测量每个图块内的噪点水平。此过程需要在多个尺寸重复进行,使其能够平稳地应对由压缩、图像大小调整或其他非线性相机处理操作产生的可能伪影。

左边的两张图像展现出输入图像(中图)中存在的与信号相关的噪点。噪点在图片底部的更深色部分为突出,与底层结构无关,而是与光线水平有关。对这样的图像片段进行采样和处理,以产生空间变化的噪点图(右图),其中红色表示存在更多的噪点

利用拉推式方法有选择性 地减少噪点

我们利用整个图像图块之间的自相似性来进行高保真去噪。这种所谓“非局部”去噪 (Non-local means) 的一般原理是通过对具有类似局部结构的像素进行平均化来去噪。然而,这些方法通常会产生很高的计算成本,因为它需要对具有类似局部结构的像素进行强行搜索,因此,将这种方式运用在设备上并不实际。在我们的“拉推式”方法[1]中,由于有效的跨空间尺度信息传播,算法的复杂性与过滤器足迹的大小不相关。

拉推法的第一步是构建一个图像金字塔(即多尺度表示),其中每个连续的层级均由一个“拉动”过滤器(类似于下采样 (Image scaling))递归产生。此过滤器采用对每个像素进行加权的方案,根据其图块的相似性和预测噪点, 有选择地将现有的噪点像素结合在一起,从而减少每个“较粗糙”级别的连续噪点。较粗糙级别(即分辨率较低)的像素仅从分辨率较高、“较精细”的级别中拉动并聚合兼容的像素。除此之外,每个较粗糙级别的合并像素还包括一个可预估的可靠性措施,该措施通过生成像素的相似性权重计算得出。因此,合并像素可针对图像及其局部统计数据,提供简单的每像素、每级别特征。通过有效地在每个层级(即每个空间尺度)传播这一信息,我们能够以多尺度的方式追踪越来越大区域的邻域统计模型。

在拉动阶段评估到最粗糙级别后,“推动”阶段会从最粗糙的级别开始融合结果,迭代生成更精细的级别。在给定的尺度下,“推动”阶段按照与“拉动”阶段类似的过程生成“经过滤”的像素,但顺序是从粗糙级别到精细级别。每个级别的像素都与较粗糙级别的像素融合在一起,方法是使用各自的可靠性权重,对同级别的像素和较粗糙级别、经过过滤的像素进行加权平均。因为其中只包括平均可靠信息,所以这能让我们减少像素噪点,同时保留局部结构。这种选择性过滤和可靠性(即信息)的多尺度传播是推拉法与现有框架的区别所在。

这一系列图像展现出如何通过拉推过程进行过滤。较粗糙级别的像素只拉动和聚合来自较精细级别的兼容像素,与传统的多尺度方法不同,不使用固定(非数据依赖)内核。请注意,噪点在整个阶段中如何减少

拉推法的计算成本很低,因为在一个非常大的邻域上,选择性地过滤相似像素的算法,其复杂程度与图像像素的数量呈线性关系。在实践中,这种降噪方法的效果可与具有更大内核足迹的传统非局部方法相媲美,但其计算成本只是后者的一小部分。

使用拉推去噪法增强的图像

图像的模糊程度可以达到多高?

我们可以将清晰度差的图像视作比较原始的潜影,由模糊内核对其进行操作。因此,如果能够识别出模糊内核,就可以通过它来减少影响。这被称为“去模糊”,即去除或减少由特定图像上的特定内核引起的,不希望出现的模糊效果。相反,“锐化”是指应用锐化过滤器,不参考任何特定的图像或模糊内核,从头开始构建。一般来说,典型的锐化过滤器也是局部运算,无需考虑图像其他部分的任何信息,而去模糊算法则是从整个图像中估计模糊程度。如果将任意锐化应用于已经很清晰的图像时,可能会导致更差的图像质量。与之不同的是,用从图像本身准确估计的模糊内核,对清晰的图像进行去模糊化几乎不会产生什么影响。

我们特别针对相对轻微的模糊,因为这种情况在技术上具有更高的可行性,更高的计算效率,并能产生一致的结果。我们将模糊内核建模为各向异性(椭圆)高斯内核,由控制模糊强度、方向和长宽比的三个参数指定。

高斯模糊模型和示例模糊内核。右图中的每一行代表 σ0、 ρ 与 θ 的可能组合。我们展示出三个不同的 σ0 值,每个值都有三个不同的 ρ 值

在计算并消除模糊的同时不给用户带来明显的延迟,需要一种比现有方法更有效的算法,而这些算法通常不能在移动设备上执行。我们可以参考一个有趣的经验观察结果:在一个清晰图像中的任何一点,所有方向的图像梯度的最大值都遵循一个特定的分布。高效的做法是找到最大梯度值,并且可以产生对给定方向上模糊强度的可靠估计。有了这些信息,我们就可以直接恢复模糊的特征参数。

Polyblur:用重新模糊的方式去除模糊

为了在估计模糊的情况下恢复清晰图像,我们在理论上需要解决一个数值不稳定的反转问题(即去模糊)。随着模糊强度的增加,反转问题的不稳定性呈指数级增长。因此,我们的目标是轻度模糊去除。也就是说,我们 假设 现有图像没有模糊到无法实际修复的程度。这让我们能够采用一种更为实际的方式——通过仔细结合算子的不同再应用,从而近似计算其反转值。

如这些例子所示,可以通过结合估计模糊的多次应用来有效去除轻微的模糊

这意味着,我们用来对图像进行去模糊的手段可以是通过估计模糊内核进行多次重新模糊,这相当反常。模糊的每次应用(估计)都对应一个一阶多项式,而重复应用(添加或减去)则对应多项式中的高阶项。这种方法(我们称之为 Polyblur)的一个关键点在于速度非常快,因为它只需要对模糊本身进行几次应用。因此,该方法能够在常见的移动设备上以零点几秒的时间对百万像素图像进行运算。多项式的阶数及其系数的设置是为了反转模糊,而且不提高噪声或出现伪影。

通过对估计模糊 (Polyblur) 的多次重新应用进行加减,生成去模糊的图像

与 Google 相册的集成

本文所述的创新现已被集成到 Google 相册图像编辑器中,可供用户使用,其形式是两个新调整的滑块,称为“降噪”和“锐化”。这些功能让用户能够改善任何设备捕获的日常图像的质量。这些功能往往相辅相成,既可以通过降噪来减少不希望出现的噪点,也可以通过锐化让图像主体更加清晰。尝试在您的图像中将这对工具结合起来使用,可以获得最佳效果。若要了解更多关于本文所述成果的详细信息,请查看我们关于 Polyblur拉推式去噪 的论文。若要仔细查看我们的降噪和锐化效果的一些示例,请看本 相册 中的图像。

致谢

作者诚挚地感谢 Ignacio Garcia-Dorado、Ryan Campbell、Damien Kelly、Peyman Milanfar,以及 John Isidoro 做出的贡献。我们还要感谢来自 Navin Sarma、Zachary Senzer、Brandon Ruffin 和 Michael Milne 的支持和反馈。

[1] 最初的拉推算法作为一种高效的散点数据插值类型方法开发而出,用于估计和填补图像中的缺失像素(其中只指定像素的子集)。我们在本文中进一步扩展其方法,并提出一种有效去噪图像的依赖数据的多尺度算法。

原文:Take All Your Pictures to the Cleaners, with Google Photos Noise and Blur Reduction
中文:TensorFlow 公众号