2021 年 6 月 28 日,星期一

发布人:Google Research 研究科学家 Mauricio Delbracio 和软件工程师 Sungjoon Choi

尽管最近成像技术取得了飞跃,尤其是在移动设备上,但图像噪声和有限的清晰度仍然是提高照片视觉质量的两个最重要的杠杆。在光线不足的情况下拍摄照片时,这些尤其重要,在这种情况下,相机可能会通过提高ISO或降低快门速度来进行补偿,从而加剧噪点的存在,有时还会增加图像模糊。噪声可能与光的粒子性质有关(散粒噪声)或在读出过程中由电子元件引入(读取噪声)。捕获的噪声信号然后由相机图像处理器处理(ISP) 及更高版本可能会通过照片编辑过程进一步增强、放大或扭曲。图像模糊可能是由多种现象引起的,包括拍摄过程中无意的相机抖动、相机对焦设置不正确(自动或非自动),或者由于有限的镜头光圈、传感器分辨率或相机的图像处理。

在了解传感器、光学硬件和软件块的细节的相机管道中,将噪声和模糊的影响降至最低要容易得多。然而,当呈现由任意(可能未知)相机生成的图像时,由于缺乏详细知识和对相机内部参数的访问,改善噪声和锐度变得更具挑战性。在大多数情况下,这两个问题本质上是相关的:降噪倾向于消除精细结构和不需要的细节,而模糊降低旨在增强结构和精细细节。这种互连性增加了开发在移动设备上运行具有计算效率的图像增强技术的难度。

今天,我们提出了一种与相机无关的估计和消除噪声和模糊的新方法,可以提高大多数图像的质量。我们开发了一种拉推式降噪算法,该算法与称为polyblur的去模糊方法相结合。这两个组件都旨在最大限度地提高计算效率,因此用户可以在移动设备上以毫秒为单位成功提高数百万像素图像的质量。这些降噪和模糊减少策略是最近Google 照片编辑器更新的关键组成部分,其中包括“降噪”和“锐化””工具,使用户能够增强可能在不太理想的条件下捕获的图像,或者使用可能具有更多噪声传感器或不太清晰的光学器件的旧设备。

Google 照片编辑器中现在可用的“降噪”和“锐化”工具的演示。

图像有多嘈杂?
为了准确处理摄影图像并成功减少噪声和模糊的不良影响,首先表征图像中发现的噪声和模糊的类型和级别至关重要。因此,一种与相机无关的降噪方法首先要制定一种方法来衡量任何给定图像的像素级别的噪声强度,而不管创建它的设备如何。噪声水平被建模为底层像素亮度的函数。也就是说,对于每个可能的亮度级别,模型以与实际噪声源或处理流水线无关的方式估计相应的噪声级别。

为了估计这种基于亮度的噪声水平,我们在图像中采样了许多小块,并在粗略去除图像中的任何底层结构后测量每个块内的噪声水平。这个过程在多个尺度上重复,使其对压缩、图像大小调整或其他非线性相机处理操作可能产生的伪影具有鲁棒性。

左侧的两个部分说明了输入图像(中心)中存在的与信号相关的噪声。噪点在底部较暗的作物中更为突出,并且与底层结构无关,而是与光照水平相关。对此类图像片段进行采样和处理以生成空间变化的噪声图(右图),其中红色表示存在更多噪声。

使用拉-推方法有选择地降低噪声
我们利用图像上补丁的自相似性来高保真地去噪。这种所谓的“非局部”去噪背后的一般原理是,可以通过对具有相似局部结构的像素进行平均来对噪声像素进行去噪。然而,这些方法通常会产生高计算成本,因为它们需要对具有相似局部结构的像素进行强力搜索,这使得它们在设备上使用不切实际。在我们的“拉-推”方法1 中,由于跨空间尺度的有效信息传播,算法复杂性与过滤器足迹的大小分离。

pull-push 的第一步是构建一个图像金字塔(即多尺度表示),其中每个连续级别都由“拉”过滤器(类似于下采样)递归生成。此过滤器使用每像素加权方案来选择性地根据它们的补丁相似性和估计的噪声将现有的噪声像素组合在一起,从而减少每个连续的“粗糙”级别的噪声。较粗糙级别(即,具有较低分辨率)的像素仅从更高分辨率、“更精细”级别中提取和聚合兼容像素。除此之外,较粗层中的每个合并像素还包括从用于生成它的相似性权重计算的估计可靠性度量。因此,合并像素提供了简单的每像素、每级图像特征及其局部统计。通过在每个级别(即每个空间尺度)有效地传播此信息,我们能够以多尺度方式跟踪越来越大的区域的邻域统计模型。

