How to Train Neural Networks for Flare Removal
Abstract
当相机对准强光源时,拍摄的照片可能会含有镜头眩光伪影.
1. Introduction
强光源场景中拍摄的照片往往会因相机内部的意外反射与散射现象而导致明显的镜头眩光现象出现。 这种现象主要表现为一种明显的视觉干扰物——镜面反光与散射引起的伪影效果较为显著。 这种视觉干扰可能会影响摄影者的专注力,并降低图像细节质量同时覆盖关键图像元素。 尽管在光学设计上投入了大量资源以尽量减少这一问题的影响但由于光线的反射特性即使是较小功率的小型光源也可能在普通消费级数码相机成像时带来显著的视觉干扰
镜面反射特性受镜头光学组件布局、光源安置位置以及制造缺陷等因素共同影响,并受到日常使用中积攒划痕及尘埃的影响。 镜面反射的根本原因种类繁多因而呈现出多样的特征表现形式。 如图1所示典型的镜面伪影现象主要包括光晕条纹亮边带饱和斑点透射色溢出雾感等现象的存在这些特征的存在使得去除镜面反射成为一个极具挑战性的技术难题。

在强光源拍摄的照片中常见镜面反光虚影现象。这些虚影呈现出多样的形态与色彩,在现有技术难以实现有效消除的状态下显得尤为复杂。
现有的大部分镜头去眩光技术 [1,3,24] 未充分考虑形成亮度斑块的物理机制。这些传统方法通常仅通过对比度阈值或模式匹配算法进行伪影检测与定位,在实际应用中这类技术往往只能处理特定类型亮度异常,在复杂的真实环境下效果往往欠佳
虽然深度神经网络频繁出现,基于学习的光斑去除仍然面临未被有效方案解决的问题。 为何这一挑战如此棘手?
主要困难在于获取高质量的数据集有限。为了提高训练效果,在收集图像时需区分是否存在镜头模糊的情况。从积极角度看这一过程较为枯燥;但从消极角度看这几乎是不可能实现的任务:相机和场景必须处于静止状态(因为大部分情况下镜头模糊与室外光线及太阳有关,这种需求极为苛刻)。同时还需要一种方法能够切换模拟出模糊效果而无需影响场景的整体光照条件。具体操作时,在同一位置使用三脚架拍摄不同角度的照片即可实现这一目标.具体操作时,在这张底片上摄影师会将遮挡物放置于光源与相机之间.然而这种方法存在明显的局限性:它过于繁琐且难以大规模实施.由于所需数据量巨大(通常需要数千至数百万个样本),这种方法难以满足现实中的需求.此外,这种方法仅在引起眩光的光源位于相机视野之外时才有效(例如图7中的真实场景)
为了解决这一难题,
我们采用基于物理原理的半合成数据方法。
主要发现指出,
镜头表面造成的光斑损坏,
其中一部分是因为光线发生散射或内部反射。
另一个主要问题是在减少眩光干扰的同时确保可见光源不受损坏。 即使基于半合成的数据集,在分离出仅由微扰引起的光斑区域方面仍存在巨大挑战。 由于难以分离出仅由微扰引起的光斑区域,在训练过程中若过于简单,则网络可能会试图去除这些因素而导致不符合实际效果的结果。 为此我们提出了一种专注于忽略来源区域误差影响的方法 并结合了一种用于保留关键细节信息的技术
为了验证我们的数据集与程序的有效性, 我们开发并训练了两个专为其他任务设计的不同卷积神经网络模型. 在这一过程中, 我们首先在预测无噪声图像以及残差(即推断出的噪声)的基础上最小化损失函数. 测试时, 网络仅依赖于标准相机拍摄的一张RGB图像, 并能有效消除多种场景中的各类眩光问题. 尽管这些模型是基于半合成数据集进行训练, 然而这两种模型都能很好地推广至真实世界中的图像数据. 据我们所知, 这是首个能在单一图像中实现镜头去噪效果的方法
我们的代码资源与数据集库可在 https://yi Chengwu.github.io/flare-removal/ 上开放获取。
2. Related work
现有耀斑消除解决方案主要包含三种类型:第一类是针对光学设计中存在耀斑问题进行优化;第二类是采用增强后的全软件方案来解决;第三类则是结合硬件与软件技术实现。
Hardware solutions
高端相机镜头通常采用精密光学设计与优质材料以减弱眩光效果。由于在复合透镜结构中增加多个玻璃元件能够显著提升图像质量这一做法也导致光线从其表面反射增强进而产生更多的反光可能性。一种常见技术是在镜头表面涂覆抗反射(AR)涂层利用相消干涉原理有效减少内部反射带来的干扰然而这种涂层仅能在特定波长与入射角度下达到最佳效果因而无法实现完美的无缺陷状态此外在所有光学表面上覆盖增透膜不仅成本高昂而且可能会干扰其他重要涂层的应用如防刮擦与防指纹处理
Computational methods
已经开发出多种后处理技术以有效去除图像中的斑点。反卷积运算在X射线成像[7,21]以及HDR摄影[19]中被用来抑制镜面反射。这些方法通常假设镜面反射的点扩散函数在空间中是恒定的;这通常是不成立的。其他解决方案[1,3,24]采用了两阶段的方法:通过分析镜头独特形状、位置或亮度(基于识别饱和区域)来检测镜面反射;然后通过修复技术恢复被镜面反射遮挡后的后续场景。这些方案仅适用于特定类型的镜面反射现象(如明亮斑块),且容易误将所有明亮区域归类为镜面反射。此外,在此方案中,默认每个像素会被分类为‘存在镜面反射’或‘不存在’;然而实际上大多数镜头的镜子效果更倾向于用底层场景上的半透明层来进行建模。
Hardware–software co-design
研究人员采用计算生成成像技术来消除星斑影响,在相机硬件系统与后处理算法协同优化设计下实现图像质量提升。 塔瓦拉等人[23] 和 Raskar 等人[18]则采用有选择地阻止引起星斑影响的光线的方法,并分别运用直接-间接分离法与基于光场的方法重建无星斑图像。 尽管方案优雅且有效, 但这些方法仍需依赖特殊的硬件设备支持, 因此在实际应用中实用性受到了限制.
Learning-based image decomposition
虽然目前并不存在基于学习的去耀斑技术[6-8], 但近年来许多研究者们已在多个相关领域应用了机器学习算法来处理类似问题。其中一些研究主要集中在反射去污[6-8], 雨水去除[9-10]以及降噪[11]等方面。这些方法通常都试图利用深度神经网络对图像进行分类处理(clean vs. degraded)。然而其有效性往往受限于领域内高质量训练数据集的获取(high-fidelity training datasets),这也是我们研究关注的重点。
3. Physics of lens flare
理想的相机在对焦设计时应确保来自点光源的所有光线经过折射并精确会聚到传感器上的单一像素位置。然而,在实际应用中,镜头并非完美成像器,在非理想条件下光线会发生散射和反射路径偏离预期轨迹(如图 2(a) 所示)。这种散射与反射过程仅占每条入射光线总量的一小部分比例(约5%-10%),因此尽管在理论上可能出现这些现象,在大多数实际拍摄场景中其影响微乎其微且不易察觉。但在高光环境下(如太阳附近),由于强光的强烈散射和反射特性,在照片中可能会出现其他像素位置上明显可见的伪影效果。这些伪影现象受到尘埃、污痕等表面污染物的几何分布特征以及多次反射积累的影响。从高层次分类来看,在照相领域内主要可分为两类:由散射引起的伪影和由反射引起的伪影。

