发布人:Google Research 的研究员 Mauricio Delbracio、和软件工程师 Sungjoon Choi
移动设备上
https://arxiv.org/abs/2102.09000
如果详细地了解传感器、光学硬件和软件模块,那么在相机管道内尽可能减少噪点和模糊的影响就容易得多。然而,如果是任意一个相机(可能未知)产生的图像,由于无法深入了解相机内部参数,改善噪点和清晰度就更加具挑战性。在大多数情况下,这两个问题在本质上具有相关性:降噪倾向于消除精细的结构和多余的细节,而降低模糊则是为了改善结构和细化细节。这种相关性会增加移动设备上开发高计算效率图像增强技术的难度。
拉推式去噪
https://ieeexplore.ieee.org/document/7532702
Polyblur
https://arxiv.org/abs/2012.09322
图像的噪点可以有多严重?
为了估计基于亮度的噪点水平,我们在整个图像上取样一些小的图块,在大致去除图像中的任何底层结构后,测量每个图块内的噪点水平。此过程需要在多个尺寸重复进行,使其能够平稳地应对由压缩、图像大小调整或其他非线性相机处理操作产生的可能伪影。
左边的两张图像展现出输入图像(中图)中存在的与信号相关的噪点。噪点在图片底部的更深色部分为突出,与底层结构无关,而是与光线水平有关。对这样的图像片段进行采样和处理,以产生空间变化的噪点图(右图),其中红色表示存在更多的噪点
利用拉推式方法有
选择性地减少噪点
我们利用整个图像图块之间的自相似性来进行高保真去噪。这种所谓“非局部”去噪 (Non-local means) 的一般原理是通过对具有类似局部结构的像素进行平均化来去噪。然而,这些方法通常会产生很高的计算成本,因为它需要对具有类似局部结构的像素进行强行搜索,因此,将这种方式运用在设备上并不实际。在我们的“拉推式”方法[1]中,由于有效的跨空间尺度信息传播,算法的复杂性与过滤器足迹的大小不相关。
拉推法的第一步是构建一个图像金字塔(即多尺度表示),其中每个连续的层级均由一个“拉动”过滤器(类似于下采样 (Image scaling))递归产生。此过滤器采用对每个像素进行加权的方案,根据其图块的相似性和预测噪点, 有选择地将现有的噪点像素结合在一起,从而减少每个“较粗糙”级别的连续噪点。较粗糙级别(即分辨率较低)的像素仅从分辨率较高、“较精细”的级别中拉动并聚合兼容的像素。除此之外,每个较粗糙级别的合并像素还包括一个可预估的可靠性措施,该措施通过生成像素的相似性权重计算得出。因此,合并像素可针对图像及其局部统计数据,提供简单的每像素、每级别特征。通过有效地在每个层级(即每个空间尺度)传播这一信息,我们能够以多尺度的方式追踪越来越大区域的邻域统计模型。
在拉动阶段评估到最粗糙级别后,“推动”阶段会从最粗糙的级别开始融合结果,迭代生成更精细的级别。在给定的尺度下,“推动”阶段按照与“拉动”阶段类似的过程生成“经过滤”的像素,但顺序是从粗糙级别到精细级别。每个级别的像素都与较粗糙级别的像素融合在一起,方法是使用各自的可靠性权重,对同级别的像素和较粗糙级别、经过过滤的像素进行加权平均。因为其中只包括平均可靠信息,所以这能让我们减少像素噪点,同时保留局部结构。这种选择性过滤和可靠性(即信息)的多尺度传播是推拉法与现有框架的区别所在。
这一系列图像展现出如何通过拉推过程进行过滤。较粗糙级别的像素只拉动和聚合来自较精细级别的兼容像素,与传统的多尺度方法不同,不使用固定(非数据依赖)内核。请注意,噪点在整个阶段中如何减少
拉推法的计算成本很低,因为在一个非常大的邻域上,选择性地过滤相似像素的算法,其复杂程度与图像像素的数量呈线性关系。在实践中,这种降噪方法的效果可与具有更大内核足迹的传统非局部方法相媲美,但其计算成本只是后者的一小部分。
使用拉推去噪法增强的图像
图像的模糊程度
可以达到多高?
我们可以将清晰度差的图像视作比较原始的潜影,由模糊内核对其进行操作。因此,如果能够识别出模糊内核,就可以通过它来减少影响。这被称为“去模糊”,即去除或减少由特定图像上的特定内核引起的,不希望出现的模糊效果。相反,“锐化”是指应用锐化过滤器,不参考任何特定的图像或模糊内核,从头开始构建。一般来说,典型的锐化过滤器也是局部运算,无需考虑图像其他部分的任何信息,而去模糊算法则是从整个图像中估计模糊程度。如果将任意锐化应用于已经很清晰的图像时,可能会导致更差的图像质量。与之不同的是,用从图像本身准确估计的模糊内核,对清晰的图像进行去模糊化几乎不会产生什么影响。
我们特别针对相对轻微的模糊,因为这种情况在技术上具有更高的可行性,更高的计算效率,并能产生一致的结果。我们将模糊内核建模为各向异性(椭圆)高斯内核,由控制模糊强度、方向和长宽比的三个参数指定。
高斯模糊模型和示例模糊内核。右图中的每一行代表 σ0、 ρ 与 θ 的可能组合。我们展示出三个不同的 σ0 值,每个值都有三个不同的 ρ 值
在计算并消除模糊的同时不给用户带来明显的延迟,需要一种比现有方法更有效的算法,而这些算法通常不能在移动设备上执行。我们可以参考一个有趣的经验观察结果:在一个清晰图像中的任何一点,所有方向的图像梯度的最大值都遵循一个特定的分布。高效的做法是找到最大梯度值,并且可以产生对给定方向上模糊强度的可靠估计。有了这些信息,我们就可以直接恢复模糊的特征参数。
Polyblur:用重新模糊
的方式去除模糊
为了在估计模糊的情况下恢复清晰图像,我们在理论上需要解决一个数值不稳定的反转问题(即去模糊)。随着模糊强度的增加,反转问题的不稳定性呈指数级增长。因此,我们的目标是轻度模糊去除。也就是说,我们 假设 现有图像没有模糊到无法实际修复的程度。这让我们能够采用一种更为实际的方式——通过仔细结合算子的不同再应用,从而近似计算其反转值。
如这些例子所示,可以通过结合估计模糊的多次应用来有效去除轻微的模糊
这意味着,我们用来对图像进行去模糊的手段可以是通过估计模糊内核进行多次重新模糊,这相当反常。模糊的每次应用(估计)都对应一个一阶多项式,而重复应用(添加或减去)则对应多项式中的高阶项。这种方法(我们称之为 Polyblur)的一个关键点在于速度非常快,因为它只需要对模糊本身进行几次应用。因此,该方法能够在常见的移动设备上以零点几秒的时间对百万像素图像进行运算。多项式的阶数及其系数的设置是为了反转模糊,而且不提高噪声或出现伪影。
Polyblur
https://arxiv.org/abs/2012.09322
通过对估计模糊 (Polyblur) 的多次重新应用进行加减,生成去模糊的图像
与 Google 相册的集成
Polyblur
https://arxiv.org/abs/2012.09322
拉推式去噪
https://ieeexplore.ieee.org/document/7532702
相册
https://photos.app.goo.gl/eV2HhMAXNGpS62ZYA
致谢
[1] 最初的拉推算法作为一种高效的散点数据插值类型方法开发而出,用于估计和填补图像中的缺失像素(其中只指定像素的子集)。我们在本文中进一步扩展其方法,并提出一种有效去噪图像的依赖数据的多尺度算法。
推荐阅读
Pixel 手机上基于多曝光序列的 HDR 拍摄功能
最新进展:将包容性人物注释纳入 Open Image Extended 数据集
将对比学习扩展到监督式场景
不要忘记“一键三连”哦~
分享