在拉动阶段评估到最粗略的级别后,“推”阶段融合结果,从最粗略的级别开始并迭代生成更精细的级别。在给定的尺度下,推阶段按照类似于拉阶段的过程生成“过滤”像素,但从粗到细。通过使用相应的可靠性权重对相同级别的像素以及较粗级别的过滤像素进行加权平均,将每个级别的像素与较粗级别的像素融合。这使我们能够在保留局部结构的同时减少像素噪声,因为只包含平均可靠信息。这种选择性过滤和可靠性(即信息)多尺度传播使推拉与现有框架不同。

这一系列图像显示了过滤是如何通过拉-推过程进行的。与使用固定(非数据相关)内核的传统多尺度方法相反,较粗略级别的像素仅从更精细级别中提取和聚合兼容像素。注意整个阶段的噪音是如何降低的。

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

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

图像有多模糊?
清晰度较差的图像可以被认为是由模糊内核操作的更原始的潜在图像。因此,如果可以识别模糊内核,则可以使用它来减少效果。这被称为“去模糊”,即去除或减少由特定内核在特定图像上引起的不期望的模糊效果。相比之下,“锐化”是指应用锐化滤镜,从头开始构建,不参考任何特定图像或模糊内核。通常,典型的锐化滤波器也是局部操作,不考虑来自图像其他部分的任何其他信息,而去模糊算法估计来自整个图像的模糊。与任意锐化不同,后者在应用于已经锐利的图像时会导致图像质量变差,

我们专门针对相对轻微的模糊,因为这种情况在技术上更易于处理,计算效率更高,并产生一致的结果。我们将模糊内核建模为各向异性(椭圆)高斯内核,由控制模糊强度、方向和纵横比的三个参数指定。

高斯模糊模型和示例模糊内核。右侧图中的每一行表示σ 0ρθ 的可能组合。我们显示了三个不同的σ 0值,每个值具有三个不同的ρ值。

在没有明显延迟的情况下计算和消除用户模糊需要一种比现有方法计算效率更高的算法,现有方法通常无法在移动设备上执行。我们依赖于一个有趣的经验观察:清晰图像中任何点所有方向的图像梯度的最大值遵循特定的分布。找到最大梯度值是有效的,并且可以在给定方向上产生对模糊强度的可靠估计。有了这些信息,我们可以直接恢复表征模糊的参数。

Polyblur:通过重新模糊去除模糊
为了恢复给定模糊估计的清晰图像,我们(理论上)需要解决数值不稳定的逆问题(即去模糊)。随着模糊的强度,反演问题呈指数增长,变得更加不稳定。因此,我们针对轻度模糊去除的情况。也就是说,我们假设手头的图像没有模糊到无法修复的程度。这使得一种更实用的方法成为可能——通过仔细组合算子的不同重新应用,我们可以近似其逆。

如这些示例中所示,轻度模糊可以通过组合估计模糊的多个应用来有效去除。

这意味着,相当直觉相反,我们可以去模糊的图像重新模糊几次与估算的模糊内核。(估计)模糊的每次应用对应于一阶多项式,而重复应用(加法或减法)对应于多项式中的高阶项。这种方法的一个关键方面,我们称之为polyblur,是它非常快,因为它只需要模糊本身的一些应用程序。这允许它在典型的移动设备上在几分之一秒内对百万像素图像进行操作。多项式的次数及其系数被设置为在不增加噪声和其他不需要的伪影的情况下反转模糊。

去模糊图像是通过添加和减去估计模糊(polyblur)的多次重新应用生成的。

与 Google 相册集成
此处描述的创新已通过两个名为“降噪”和“锐化”的新调整滑块在 Google 相册图像编辑器中集成并提供给用户。这些功能允许用户通过任何捕获设备提高日常图像的质量。这些功能通常相互补充,既允许降噪以减少不需要的伪影,也允许锐化以提高图像主体的清晰度。尝试在图像中串联使用这对工具以获得最佳效果。要了解有关此处描述的工作的详细信息,请查看我们关于polyblurpull-push 降噪的论文。要近距离查看我们的去噪和锐化效果的一些示例,请查看此相册中的图像.

致谢
作者衷心感谢 Ignacio Garcia-Dorado、Ryan Campbell、Damien Kelly、Peyman Milanfar 和 John Isidoro 的贡献。我们也感谢 Navin Sarma、Zachary Senzer、Brandon Ruffin 和 Michael Milne 的支持和反馈。


1最初的推算法被开发为一种有效的分散数据插值方法,用于估计和填充图像中仅指定像素子集的缺失像素。在这里,我们扩展了它的方法并提出了一种数据相关的多尺度算法,用于有效地对图像进行去噪。 

说点什么
支持Markdown语法
在"使用谷歌照片降噪和模糊功能,将您所有的照片交给清洁工"已有2条评论
Loading...