相机的主要功能是将来自点光源的光线精确聚焦到传感器上的单一位置(以灰度光为主)。然而,在这种情况下可能会出现散射(即模糊光线),从而造成雾霾及明亮条纹向外辐射的现象。此外,在透镜元件的不同光学表面交界处可能发生内部反射(即橙色光),这会导致圆形或弧形亮斑出现,并且这种反光斑可能出现颜色变化的原因在于反光涂层只能阻止特定波长。
Scattering flare散射耀斑
虽然完美镜片应达到100%折射率的理想状态,但现实中镜片存在多种瑕疵,这些缺陷可能导致光线发生散射现象. 散射(或衍射)现象通常是由制造过程中的加工缺陷(如表面凹陷)以及日常磨损所引起. 实际应用中,除了主光路上的折射光线外,其余光线都会发生散射或衍射偏离预期路径. 尽管微小的灰尘颗粒能够带来彩虹般的视觉效果,但划痕却可能导致看起来像是从光源均匀放射出的条纹状光芒. 此外,散射现象还可能降低光源周边区域的空间对比度,从而使整体外观显得模糊不清
Reflective flare反射光斑
在实际的透镜系统中,每个空气-玻璃界面都会产生少量反射(通常约为 4%)。 经过偶数次反射后,光线可能会击中传感器的非预期位置,形成反射图案。 即使我们假设光恰好反射两次,对于包含 n 个光学元件的镜头模块(现代相机的 n ≈ 5),也有 2n 个光学表面,因此有 n(2n − 1) 个潜在的引起耀斑的组合。 在图像上,这些反射耀斑通常位于连接光源和主点的直线上。 它们对光源的入射角敏感,如图 4(b) 所示,但对绕光轴的旋转不敏感。 耀斑的形状取决于孔径的几何形状、大小和位置,这可能会多次部分阻挡反射,从而导致弧形伪影。 正如第 2 节中提到的。 2、增透膜可用于减少反射——通常将空气-玻璃界面处的反射减少到 1% 以下。 然而,这种涂层的有效性还取决于波长,因此镜头光晕可能会呈现出多种色调(通常是蓝色、紫色或粉色)。 需要注意的是,反射耀斑取决于镜头设计,因此具有相同设计的相机(例如所有 iPhone 12 主摄像头模块)在对同一场景成像时预计会产生类似的反射耀斑。
Challenges in flare removal
不同类型的耀斑通常难以直接区分开。 由于光源特性和镜头特性(包括设计与缺陷)的影响下所观察到的耀斑外观会发生显著变化。 因这些因素导致基于物理规律实现算法分析识别与去除各类耀斑变得不可行尤其是当同一图像包含多个伪影时更是难以实现。 因此我们建议采用一种基于数据的方法。
4. Physics-based data generation
在监督环境下所面临的许多常见视觉挑战中, 难以获取既包含有损星斑图像又不包含星斑的图像对的数据集. 因此, 在经过精心设计的实验过程中, 我们成功构建了一个基于真实物理模型的半合成管道.
光的叠加特性表明我们可以将耀斑建模为理想状态下图像表面叠加的小幅伪影——其影响可忽略不计。随后我们将阐述其生成机制及过程并利用这些模型构建有损与无损图像对比对。
4.1. Scattering flare
Formulation
在薄透镜近似条件下,光学成像系统可借助复值光瞳函数P(u,v)来表征其特性:一个二维空间域用于表示孔径平面中各点(u,v)处的透镜影响;同时该域还记录了入射光波长λ时的相位状态:

此处,A 代表孔径函数,即表征入射波振幅衰减这一光学特性. 在最简形式下,当相机具有有限尺寸 r 时,其孔径函数可表示为

图 1 中所示的 φλ 参数描述了相位移现象。该参数值取决于波长以及光源在三维空间中的位置坐标 (x, y, z)。若忽略孔径的位置参数 (u, v),则 φ 可以简化表示为

其中线性量φ_S的大小主要由入射角θ所决定;而其散焦量φ_DF则与光源所在深度z有关。当参数完整确定后,在方程中可求解出相应的光瞳函数P;该公式可借助快速傅里叶变换算法来计算点扩散函数PSF[8]:

按照定义来说的话,则是由该相机在坐标点(x,y,z)处对一个点光源拍摄所生成的图像。这正是我们所寻求的那种发光物质的图像。
Sampling PSFs
为了精确模拟镜头表面的尘埃与划痕,在数学模型1中使用的基础光圈函数A中引入了具有随机尺寸与透明度设置的点状与条带状干扰元素。通过我们的程序生成的合成孔径示例可见于图3(a),其中详细信息可在附录部分查阅。我们总共成功创建了125种不同的光圈配置方案。
针对位于坐标点(x, y, z)、仅发射单一波长λ的点光源的情况,在研究光场分布时可观察到其对应的相位变化特性。由此可知,在式4中代入参数A和φ_λ即可明确求得该光源的空间光分布函数PSF_λ。
为了实现整个可见光谱光源的模拟效果, 我们按照每5纳米的间距对从380纳米到740纳米范围内的所有波长λ进行PSFλ采样, 进而使每个PSF像素处都能获得一个包含73个元素的数据向量. 接着将完整的光谱型PSF与光谱响应函数SRF(一个维度为3×73的矩阵)进行相乘运算, 即可得到RGB传感器对PSF的测量结果;

