尽管近年来成像技术(尤其是在移动设备上)取得了长足的进步,但图像噪点和清晰度有限仍然是改善照片视觉质量的两个最重要因素。在光线不足的条件下拍照时,这两个因素尤其重要,相机可能会通过提高ISO或降低快门速度来进行补偿,从而加剧噪点的存在,有时还会增加图像模糊。噪声可能与光的粒子性质有关(散粒噪声),也可能是由读出过程中的电子元件引入的(读出噪声)。捕获的噪声信号随后由相机图像处理器(ISP) 处理,之后可能通过照片编辑过程进一步增强、放大或扭曲。图像模糊可能由多种现象引起,包括拍摄过程中无意的相机抖动、相机对焦设置不正确(无论是否自动),或者由于有限的镜头光圈、传感器分辨率或相机的图像处理。
在相机流水线中,最小化噪声和模糊的影响要容易得多,因为传感器、光学硬件和软件模块的细节都是可以理解的。然而,当呈现由任意(可能是未知的)相机拍摄的图像时,由于缺乏详细的知识和对相机内部参数的访问,改善噪声和清晰度变得更加困难。在大多数情况下,这两个问题本质上是相关的:降噪倾向于消除精细结构和不需要的细节,而模糊减少则试图增强结构和精细细节。这种相互联系增加了开发在移动设备上运行计算效率高的图像增强技术的难度。
今天,我们提出了一种与相机无关的估计和消除噪点和模糊 的新方法,这种方法可以提高大多数图像的质量。我们开发了一种推拉式去噪算法,并与一种名为polyblur 的去模糊方法配对。这两个组件都是为了最大限度地提高计算效率而设计的,因此用户可以在移动设备上以毫秒为单位成功增强数百万像素图像的质量。这些降噪和模糊减少策略是最近Google Photos 编辑器更新的关键组件,其中包括“去噪”和“锐化”工具,使用户能够增强在非理想条件下或使用可能具有更多噪声传感器或不太锐利光学元件的旧设备拍摄的图像。
Google Photos 编辑器中现已提供的“去噪”和“锐化”工具的演示。
图像噪声有多大?
为了准确处理摄影图像并成功减少噪点和模糊的不良影响,首先必须确定图像中噪点和模糊的类型和级别。因此,与相机无关的降噪方法首先要制定一种方法来衡量任何给定图像的像素级噪声强度,而不管创建该图像的设备是什么。噪声级别建模为基础像素亮度的函数。也就是说,对于每个可能的亮度级别,该模型以与噪声的实际来源或处理管道无关的方式估计相应的噪声级别。
为了估算这种基于亮度的噪声水平,我们在图像中抽取了许多小块样本,并在粗略地去除图像中的任何底层结构后测量每个块内的噪声水平。这个过程在多个尺度上重复,使其能够抵御可能因压缩、图像调整大小或其他非线性相机处理操作而产生的伪影。
左侧的两个部分显示了输入图像中存在的与信号相关的噪声(中间)。噪声在底部较暗的裁剪图中更为突出,并且与底层结构无关,而是与光照水平有关。对这些图像片段进行采样和处理以生成空间变化的噪声图(右),其中红色表示存在更多噪声。
采用推拉法选择性降低噪声
我们利用整个图像中块的自相似性来实现高保真度的去噪。这种所谓的“非局部”去噪背后的一般原理是,可以通过对具有相似局部结构的像素进行平均来去噪噪声像素。然而,这些方法通常需要很高的计算成本,因为它们需要强力搜索具有相似局部结构的像素,因此不适合在设备上使用。在我们的“拉推”方法1中,由于跨空间尺度的有效信息传播,算法复杂性与滤波器占用空间的大小脱钩。
拉推法的第一步是构建图像金字塔(即多尺度表示),其中每个连续级别均由“拉”过滤器(类似于下采样)递归生成。此过滤器使用每像素加权方案,根据现有噪声像素的块相似性和估计噪声有选择地将它们组合在一起,从而降低每个连续的“较粗”级别的噪声。较粗级别(即分辨率较低)的像素仅从分辨率较高的“较细”级别拉取和聚合兼容像素。除此之外,较粗层中的每个合并像素还包括一个估计可靠性度量,该度量是根据用于生成它的相似性权重计算得出的。因此,合并像素提供了图像及其局部统计数据的简单的每像素、每级别表征。通过在每个级别(即每个空间尺度)中有效地传播这些信息,我们能够以多尺度方式跟踪越来越大区域的邻域统计模型。
在拉动阶段评估到最粗级别后,“推动”阶段将融合结果,从最粗级别开始,迭代生成更精细的级别。在给定的尺度下,推动阶段按照与拉动阶段类似的过程生成“过滤”像素,但从粗级别到更精细的级别。通过使用相应的可靠性权重对同一级别的像素以及更粗级别的过滤像素进行加权平均,将每个级别的像素与更粗级别的像素融合。这使我们能够在保留局部结构的同时降低像素噪声,因为只包含平均可靠信息。这种选择性过滤和可靠性(即信息)多尺度传播是推动-拉动与现有框架的不同之处。
这一系列图像展示了过滤如何通过“拉推”过程进行。粗略级别的像素仅从精细级别拉取和聚合兼容像素,这与使用固定(不依赖数据的)内核的传统多尺度方法相反。请注意噪声在整个阶段是如何降低的。
推拉法计算成本较低,因为在非常大的邻域内选择性过滤相似像素的算法的复杂度仅与图像像素的数量呈线性关系。实际上,这种去噪方法的质量与具有更大内核占用空间的传统非局部方法相当,但计算成本仅为后者的一小部分。
使用拉推去噪方法增强图像。
图像有多模糊?
清晰度较差的图像可以被认为是由模糊核操作的更原始的潜像。因此,如果可以识别模糊核,则可以使用它来减少影响。这称为“去模糊”,即去除或减少由特定核对特定图像引起的不良模糊效果。相比之下,“锐化”是指应用从头开始构建的锐化滤波器,而不参考任何特定图像或模糊核。典型的锐化滤波器通常也是局部操作,不考虑图像其他部分的任何其他信息,而去模糊算法则从整个图像估计模糊。与任意锐化不同,当应用于已经清晰的图像时,会导致图像质量变差,使用从图像本身准确估计的模糊核对清晰图像进行去模糊将几乎没有效果。
我们专门针对相对温和的模糊,因为这种情况在技术上更易于处理,计算效率更高,并且能产生一致的结果。我们将模糊核建模为各向异性(椭圆形)高斯核,由三个参数指定,控制模糊的强度、方向和长宽比。
高斯模糊模型和示例模糊核。右侧图表的每一行代表σ 0、ρ和θ的可能组合。我们展示了三个不同的σ 0值,每个值都有三个不同的ρ值。
计算和消除模糊而不给用户带来明显延迟需要一种比现有方法计算效率更高的算法,而现有方法通常无法在移动设备上执行。我们依靠一个有趣的经验观察:清晰图像中任何一点的所有方向上的图像梯度的最大值遵循特定的分布。找到最大梯度值是有效的,并且可以可靠地估计给定方向上的模糊强度。有了这些信息,我们就可以直接恢复表征模糊的参数。
Polyblur:通过重新模糊去除模糊
为了根据估计的模糊度恢复清晰的图像,我们(理论上)需要解决数值不稳定的逆问题(即去模糊)。随着模糊度的增加,逆问题会呈指数级增长,变得更加不稳定。因此,我们针对的是轻微模糊去除的情况。也就是说,我们假设手头的图像没有模糊到无法修复的程度。这使得一种更实用的方法成为可能——通过仔细组合运算符的不同重新应用,我们可以近似其逆。
如这些示例所示,通过组合估计模糊的多种应用,可以有效地消除轻微模糊。
这意味着,有点违反直觉,我们可以用估计的模糊核多次重新模糊图像,从而去除图像模糊。每次应用(估计的)模糊都对应一个一阶多项式,重复应用(加或减)对应多项式中的高阶项。这种方法(我们称之为polyblur)的一个关键方面是速度非常快,因为它只需要多次应用模糊本身。这使得它可以在典型的移动设备上在几分之一秒内对百万像素图像进行操作。多项式的度及其系数被设置为反转模糊,而不会增加噪声和其他不必要的伪影。
通过对估计的模糊(多模糊)进行多次添加和减去,可以生成去模糊图像。
与 Google Photos 集成
本文描述的创新已集成到 Google Photos 图片编辑器中,并通过两个新的调整滑块“降噪”和“锐化”提供给用户。这些功能可让用户从任何拍摄设备提高日常图像的质量。这些功能通常相辅相成,既可以通过降噪减少不必要的伪影,又可以通过锐化使图像主体更清晰。尝试在您的图像中同时使用这对工具以获得最佳效果。要了解有关此处描述的工作的详细信息,请查看我们关于多模糊和推拉降噪的论文。要近距离查看我们的降噪和锐化效果的一些示例,请查看此相册中的图像。
致谢
作者衷心感谢 Ignacio Garcia-Dorado、Ryan Campbell、Damien Kelly、Peyman Milanfar 和 John Isidoro 的贡献。我们还感谢 Navin Sarma、Zachary Senzer、Brandon Ruffin 和 Michael Milne 的支持和反馈。
评论