本内容主要介绍图像去模糊数据集 RSBlur,以及逼真模糊图像合成方法。
论文:Realistic Blur Synthesis for Learning Image Deblurring
代码(官方):https://github.com/rimchang/RSBlur
1.1 背景
运动模糊是由曝光过程中的相机抖动或物体运动引起的,尤其是在需要长曝光时间的弱光环境中。在过去的数十年,许多基于学习的去模糊方法被提出,并且去模糊性能得到显著提升。
训练基于学习的图像去模糊方法需要大量的模糊和清晰图像对。由于很难获得真实世界中的模糊和清晰图像对,因此提出了许多合成的数据集,这些模糊图像是通过融合高速相机捕获的清晰视频帧来生成的。但是,由于这些合成图像不足够逼真,从而导致使用它们训练的去模糊模型无法有效地处理真实的模糊图像。
为了克服这种限制,RealBlur 和 BSD 数据集陆续被提出。这些数据集由专门设计的双摄像头系统拍摄的真实模糊和清晰图像组成。然而,这种真实数据集的覆盖范围仍然有限。它们都是由单一相机进行拍摄的,从而导致它们提供的场景和相机设置的多样性非常有限。因此,在其中一个数据集上训练的图像去模糊模型在另一个数据集中表现出明显较低的性能。此外,因为收集此类数据集需要专门设计的相机和大量的时间,所以扩大真实数据集的覆盖范围并不容易。
为了解决前面提到的问题,首先,此论文作者提出了 RSBlur,这是一个新的数据集,包含真实模糊图像和相应的清晰图像序列。然后,作者利用这个数据集,详细分析了真实模糊图像和合成模糊图像生成过程之间的差异,从而揭示了模糊生成过程中不同因素的影响。最后,作者基于这些分析,还提出了一种新的模糊图像合成管道,以合成更逼真的模糊图像。作者通过实验证明了提出的合成管道可以生成更逼真的模糊图像,生成的模糊图像作为训练集可以提高在真实模糊图像上的去模糊性能。
此论文的贡献总结如下:
- 提出 RSBlur。第一个提供真实模糊图像和相应清晰图像序列的数据集,可以用来精确分析真实模糊和合成模糊之间的差异。
- 对真实模糊图像和合成模糊图像的生成过程之间的差异进行了全面分析。
- 提出了一种新的合成管道来合成逼真的模糊图像,用于学习图像去模糊。虽然为不同的相机收集大规模的真实数据集具有挑战性,但是作者提出的方法提供了一个方便的替代方案。
1.2 RSBlur Dataset
作者提出的 RSBlur 数据集提供了各种户外场景的真实模糊图像,每个图像都与 9 幅清晰的图像序列配对,能够分析真实模糊和合成模糊之间的差异。这个数据集包含 697 个场景的 13358 张真实模糊图像。作者在分析时,将数据集分为训练集、验证集和测试集,分别有 465 个场景的 8878 张、58 个场景的 1120 张和174 个场景的 3360 张模糊图像。
为了收集该数据集,作者建立了一个双摄像头系统(如图 1.1(a) 所示)。该系统由一个镜头、一个分束器和两个带成像传感器的相机模块组成,因此两个相机模块可以在共享一个镜头的情况下捕捉同一场景。两个相机模块的快门严格同步,以便两个相机模块能够同时捕捉图像(如图 1.1(b) 所示)。具体地,一个相机模块以长曝光时间拍摄模糊图像。在模糊图像的曝光时间内,另一个相机模块在短曝光时间内连续拍摄 9 张清晰的图像。当用于模糊图像的快门打开时,用于第一张清晰图像的快门打开;并且用于模糊图像的快门关闭时,用于最后一张清晰图像的快门关闭。第五张清晰图像的曝光时间与模糊图像的曝光时间的中心相匹配,使得第五张清晰图像可以用作模糊图像的真实清晰图像。
模糊的图像是用安装在相机模块前面的 5% 中性密度滤光片拍摄的,以确保长曝光时间。模糊图像和清晰图像的曝光时间分别为 0.1s 和 0.005s。拍摄图像时,作者手持整个系统进行拍摄,以便抖动可以产生模糊的图像。拍摄的图像在几何和光度上对齐,以消除相机模块之间的错位。作者以相机 RAW 格式捕获所有图像,然后使用简单图像信号处理(ISP)管道将其转换到非线性的 sRGB 空间,该管道由四个步骤组成:1)白平衡;2)去马赛克;3)颜色校正;4)转换到非线性 sRGB 空间,使用非线性 sRGB 空间的伽马校正作为相机响应函数(Camera Response Function,CRF)进行转换。
1.3 真实模糊和合成模糊
使用 RSBlur 数据集,作者分析了真实模糊和合成模糊生成过程之间的差异。具体来说,作者首先比较了真实模糊和合成模糊的总体生成过程,并发现了可以引入它们之间主要差异的因素。然后,作者逐一分析每个因素,并讨论如何通过构建新的模糊合成管道来解决它们。
在真实模糊的情况下,相机传感器在曝光时间内积累入射光以捕捉图像。在这个过程中,分别由于相机和物体的运动以及光子的波动,引入了模糊和光子散粒噪声。传感器的有限动态范围引入了饱和像素。捕获的光被转换为模拟电型号,然后转换为数字信号。在该转换期间,诸如暗电流噪声和量化噪声之类的附加噪声会被引入。然后由相机 ISP 对图像进行处理,相机 ISP 执行白平衡、去马赛克、颜色空间转换和其他非线性操作(比如扭曲模糊模式和噪声分布)。
在此过程中,图像在多个颜色空间进行转换。在相机 ISP 之前,图像位于相机 RAW 空间,其与设备相关的。然后将图像转换为线性 sRGB 空间,然后转换为非线性 sRGB 空间。
另一方面,广泛使用的数据集(例如 GoPro、DVD 和 REDS)的模糊图像生成过程是非常简单的。它们使用高速相机连续拍摄的非线性 sRGB 空间的清晰图像。可以选择对清晰图像进行插值,以提高帧速率。然后,它们被转换到线性 sRGB 空间,并一起进行平均以产生模糊图像。最后,模糊的图像被转换到非线性 sRGB 空间。对于线性 sRGB 空间到非线性 sRGB 空间之间的转换,GoPro 数据集使用 γ = 2.2 \gamma=2.2 γ=2.2 的伽马曲线,而 REDS 数据集使用从 GOPRO6 相机估计的 CRF。
在上述两个过程之间,导致合成模糊和真实模糊之间的区别的主要因素包括:1)合成模糊中的不连续模糊轨迹;2)饱和像素;3)噪声;4)相机 ISP。作者逐一分析了这些因素的影响。
- 不连续模糊轨迹。最受欢迎的数据集 GoPro,其模糊生成过程是以高帧率捕获清晰的视频帧,并对其进行平均以合成模糊。连续帧之间的时间间隔会导致不自然的不连续模糊(如图 1.2(b) 所示)。虽然 DVD 和 REDS 使用帧插值来填补这些间隔,但不连续模糊和帧插值对去模糊性能的影响尚未得到分析。
- 饱和像素。由于动态范围有限,从而真实世界的模糊图像可能具有饱和像素(如图 1.1© 所示);但是以前的合成数据没有饱和像素,因为它们只是对清晰图像进行平均。由于真实模糊图像中的饱和像素形成了与其它像素不同的模糊模式,因此必须反映它们才能获得高质量的去模糊结果。
- 噪声。在包括模糊图像在内的真实世界图像中,噪声是不可避免的,尤其是在夜间由低端相机拍摄的图像(如图 1.1(d) 所示)。即使对于高端传感器,由于光子的统计特性和电流读取过程,噪声无法避免。在去噪领域,已经证明逼真噪声模型对真实世界图像的高质量去噪是很重要的。另一方面,先前合成数据集的模糊生成过程忽略了噪声,并且尚未研究其对去模糊的影响。作者通过实验证明,即使对于 RealBlur 数据集(其主要由 ISO 最低的高端相机拍摄的图像组成)来说,准确的噪声建模也是至关重要的。
- 相机 ISP。ISP 执行各种操作,包括白平衡、颜色校正、去马赛克和使用 CRFs 的非线性映射,这些操作会影响噪声分布并引入失真。然而,以前的合成数据集忽略了它们。
1.4 逼真模糊图像合成
为了合成更逼真的模糊图像,同时解决前面讨论的因素,作者提出了一种新的模糊合成管道。图 1.3 显示了该模糊合成管道的概述。该管道采用高速摄像机拍摄的清晰视频帧,并生成合成模糊图像。该管道的输入和输出都在非线性 sRGB 空间中。下面详细讨论每一步的内容。
-
帧插值(Frame Interpolation)。为了解决模糊轨迹的不连续性,该管道采用了帧插值。作者使用 ABME 将 9 张清晰的图像增加到 65 张。在这一步中,作者在非线性 sRGB 空间中执行帧插值,使用现成的帧插值方法,而无需修改或微调。
-
sRGB2Lin & Averaging。为了使用插值帧合成模糊图像,作者将图像转换到线性 sRGB 空间,并对其进行平均,以精确模拟真实的模糊生成过程。虽然入射光的实际累积发生在相机 RAW 空间中,但是在相机 RAW 空间和在线性 sRGB 空间中的平均是等价的,因为这两个空间可以使用线性变换进行转换。图 1.4(a) 显示了对插值帧进行平均的样例。
-
饱和像素合成。在这一步,作者提出一种简单方法,用来合成饱和像素。对于一张给定的上一步的合成模糊图像 B s y n B_{syn} Bsyn,首先计算 B s y n B_{syn} Bsyn 的第 i 张清晰图像 S i S_i Si 的饱和像素掩码 M i M_i Mi:
M i ( x , y , c ) = { 1 , if S i ( x , y , c ) = 1 0 , otherwise (1.1) M_i(x,y,c) = \left \{ \begin{array}{cc} \begin{aligned} &1,\quad \text{if} \; S_i(x,y,c)=1 \\ &0, \quad \text{otherwise} \end{aligned} \end{array} \right. \tag{1.1} Mi(x,y,c)={1,ifSi(x,y,c)=10,otherwise(1.1)
其中 ( x , y ) (x,y) (x,y) 是一个像素位置, c ∈ { R , G , B } c\in\{R,G,B\} c∈{R,G,B} 是一个通道索引。 S i S_i Si 有一个归一化的强度范围 [ 0 , 1 ] [0,1] [0,1]。然后,通过平均 M i M_i Mi 的方式获得 B s y n B_{syn} Bsyn 的潜在饱和像素掩码 M s a t M_{sat} Msat。图 1.4(b) 显示了 M s a t M_{sat} Msat 的一个样例。最后,使用 M s a t M_{sat} Msat 生成一张含有饱和像素的模糊图像 B s a t B_{sat} Bsat:
B s a t = clip ( B s y n + α M s a t ) (1.2) B_{sat} = \text{clip}(B_{syn} + \alpha M_{sat}) \tag{1.2} Bsat=clip(Bsyn+αMsat)(1.2)
其中 clip ( ⋅ ) \text{clip}(\cdot) clip(⋅) 是一个截断函数,其将输入值截断为 [ 0 , 1 ] [0,1] [0,1]; α \alpha α 是一个缩放因子,其通过从一个均匀分布 U ( 0.25 , 1.75 ) \mathcal{U}(0.25,1.75) U(0.25,1.75) 中随机采样获取。
为了便于分析,作者也使用 oracle 饱和像素生成模糊图像。oracle 图像 B o r a c l e B_{oracle} Boracle 被生成为:
B o r a c l e ( x , y , c ) = { B r e a l ( x , y , c ) , if M s a t ( x , y , c ) > 0 B s y n ( x , y , c ) , otherwise (1.3) B_{oracle}(x,y,c) = \left \{ \begin{array}{cc} \begin{aligned} &B_{real}(x,y,c),\quad \text{if} \; M_{sat}(x,y,c)>0 \\ &B_{syn}(x,y,c), \quad \text{otherwise} \end{aligned} \end{array} \right. \tag{1.3} Boracle(x,y,c)={Breal(x,y,c),ifMsat(x,y,c)>0Bsyn(x,y,c),otherwise(1.3)
其中 B r e a l B_{real} Breal 是真实的模糊图像。
作者提出的这个方法简单和有启发式的,由于清晰图像中的信息丢失,无法再现真实图像中的饱和像素。具体而言,当采用随机采样的均匀缩放因子 α \alpha α 时,为了精确重建饱和像素,需要知道基于像素的缩放因子,但这是无法估计的。图 1.4© 和 图 1.4(d) 显示了 B s a t B_{sat} Bsat 和 B o r a c l e B_{oracle} Boracle 的样例。尽管如此,作者通过实验证明这种方法仍然提高了真实模糊图像的去模糊性能。
-
转换到 RAW 空间。将上一步生成的线性 sRGB 空间中的模糊图像转换到相机 RAW 空间,以反映相机 ISP 引入的失真。在这一步中,作者以相反的顺序应用 ISP 的每个步骤(除了 CRF 操作)的反向操作。具体地,依次执行逆颜色校正变换、马赛克和逆白平衡。由于颜色校正和白平衡操作是可逆的线性操作,因此它们可以很容易地反转。
-
噪声合成。转换到相机 RAW 空间后,将添加噪声到图像中。作者将相机 RAW 空间中的噪声建模为高斯噪声和泊松噪声的混合:
B n o i s y = β 1 ( I + N s h o t ) + N r e a d (1.4) B_{noisy} = \beta_1(I + N_{shot}) + N_{read} \tag{1.4} Bnoisy=β1(I+Nshot)+Nread(1.4)
其中 B n o i s y B_{noisy} Bnoisy 是一张含有噪声的图像, I I I 是入射光子的数量。 β 1 \beta_1 β1 是由数字和模拟增益确定的整个系统增益。 N s h o t N_{shot} Nshot 和 N r e a d N_{read} Nread 分别是光子散粒噪声和读取噪声。作者将 ( 1 + N s h o t ) (1+N_{shot}) (1+Nshot) 建模为泊松分布,将 N r e a d N_{read} Nread 建模为标准差为 β 2 \beta_2 β2 的高斯分布。在数学上, ( 1 + N s h o t ) (1+N_{shot}) (1+Nshot) 和 N r e a d N_{read} Nread 被建模为:( 1 + N s h o t ) ∼ P ( B r a w β 1 ) β 1 (1.5) (1+N_{shot}) \thicksim \mathcal{P} (\frac{B_{raw}}{\beta_1}) \beta_1 \tag{1.5} (1+Nshot)∼P(β1Braw)β1(1.5)
N r e a d ∼ N ( 0 , β 2 ) (1.6) N_{read} \thicksim \mathcal{N}(0, \beta_2) \tag{1.6} Nread∼N(0,β2)(1.6)
其中 P \mathcal{P} P 和 N \mathcal{N} N 分别表示泊松分布和高斯分布。 B r a w B_{raw} Braw 是上一步中相机 RAW 空间中的模糊图像。
为了反映 RSBlur 数据集中模糊图像的噪声分布,作者估计了相机系统的参数 β 1 \beta_1 β1 和 β 2 \beta_2 β2,其中 β 1 \beta_1 β1 和 β 2 \beta_2 β2 分别使用平场图像和暗帧图像进行估计。 β 1 \beta_1 β1 和 β 2 \beta_2 β2 的估计值分别为 0.0001 和 0.0009。在合成模糊图像中,为了覆盖更宽范围的噪声,作者分别从 U ( 0.5 β 1 , 1.5 β 1 ) \mathcal{U} (0.5\beta_1, 1.5\beta_1) U(0.5β1,1.5β1) 和 U ( 0.5 β 2 , 1.5 β 2 ) \mathcal{U}(0.5\beta_2, 1.5\beta_2) U(0.5β2,1.5β2) 中采用随机参数值 β 1 ′ \beta_1^{'} β1′ 和 β 2 ′ \beta_2^{'} β2′。然后,使用等式(5) 和等式(6)在 β 1 ′ \beta_1^{'} β1′ 和 β 2 ′ \beta_2^{'} β2′ 的情况下,作者在相机 RAW 空间中生成一张有噪声的模糊图像。
为了进行分析,作者同时也考虑了高斯噪声。获得具有高斯噪声的噪声图像:
B n o i s y = B + N g a u s s (1.7) B_{noisy} = B + N_{gauss} \tag{1.7} Bnoisy=B+Ngauss(1.7)
其中 B B B 是一张输入模糊图像和 N g a u s s N_{gauss} Ngauss 是从 N ( 0 , σ ) \mathcal{N(0,\sigma)} N(0,σ) 采样的高斯噪声, σ \sigma σ 是标准差。由于作者在分析中包括高斯噪声来表示传统的噪声合成,因此跳过了与 ISP 相关的步骤(转换到 RAW 空间和应用相机 ISP),而是直接将噪声添加到非线性 sRGB 空间的模糊图像中,即对前面步骤中的 B s a t B_{sat} Bsat 应用伽马校正,并添加高斯噪声以产生最终结果。在实验中,作者从 U ( 0.5 σ ′ , 1.5 σ ′ ) \mathcal{U}(0.5\sigma^{'},1.5\sigma^{'}) U(0.5σ′,1.5σ′) 随机采样高斯噪声的标准偏差,其中 σ ′ = 0.0112 \sigma^{'} = 0.0112 σ′=0.0112 是使用彩色图表图像估计的。
-
应用相机 ISP。最后,在添加噪声后,作者将相机 ISP 应用于含有噪声的图像,以获得非线性 sRGB 空间中的模糊图像。ISP 包含白平衡、去马赛克、颜色校正和 CRF。图 1.4(e) 显示了泊松噪声和 ISP 失真的生成结果。
参考:
[1] Realistic Blur Synthesis for Learning Image Deblurring
[2] https://github.com/rimchang/RSBlur