式中(s, t)为图像坐标。这产生了一个耀斑图像的光源位于(x, y, z)。
我们通过随机采样孔径函数A、光源的3D位置(x, y, z)以及光谱响应函数SRF(详细信息见附录)来构建了该数据集。随后,在此基础上并结合光学畸变技术(如枪管和针垫),我们成功提升了PSFRGB图像的质量。其中一个示例展示在图3(b)中。在此过程中,我们总共生成了2000张这样的图片。
4.2. Reflective flare
反射耀斑组件难以通过渲染技术实现模拟[10,14] ,因为它们对精确的光学特性的要求通常是不可行的 。然而 ,与之具有相近内部光路结构的设计镜头类别的设备 ,其数据采集结果往往能够有效地进行跨实例应用
在高亮光源配合下配置的高分辨率显微镜系统中,在一个配备可调节旋转平台和焦距为13毫米(相当于35毫米)固定光圈智能手机摄像头的实验室环境中进行反射斑点成像实验(如图4(a)所示)。在此过程中采取了隔离环境光线的措施以确保图像质量。
通过编程控制旋转的方式使光源不仅跟踪视野范围还延伸至视野外侧以实现对角线方向上的持续追踪
4.3. Synthesizing flare-corrupted images

我们的方法分为三个关键步骤:1)我们通过随机生成无亮度干扰的自然图像和含亮 spot 的图像来构建训练数据集。2)利用卷积神经网络实现对无亮度场景的重建(其中可能去除光源位置信息是不可取的)。3)在预测完成后,在输出图像中重构并混合输入光源的位置信息。
在预色调映射的原始线性空间中进行操作,在其像素强度可加的前提下

无耀斑图像I0是从[27]中的24k Flickr图像中采样并经过随机翻转和亮度调整的增强处理。基于Flickr图像采用Γ编码方式存储的特点,我们通过逆Γ曲线进行近似线性化处理以改善其放射特性的线性度。其中Γ值从[1.8, 2.2]区间内均匀采样取用,并以此为基础解释Γ值确切值未知这一事实。
仅限于来源于捕获与模拟数据集中的F耀斑图像。
在第6.2节中会被说明的是这两项均为必要条件。
通过应用缩放、平移、旋转与剪切等随机仿射变换以及白平衡处理作为增强手段。
关于这些细节的具体信息可在附录中找到。
5. Reconstruction algorithm
我们处理受损于耀 spot 的图像 IF(其中 IF 属于 [0,1] 且大小为 512×512×3),旨在训练一个神经网络 f 来预测未受损图像 I0。可供选择的网络架构各有优劣,并将对两种主流架构进行评估。有关本研究中所采用的具体网络架构及详细的实验方法,请参阅附录部分。
5.1. Losses
主要目的是去除由明亮光源引起的耀斑。然而,在我们的数据集中,并非所有图像F都同时包含亮源和星斑。使用简单的方法来训练网络时,默认情况下网络将试图去除了亮源后重建星图,在这种情况下这不仅违背了模型的设计初衷(即仅对含有星图的情况进行建模),还导致资源的浪费。为了避免模型在捕捉到亮源时生成错误的场景描述(即不正确地将光线残留与星图结合),我们在计算损失函数时采用了特殊的策略:忽略那些处于过饱和状态(即接近或超过最大值)的像素点。通常情况下,在图像处理中忽略饱和像素是有道理的,并且这些像素提供的信息量有限。
在计算损失之前,在原始网络输出f(IF, Θ)的基础上通过二进制饱和掩码M对其进行修改。其中,该掩码M对应于输入中亮度超过阈值(此处阈值设定为0.99)的像素。随后我们执行形态学操作以去除这些小而饱和的区域,并将它们排除在关注范围之外;针对位于掩码M范围内的像素,则将其替换为地面真值I0以消除其对损失的影响

