点击下方“计算机书童”卡片,每天获取顶刊论文解读
点击加入论文投稿、写作、阅读分享交流群
Flare7K++: Mixing Synthetic and Real Datasets for Nighttime Flare Removal and Beyond题目:Flare7K++:混合合成与真实数据集用于夜间眩光去除及其它应用
作者:Yuekun Dai; Chongyi Li; Shangchen Zhou; Ruicheng Feng; Yihang Luo; Chen Change Loy
摘要
夜间拍摄的图像常常会受到强烈镜头耀斑的影响,这不仅降低了图像的视觉质量,还影响了视觉算法的性能。现有的去除耀斑方法主要集中在去除白天的耀斑,在夜间情况下则常常失败。夜间去除耀斑的挑战在于人造光源独特的亮度和光谱,以及耀斑的多样化模式和图像退化。夜间耀斑去除数据集的缺乏限制了这一关键任务的研究。在本文中,我们介绍了Flare7K++,这是第一个全面的夜间耀斑去除数据集,包括962张真实捕获的耀斑图像(Flare-R)和7000个合成耀斑(Flare7K)。与Flare7K相比,Flare7K++在消除光源周围的复杂退化方面特别有效,这是仅使用合成耀斑无法解决的。此外,以前的耀斑去除流程依赖于手动阈值和模糊核设置来提取光源,当光源太小或没有过曝时可能会失败。为了解决这个问题,我们额外提供了Flare7K++中所有图像的光源注释,并提出了一个新的端到端流程,在去除镜头耀斑的同时保留光源。我们的数据集和流程为未来夜间耀斑去除研究提供了宝贵的基础和基准。广泛的实验表明,Flare7K++补充了现有耀斑数据集的多样性,并将夜间耀斑去除的前沿推向了真实世界场景。
关键词
眩光
低级计算机视觉
图像恢复
夜间摄影
I. 引言
镜头耀斑是一种光学现象,其中强烈的光线在光学系统中发生散射和/或反射。它在捕获的照片中留下辐射状的亮区和光斑。由于夜间环境中存在多个人造光源,耀斑的效果更加严重。这种现象可能导致光源周围的对比度降低和细节受到抑制,从而降低图像的视觉质量以及视觉算法的性能。以夜间使用立体相机的自动驾驶为例,散射耀斑可能被立体匹配算法误判为近距离障碍物。对于空中目标跟踪,镜头耀斑引入的亮点可能会误导算法去跟踪耀斑而不是飞行物。
为了避免镜头耀斑带来的潜在风险,主流的方法是优化硬件设计,例如使用特别设计的镜头组或应用防反射涂层。尽管专业镜头可以减轻耀斑效果,但它们无法解决耀斑的根本问题。此外,镜头前的指纹、灰尘和磨损经常带来意想不到的耀斑,这些耀斑无法通过硬件减轻,特别是在智能手机和监控成像中。因此,非常需要一个耀斑去除算法。
典型的耀斑可以分为三种主要类型:散射耀斑、反射耀斑和镜头光斑(又名背散射)[2],[5],[6],如图1所示。我们根据它们对光源移动的反应来区分这三种耀斑。散射耀斑是由镜头上的灰尘和划痕引起的。这种类型的耀斑产生辐射状线条图案。当移动镜头或光源时,散射总是围绕光源包裹,并在捕获的照片中保持相同的图案。反射耀斑是由镜头系统中空气-玻璃界面之间的多次反射引起的[6]。它们的图案由光圈的形状和镜头结构决定。这种图案通常在捕获的照片中表现为一系列圆形和多边形[7]。与散射耀斑不同,当移动相机时,反射耀斑会朝着与光源相反的方向移动。镜头光斑是由镜头表面未聚焦的尘埃颗粒或水滴引起的[8]。它们是固定在照片的同一位置的光圈形状的多边形。只有围绕光源的镜头光斑才会变亮,并且它们不会随着光源或相机移动而移动。由于镜头光斑的位置相对固定,这种效果在视频中更容易被去除[5]。因此,我们主要关注本研究中夜间散射耀斑和反射耀斑的去除。
去除夜间耀斑极其具有挑战性。首先,耀斑图案多样,由光源的不同位置和光谱、镜头制造中的不稳定性缺陷以及日常使用中随机划痕和油腻污垢引起。其次,不同波长的光的散射以及小光学结构之间的干涉也可能导致类似彩虹的光晕和彩色的莫尔条纹。尽管有一些传统的耀斑去除方法[9],[10],[11],它们主要集中在检测和擦除反射耀斑中的小亮点。最近,一些基于学习的耀斑去除方法[2],[12],[13],[14],[15]已被提出用于日间耀斑去除或去除具有特定类型图案的耀斑。为了获得成对的耀斑损坏/无耀斑图像,Wu等人[2]合成基于物理的耀斑,并在暗室中用相同的清洁镜头拍摄耀斑照片。这些耀斑图案将叠加在无耀斑图像上以产生成对数据。Sun等人[13]假设所有耀斑都是由相同的2点星点扩散函数(PSF)生成的。Feng等人[14],[15]的方法主要关注去除显示屏下摄像头的耀斑伪影。所有这些耀斑生成流程都假设镜头污染物或光源是特定类型的,从而导致相对均匀的耀斑图案。然而,对于监视器镜头、智能手机摄像头、无人机和自动驾驶摄像头,指纹、日常磨损和灰尘可能充当光栅,从而产生条纹(条状耀斑)和夜间非常明显的极其多样化类型的耀斑。此外,人造光源的光谱通常与太阳的光谱有很大不同,导致不同的衍射图案,进一步使耀斑建模复杂化。现有合成耀斑与真实世界夜间耀斑之间的差异使得很难开发能够很好地泛化到各种夜间情况的模型。
为了促进夜间耀斑去除的研究,我们构建了一个大规模的分层耀斑数据集,包含精心设计的夜间耀斑,称为Flare7K++,这是同类数据集中的第一个。它由962张真实捕获的耀斑图像(Flare-R)和7000个合成耀斑(Flare7K)组成。Flare-R数据集是由华为P40、iPhone 13Pro和ZTE Axon 20 5G的后置摄像头捕获的。对于每个智能手机的后置镜头,我们在暗室中拍摄了大约100张耀斑图案的照片。为了模拟日常使用,我们在拍摄每张耀斑图案后用不同的材料(如手指、丝巾和尼龙布)擦拭镜头。与Flare-R不同,Flare7K由合成耀斑图案组成。它提供了5000个散射和2000个反射耀斑图像,包括25种类型的散射耀斑和10种类型的反射耀斑。这些耀斑图案是基于对真实世界夜间耀斑的观察和统计合成的。由于散射和反射耀斑是独立的,我们分别生成各自的耀斑数据。因此,不同的反射耀斑可以添加到任何散射耀斑上以获得图案多样性。这7000个耀斑图案可以随机添加到无耀斑图像上,形成可用于训练深度模型的耀斑损坏和无耀斑图像对。在图2中,我们展示了我们的数据与真实世界夜间图像的比较。我们还展示了最近一个耀斑数据集[2]的合成数据。相比之下,我们的数据在耀斑图案方面更类似于真实世界的夜间图像。此外,我们数据集中的每个散射耀斑图像可以分成三个部分:光源、条纹和眩光。耀斑组件的分离使我们的数据集比以前的耀斑数据集[2]更具可解释性和可操作性。
这项工作基于我们之前的会议版本[16]。与会议版本相比,我们引入了大量新材料如下:1)为了克服镜头系统中复杂衍射引起的严重退化的挑战,我们创建了一个名为Flare7K++的混合数据集,它通过新的实际捕获的Flare-R数据集扩展了合成的Flare7K数据集(会议版本)。利用这个混合数据集训练深度模型可以显著提高去除强烈退化的有效性。2)我们为Flare7K++中的所有图像提供了额外的光源注释,并提出了一个网络来从真实捕获的耀斑图像中提取光源。3)以前的方法如[2],[16]依赖于手动设置阈值和模糊核来提取光源。当光源太小或没有过曝时,它往往会在最终输出中抹去光源。基于我们提供的光源注释,我们设计了一个新的端到端框架用于耀斑去除,同时保留光源并去除镜头耀斑。4)我们为测试耀斑损坏图像的不同耀斑组件手动标记了遮罩,并引入了两个新的度量标准,G-PSNR和S-PSNR,以反映眩光和条纹损坏区域的恢复结果。5)为了展示耀斑去除的重要性,我们在包括立体匹配、光流估计和语义分割在内的下游任务上评估了我们的方法,这些是夜间自动驾驶中的一些常见任务。
III. 夜间镜头耀斑的物理原理
典型的夜间镜头耀斑通常由两种类型的耀斑组成,即散射耀斑和反射耀斑,它们很复杂,因为它们包括许多组件,如光晕、条纹、虹膜、鬼影、亮线、饱和斑点、雾、眩光、闪烁、闪光、光泽、微光、尖球、环和圆环等。在视觉特效(VFX)、计算摄影、光学和摄影中,相同类型的组件可能有不同的名称。我们根据它们的图案将这些名称归类为几种常见类型,以避免混淆。例如,闪光、光泽和尖球都是辐射状线形图案。在本文中,我们使用闪烁来表示所有辐射状线形组件。为了更好地理解我们提出数据集,我们在下面解释了每种类型的夜间镜头耀斑的形成原理。
A. 散射耀斑
散射耀斑中的常见组件可以分为眩光、闪烁和条纹,如图4所示。
眩光是围绕光源的平滑雾状效果,也称为辉光效果[30]。即使在理想的镜头系统中,具有有限半径的瞳孔仍将充当低通滤波器,导致光源模糊。此外,镜头中的磨损或点状杂质会导致镜头厚度不均匀,显著增加了眩光效果的区域。此外,色散使眩光的色调并不全局恒定。如图4所示,远离光源的眩光像素比光源周围的像素更蓝。在白天有足够照明的情况下,光源周围的景象足够亮,可以覆盖眩光效果。然而,在低光条件下,眩光明显比场景亮得多,因此在夜间耀斑去除中不能忽视。
闪烁(又名闪光、光泽、尖球)是由光圈的形状和线状杂质以及镜头缺陷引起的多条辐射条纹图案[6]。由于光圈的结构,瞳孔不是完美的圆形,因此会在照片上产生星形耀斑。以十二边形光圈为例,光阑边缘的衍射将点光源投影到照片上的十二边形上。与光圈不同,线状镜头缺陷总是导致不均匀的闪烁。对于日间的镜头耀斑,由于光源强度高,太阳会在整个屏幕上留下明亮的闪烁。相比之下,人造光源的强度较低,闪烁区域总是与眩光效果相似。由于闪烁与眩光的区别仅在于图案,因此也可以将其视为眩光的高频分量。
条纹(又名亮线、条纹)是比闪烁明显更长更亮的线条状耀斑[13],[31]。它们经常出现在智能手机摄影和夜间驾驶视频中。镜头前部的定向油渍或划痕可能充当光栅,引起类似光束的PSF。在白天,条纹就像更亮的闪烁。然而,在低光条件下,即使光源强度低,也可能在整个屏幕上产生条纹。由于人们无法始终保持智能手机镜头或车载摄像头的清洁,这种在夜间非常明显。
B. 反射耀斑
反射耀斑(又名鬼影)是由镜头中多个空气-玻璃表面之间的反射引起的[6]。对于具有n个光学表面的镜头系统,即使光线正好反射两次,仍然有n(n−1)/2种组合选择n个表面中的两个表面[2],[6]。一般来说,反射耀斑在图像上形成不同图案的组合,如圆圈、多边形或圆环。由于镜头之间的多次反射,物理上合成反射耀斑具有挑战性。模拟反射耀斑的一种更直接的方法是使用2D方法[7]。具体来说,在2D反射耀斑渲染中,由于色散引起的环和圆环效果在夜间不明显,我们可以将反射耀斑抽象为一排不同的虹膜,如图4所示。在反射过程中,如果光路被光圈挡住,这将产生剪切虹膜。在2D方法中,这可以通过为光阑和光源之间的距离设置剪辑阈值来模拟。如果这个距离大于剪辑阈值,虹膜的部分将按比例剪辑。
理想情况下,每个虹膜可以独立添加到图像中。此外,不同虹膜之间不会有干扰。然而,在真实世界的场景中,邻近的光线通常是相关的,并产生三角网格。为了避免阻塞伪影,Ernst等人[32]提出了一种用于焦散渲染的方法,并引入了一种用于组合和插值这些虹膜的技术。在我们的方法中,由于渲染物理上真实的焦散会增加模拟反射耀斑的难度,我们使用特定的焦散图案来模拟这种效果。
IV. Flare7K++ 数据集
Wu等人[2]提出的唯一的现有耀斑数据集主要是为日间耀斑去除设计的。因此,夜间耀斑中常见的条纹效应和眩光效应在Wu等人的数据集中并未考虑。对于夜间耀斑,图案主要由附着在镜头上的污渍决定。污染类型的多样性使得像Wu等人的方法这样的基于物理的方法很难通过遍历所有不同的瞳函数来收集真实的夜间耀斑。这导致合成耀斑与真实世界夜间场景中耀斑之间的领域差距和缺乏多样性。为了解决领域差距和缺乏多样性带来的挑战,我们引入了Flare7K++,一个新颖的数据集,包括两个组成部分:Flare7K,一个合成耀斑数据集,和Flare-R,一个在真实世界设置中捕获的耀斑图像集合。如图5所示,我们的耀斑图案更具多样性,并且更接近真实世界的夜间情况。
A. Flare7K 数据集
为了合成Flare7K,我们采用数百张具有不同类型镜头(智能手机和相机)和各种光源的夜间耀斑图像作为参考图像。我们汇总了捕获的图像,并根据它们的图案将散射耀斑总结为25种典型类型。对于每种类型的耀斑,我们生成了200张不同参数的图像,例如眩光的半径、条纹的宽度等。由于反射耀斑直接与镜头组的类型相关,我们也捕获了一些使用不同相机拍摄的视频片段作为反射耀斑合成的参考。通过参考这些真实世界的夜间耀斑视频,我们为每种特定类型的相机设计了一组虹膜,并合成了10种典型的反射耀斑。我们最终获得了5000个散射耀斑和2000个反射耀斑。由于耀斑渲染技术相对成熟,我们选择直接使用Adobe After Effects中的Video Copilot's Optical Flares插件来生成定制的耀斑。图6展示了我们散射耀斑合成的流程。我们将镜头耀斑分成四个组成部分,包括闪烁、条纹、眩光和光源。对于每个组件,我们分析了参考图像中的参数,如眩光半径范围和颜色-距离曲线。然后,我们使用Adobe After Effects合成耀斑模板。
眩光合成:从每种类型的参考耀斑损坏图像中,我们首先绘制像素的RGB值与其到光源的距离之间的关系作为眩光曲线。将此颜色-距离关系除以眩光的半径,可以将其视为颜色校正曲线。将此曲线应用于具有眩光半径的圆形渐变图案,可以产生这种类型的耀斑的眩光效果。由于条纹区域周围的区域的亮度有时比正常区域弱,我们手动测量消失角度,并使用羽毛遮罩在这些区域减少眩光的不透明度。这个缺失角的角度被设置为一个变量,以在生成这种类型的散射耀斑时覆盖更多情况。
条纹合成:在Sun等人[13]的工作中,假设条纹总是由2点星PSF生成的。然而,条纹效果并不均匀对称,一侧通常比另一侧锐利得多。为了模仿这种效果,我们在Adobe After Effects中为每种类型的条纹手动绘制一个遮罩,并将宽度设置为一个变量。然后,我们绘制条纹部分和眩光部分的RGB值,并使用这个曲线来为条纹上色并模糊遮罩的边缘。每个边缘的模糊大小从截面曲线的半衰值中得出。
闪烁合成:对于闪烁,我们使用Optical Flares的闪烁模板,并调整参数直到它大致匹配图像中的耀斑。在光源周围的图像区域通常受到强烈的退化,这很难通过Optical Flares来模拟。如果我们假设我们的镜头耀斑是平滑的,这种退化将被分离为去除耀斑后的图像的一部分。因此,我们使用Adobe After Effects的默认插件分形噪声来生成一个噪声图案,然后添加径向模糊效果,从而创建一个径向噪声图案。
光源合成:我们对耀斑损坏的图像应用阈值处理以获得一组过曝的小形状。为了模拟光源的辉光效果,我们在Adobe After Effects中对不同的小形状应用另一个名为Real Glow的插件。为确保只有光源区域过曝,将光源做得比眩光的过曝部分大。然后,它以屏幕混合模式添加到耀斑中。这种模式确保过曝区域不会扩大,并带来逼真的视觉效果。这些合成的光源将作为我们训练流程中的光源注释。
反射耀斑合成:对于反射耀斑,插件Optical Flares的Pro Flares Bundle包含51种不同类型的高质量捕获的虹膜图像,可以作为虹膜库。在与参考视频比较时,我们挑选最相似的虹膜,并使用Optical Flares插件手动调整它们的大小和颜色。由于不同虹膜到光源的距离总是成比例的,我们遵循插件的流程以成比例的距离将不同的虹膜组件设置在一条线上。之后,我们可以获取反射耀斑模板。
对于某些特殊的反射耀斑类型,我们还考虑了耀斑的动态触发机制,如焦散和剪辑效果。这些现象发生在光源在图像上的位置远离镜头的光学中心时。如第III-B节所述,焦散现象是由不同虹膜之间的干涉引起的。为了模拟这种效果,我们使用Optical Flares的默认焦散模板在虹膜中心生成一个焦散图案。为了模拟动态触发效果,焦散图案的不透明度设置为与虹膜和光源之间的距离成比例。对于剪辑效果,它在反射光路被两个以上的镜头光圈挡住时产生。它可以被视为两个虹膜的交集。因此,当虹膜-光源距离大于剪辑阈值时,我们开始使用另一个虹膜作为遮罩擦除虹膜的部分。这个虹膜将只作为遮罩使用,不会被渲染。
在夜间情况下,矩阵式LED灯很常见,可能会带来格子状的反射耀斑。为了模仿这种效果,我们合成了一些格子形状的虹膜,如图7所示。与之前的[2]数据集相比,这些设计更好地反映了真实世界的夜间情况。
B. Flare-R 数据集
由于合成数据集不包含镜头系统中衍射和色散引起的复杂退化,我们还使用962个耀斑图案捕获了真实世界的耀斑数据集Flare-R。与Wu等人的捕获方法不同,我们再现了日常使用中常见的镜头污染物,以丰富我们数据集的多样性。我们将不同类型的液体,包括水、油、乙醇和碳酸饮料浸在镜头表面,并用手指和不同类型的衣物擦拭。每次擦拭后,我们捕获一张新的镜头耀斑图像。我们禁用了手机相机的自动白平衡,并通过改变光源的颜色温度获得不同颜色的镜头耀斑图像。华为P40、iPhone 13 Pro和ZTE AXon 20 5G都有三个后置镜头,具有不同的焦距。对于每个镜头,我们改变相机与光源的距离,并捕获大约100张图像。总共,我们收集了覆盖几乎所有常见情况的962张耀斑图像。图5展示了合成和真实耀斑图案之间差异的示例。
与合成的Flare7K数据不同,为真实捕获的耀斑获取光源注释很困难。为了解决这个问题,我们使用Flare7K及其光源注释训练了一个网络,以从真实耀斑图像中提取光源。我们使用这个网络处理Flare-R数据集中的所有图像,以自动获取光源注释。对于极少数反射耀斑未被去除、影响光源提取精度的失败案例,我们手动擦除错误的亮点以获得光源注释。光源提取的详细信息在补充材料中提供。
C. 与现有耀斑数据集的比较
我们在表I中比较了我们的数据集和Wu等人的数据集之间的差异。比较表明,我们的新数据集提供了更丰富的图案和注释,这有利于更广泛的应用,例如镜头耀斑分割和光源提取。扩展应用的详细信息在补充材料中提供。此外,图5显示我们的新数据集在颜色和图案方面更能代表真实世界的夜间耀斑。为了评估不同耀斑数据集的保真度,我们收集了1273张真实捕获的夜间耀斑损坏图像和2000张类似场景的无耀斑夜间图像。按照补充材料中的数据增强流程,我们将从这些耀斑数据集中采样的耀斑图像添加到收集的无耀斑图像上,以合成不同的耀斑损坏数据集。然后,我们计算每个合成耀斑损坏数据集与真实捕获的夜间耀斑损坏图像数据集之间的Fréchet inception distance (FID) [33]。定量比较如表II所示,揭示了我们Flare7K和Flare-R的真实性。
D. 成对测试数据收集
由于没有公开可用的夜间耀斑去除测试数据集,我们收集了新的真实的夜间耀斑成对数据进行全参考评估。对于大多数设计良好的镜头,夜间场景的耀斑主要是由镜头表面(或夜间驾驶的挡风玻璃)上的污渍引起的。为了再现这些耀斑,我们用我们的手指和布擦拭相机的前镜头以模仿常见的污渍。之后,我们使用镜头纸轻微清洁前镜头以获得无耀斑的真实情况。清洁操作可能会导致成对图像的轻微不对齐。因此,我们手动对齐成对图像,并获取100对真实世界的耀斑损坏/无耀斑图像作为我们的测试数据集。由于真实情况可能仍受到镜头缺陷带来的轻微耀斑的影响,全局PSNR无法完全反映耀斑去除方法的性能。为了解决这个问题,我们为所有条纹、眩光和光源区域手动标记了遮罩,如图9所示。可以使用遮罩PSNR来评估不同耀斑组件区域的恢复结果。我们将眩光和条纹区域的遮罩PSNR称为G-PSNR和S-PSNR。
V. 提出的方法
Wu等人[2]提出的推理流程中,网络输出一个缺少光源的无耀斑预测。然后,将处理过的耀斑损坏图像通过手动阈值和模糊核提取出光源掩模,如图8所示。然而,条纹区域可能仍然过曝,导致图像上残留部分耀斑。此外,基于阈值的算法可能无法分割亮度不够的光源,模糊操作可能会意外地抹去微小的光源。因此,希望有一种方法能够在去除耀斑伪影的同时准确保留光源。为了解决这些挑战,我们引入了一个端到端训练流程,使用我们的光源注释,确保在耀斑去除过程中可靠地保留光源。
A. 训练流程
B. 损失函数
VI. 实验
A. 实验细节
B. 与先前工作的比较
C. 消融研究
VII. 局限性
VIII. 结论
声明
#论 文 推 广#
让你的论文工作被更多人看到
你是否有这样的苦恼:自己辛苦的论文工作,几乎没有任何的引用。为什么会这样?主要是自己的工作没有被更多的人了解。
计算机书童为各位推广自己的论文搭建一个平台,让更多的人了解自己的工作,同时促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 计算机书童 鼓励高校实验室或个人,在我们的平台上分享自己论文的介绍、解读等。
稿件基本要求:
• 文章确系个人论文的解读,未曾在公众号平台标记原创发表,
• 稿件建议以 markdown 格式撰写,文中配图要求图片清晰,无版权问题
投稿通道:
• 添加小编微信协商投稿事宜,备注:姓名-投稿
△长按添加 计算机书童 小编