其中:表示逐元素乘法。
在训练过程中,我们最小化两种损失的总和:图像损失和耀斑损失:

图像损失L_I导致预测无斑图像I_ˆ_0在亮度和视觉感知方面接近真实无斑图像I_ˆ_1. 数据项基于RGB值计算预测无斑图像I_ˆ_0与真实无斑图像I_ˆ_1之间的L1距离. 使用预训练VGG-19网络[22]对输入的两个无斑图像进行处理以评估其感知质量. 类似于[27]的方法,在选定特征层(包括conv1-2, conv2, conv3-2, conv4-2, conv5-2)处提取特征表示Φ_l(I_ˆ_0)与Φ_l(I_ˆ_1),并对这些特征表示之间的绝对差异进行加权惩罚. 综上所述, 图像损失L_I可表示为:

由LF造成的耀斑损失导致了对真实太阳太阳光子 F 的预判,并通过降低预测无太阳光子图伪影的方法应用于第6.2节。其表达式形式与 Eq. 9 相同,在参数设置上将其替换成 F 和 F。其中, 预测太阳光子 F 定义为其输入信号减去被屏蔽网络输出的结果:


5.2. Post-processing for light source blending
我们的损失明确地阻止了网络在饱和区域无法进行任何学习或操作,因此其输出结果具有高度的不确定性或不可预测性.实际上,在实际应用中观察到该网络趋向于消除光源的影响,并使输出与周围像素达到更高的相似度.鉴于该研究的核心目标是消除图像中的斑点干扰(即耀斑),而非直接处理光源因素,因此我们对网络输出进行后处理以重新引入光源信息.
重要发现指出,在输入图像中可能导致耀斑出现的关键光源可能呈现饱和状态(若非如此则无法引发可见光)。由此可知该方法能够通过强度值轻松实现对产生光斑现象的关键特征进行识别。为了实现平滑过渡效果并附加柔和过渡层于其边缘区域,请参考第5.1节所述掩码M构造过程(相关内容详见补充资料)。通过结合带羽状模糊技术在线性空间混合输入与输出图像(如图6(d)所示):

6. Results
为了研究模型在半合成数据集上的泛化能力,我们采用了以下三种测试数据类型:(1)具有基础真值的合成图像(参考第4节);(2)不具备基础真值的真实图像;(3)具有基础真值的真实图像(通过三脚架拍摄两张图片,其中一张包含来自外部明亮光源的反射光,另一张则利用遮挡物避免光线进入镜头)。对于第二种情况,我们在其中一个图像中观察到由于光线反射引起的伪影现象;而在第三种情况下,经过精心设置的遮挡物(例如镜头罩)有效阻止了光线进入相机成像区域
6.1. Comparison with prior work
我们通过表1和图7展示了数值对比和视觉对比。为了减少光源带来的干扰,在计算度量时我们采用了公式7,并将掩膜区域替换成地真像素。
我们对最近的一些火炬清除方案进行了系统性评估[1,3,24]。值得注意的是,在现有研究中普遍采用的手动启发式方法仅限于处理特定类型的问题(例如,在本研究中关注的是眩光斑问题),这使得它们在解决复杂问题时表现出局限性。通过对比实验,在现有研究中已经取得了一些有意义的结果
我们开发的方法经过精心设计后产生了两个版本:一个是基于架构[27]的创新方案(简称为" arch-based"),另一个是广泛采用的UNet模型(参考文献[20])。这些研究不仅展示了我们方法在性能上的显著优势,并突显了所提出的管道和数据集的独特价值。在此文中剩下的部分中我们将主要聚焦于U-Net变体的研究由于其卓越性能能够为后续工作奠定坚实基础
在最后阶段,我们对20名参与者进行了用户研究。其中每个参与者均获得了具有镜头模糊的实际图像以及两个预测的无模糊图像:其中一个源自U-Net模型,另一个源自五个基准模型中的一个。随后,请参与者确定哪一版本在消除镜头模糊效果上更为卓越。为此我们从三组共52张不同类型的图片中进行采样:其中包括与第4.2节中相同镜头类型拍摄的照片以及其他五种不同焦距下的成像样本,并参考了[3]中的相关数据集。为了避免潜在偏差的影响,在每次测试时都会随机打乱图片顺序。如表2所示,在所有三个数据集上我们的方法表现均显著优于其他所有方法。即使是在Chabert[3]的研究数据集上用户的反馈也显示出同样的倾向性(85% vs 15%)。不出所料,在我们的训练集中没有出现的特定镜头配置上其性能表现稍逊一些
6.2. Ablation study
在本节中,我们将研究过程中的两个关键组件,以演示它们对输出的影响。
Flare loss
考虑到大多数星爆区亮度高于底层场景,在保证真实数据完整性的同时我们需要确保网络不会简单地将所有明亮区域调暗。为了避免网络简单地将所有明亮区域调暗,在模拟星爆区失低频光效应时进行了详细验证。如图9所示,在有无低频光补偿训练后的模型性能对比实验中我们可以观察到明显的性能差异。当缺乏低频光时,在这种情况下该网络可能会移除一些不属于星爆区但亮度较高的区域
Captured and simulated flare data
在第4节中提到了捕获的数据主要关注反射耀 spot 的情况, 而模拟数据还涵盖了散射情况。为了证明这两部分都是必要的, 开发并训练了两个消融模型, 每个消融模型排除了一个来源。正如预期所示, 在单独使用任一类型的数据进行相位图重建时的表现较差, 如图 10 所示
6.3. Generalization
Across scenes
基于我们的半合成数据集包含了多样的耀斑模式以及各类场景,在经过充分训练后该模型能够良好地适应各类不同的场景类型(见图8)。参考图8可知输入图像呈现了多样化的光点形状、色彩以及它们的位置配置,并结合不同主体结构与光照条件的变化特征,在大多数情况下该网络通常能够输出高质量的结果。然而,在无光点检测的情况下系统将执行无操作指令处理以确保程序运行的安全性
Across cameras
提及第4.2节内容中提到
这表明模型具有一定的泛化能力。举例而言,在捕捉不同类型的图像时该模型表现出较差的效果例如鱼眼成像技术(图11中的最后一栏)。值得注意的是对于依赖透镜进行反射处理的部分尤其如此如第4.2节所述。探索完全不同的相机设计路径是一个值得深入研究的方向。
6.4. High-resolution images
我们采用的方法是针对高分辨率输入设计的。具体来说,在目标分辨率下进行训练(例如,在512 \times 512的情况下),整个过程在运行时会占用十六倍于预期内存资源。
得益于镜头光晕主要为低频伪影这一特性,在处理高动态影像时我们可以采取以下步骤:首先对输入图像进行双线性下采样生成初始版本;然后预测并去除其中的纯净伪影(见图12);接着对该去除后的结果应用双线性插值将其恢复到全分辨率;最后从原始输入中去除该伪影成分即可。这样处理后基于固定低分辨率训练的网络将能够有效处理更高分辨率的画面而不出现明显质量下降的现象。在Xeon E5处理器上当输入尺寸为512 × 512时处理时间从8秒降至仅需0.55秒
7. Conclusion
我们阐述了一种新型透镜光晕生成模型。基于原则图像构建半合成数据生成管道用于训练卷积神经网络(CNN)能够在单一受损图中重建干净未受污染图像无需真实训练数据。经实验验证该方法可在多场景或多相机配置下实现高精度去污效果目前所得结果是最好的普遍适用镜头去污技术
