人造光源往往会在夜间拍摄照片上造成强烈的镜头炫光和伪影,夜间炫光既影响视觉效果又导致视觉算法性能退化。现有炫光去除方法主要集中于去除白天炫光,夜间场景下会失效。夜间炫光去除困难主要有来两方面原因:夜间独特的照度和人造光源光谱、夜间拍摄炫光的多种模式和图像退化。夜间炫光去除数据集的缺乏限制该课题的相关研究。
基于以上情况,本文引入首个夜间炫光去除数据集——Flare7K,提供5000个散射和2000个反射炫光图像,包括25种散射炫光和10种反射炫光,7000个炫光图像可随机添加到无炫光图像中以获得成对图像。除了丰富的炫光模式,本文数据集也提供大量的标注,包括光源、闪烁炫光、反射炫光、条纹等现有数据集中普遍缺乏的标注。
透镜炫光是强光在光学系统中散射或反射的一种光学现象。它在拍摄的照片上留下了一个放射状的明亮区域和亮点。在夜间环境中,由于多种人工照明,炫光的影响更为严重。这种现象可能导致光源周围的对比度降低和细节被抑制,从而降低图像的视觉质量和视觉算法的性能。以夜间驾驶立体摄像机为例,利用立体匹配算法将散射炫光误估为近距离障碍物。
对于空中目标跟踪,镜头炫光引入的亮点可能会误导算法跟踪炫光而不是飞行目标。为了避免这些潜在的风险,主流的方法是优化硬件设计,如使用专门设计的镜头组或应用增透膜。虽然专业镜片可以缓解炫光效应,但不能解决炫光的固有问题。此外,指纹、灰尘和镜头前的磨损往往带来意料之外的炫光,特别是在智能手机和显示器成像。因此,亟需一种消除炫光的算法。
典型炫光可大致分为三种主要类型: 散射炫光、反射炫光和透镜球(又称后向散射)。散射炫光是由镜头上的灰尘和划痕引起的。这种类型的炫光将产生径向线状图。反射炫光是由于透镜系统中空气-玻璃界面之间的多次反射引起的。它们的图案由孔径和透镜结构的形状决定。这样的图案在拍摄的照片上通常表现为一系列的圆形和多边形。不同于散射炫光,当移动相机时,反射炫光会朝着与光源相反的方向移动。镜头球是由于透镜表面上的灰尘或水滴的无聚焦颗粒引起的。它们是在摄影中固定在同一位置的孔径形状的多边形。只有光源周围的透镜球才会被照亮,而且它们不会随着光源或相机的运动而移动,因其位置是相对固定的,这种效果在视频中更容易消除。因此,本文主要研究夜间散射炫光和反射炫光的去除问题。
消除夜间炫光极具挑战。首先,由于光源位置和光谱的不同,镜头生产中的不稳定缺陷和日常使用中的随机划痕、油污,使得炫光图案多种多样。其次,不同波长的光的色散和小光学结构之间的干涉也可能导致彩虹状晕和彩色云纹。虽然有一些传统的炫光消除方法,但它们主要集中在探测和擦除反射炫光中的小亮斑。也有一些基于深度学习的炫光去除方法已被提出用于白天炫光去除或用特定类型的图案去除炫光。成对的夜间炫光污染/无炫光数据的缺乏限制了基于深度学习的夜间炫光去除技术的发展。
大规模的数据对于训练深度模型是必不可少的。与白天的炫光不同,路灯的亮度明显低于阳光。由于镜头制造的缺陷只会导致微小的散射炫光,因而专业摄像机总能捕捉到清晰的夜间图像。然而,对于显示器镜头、智能手机摄像头、无人机和自动驾驶摄像头来说,指纹、日常磨损和灰尘可能在镜头表面形成光栅,因此产生了在夜间仍然明显的条纹(条状炫光)。此外,人工光源的光谱与日光有很大的不同,可能会引入不同的衍射图案。炫光模式在白天和夜间之间的差距使得在白天炫光数据集上训练的模型在夜间很难表现良好。
基于上述情况,本文作者制作首个夜间炫光去除数据集——Flare7K数据集。
本文的主要贡献有三点:
Wu等人于《How to train neural networks for flare removal》(ICCV2021) [ 1 ] ^{[1]} [1]一文提出了一个包含2001张照片和3000合成图像的半合成炫光数据集,是目前唯一的炫光数据集。但其所有采集到的炫光图像均由同一相机在相同光源与相同距离下采集,使得其所包含炫光趋于同质化,在去除来自不同镜头和光源的炫光时效果微乎其微。本文借助Adobe的Optical Flares插件,基于真实世界的参考图像构建了一个逼真的镜头炫光数据集。
基于深度学习的炫光去除研究受限于没有包含散射炫光和各种反射炫光的成对数据。Wu等人基于其半合成数据集训练一个基于U-Net的模型用于炫光去除。qiao等人采用Cycle-GAN的思想训练一个框架用于炫光去除。但由于夜间炫光的特殊性,现有方法在应对该问题时表现不佳。
光源在雾中的散射效应会导致散射炫光,这使得去雾任务与炫光去除有一定相似性。同时现有绝大多数方法假定炫光是平滑的,因而无法去除散射炫光中的高频成分。
典型的夜间炫光,即散射炫光和反射炫光,常包含多种分量:光晕、条纹、虹膜状、鬼影、明亮线条、饱和光斑、雾、耀光、微光、闪光、反光、光环等。本文将夜间炫光进行公式化地表示,如下图所示:
散射炫光可分为耀光、微光、条纹:
成因于多个空气-玻璃镜头表面间的反射,又名鬼影。由于镜头间多次反射的存在,很难合成此类反射炫光,一种更直接的方法是2D方法 [ 2 ] ^{[2]} [2],本文则采用特定的焦散线模式模拟反射炫光的效果。
Wu等人提出的半合成炫光数据集 [ 1 ] ^{[1]} [1]与真实场景下的炫光图像存在领域差异、且多样性不足;相比之下,本文数据集提供了更丰富的炫光模式、更真实的夜间炫光图像和更丰富的标注。
合成流程:从参考图像中得到条纹界面曲线 α \alpha α 、炫光下降曲线 β \beta β 、光源 γ \gamma γ 附近的噪声版和条纹周围消失角 θ \theta θ 。随后用 α \alpha α 和 β \beta β 合成耀光效应,用 α \alpha α 和 β \beta β 模拟条纹,并在微光上添加一个模糊的分形噪声模式以模拟光源周围的退化。该生成流程如下图示意。
由于剪切效应和焦散线在单张图像中不明显,本文采集视频片段作为参考。首先从Optical Flares插件中筛选最相似的虹膜,然后手动调整这些虹膜的位置、大小和颜色,以使之适应参考。最后在AE中将这些虹膜融合以产生一个反射炫光模板。作者还考虑了炫光的动态触发机制,如焦散线和剪切效应等。对于焦散现象,其是由不同虹膜之间的干扰引起的,为了模拟这种效果,作者使用Optical Flares的默认焦散模板来生成虹膜中心的焦散模式。为了模拟动态触发效应,将焦散模式的不透明度设置为与虹膜和光源之间的距离成正比。至于剪切效应,则是由于反射光路被两个以上镜头的光阑所阻挡而产生的。它可以看作是两个虹膜的交集。因此,当虹膜-光线距离大于剪切阈值时,作者使用另一个虹膜作为掩模来掩盖部分虹膜。作为掩模的虹膜不会被渲染。夜间场景下基质LED灯是常见的,这可能会带来栅格状的反光炫光,为了模仿这种效果,作者合成了一些晶格形状的虹膜。相较于已有数据集 [ 1 ] ^{[1]} [1],这些设计更好地反映了现实世界的夜间情况。反射炫光生成流程如下图示意。
合成测试数据的收集
使用本文所提合成步骤合成夜间炫光数据共计100对。具体做法是,用华为P40(镜头未作清洁处理)拍摄炫光污染图像,并合成对应的炫光图像,再使用索尼 α \alpha α 6400拍摄同一场景作为无炫光干净图像,通过将合成炫光图像添加至无炫光干净图像制作成对数据。
真实测试数据的收集
将手机镜头进行清理再拍摄图像从而获得无炫光干净图像,与炫光污染图像配对,并进行手动对齐。以此种方式获得100对真实世界的炫光污染/无炫光图像对。由于这种方式无法消除透镜缺陷带来的影响,所以此真实测试数据只能在一定程度上反映炫光去除方法的实际性能。
借助所提数据集,根据Wu等人的研究 [ 1 ] ^{[1]} [1],作者训练了一个 U-Net 作为基线模型,另外为更多基于深度学习的图像复原方法构建了一个基准,包括 HINet [ 3 ] ^{[3]} [3]、MPRNet [ 4 ] ^{[4]} [4]、Restormer [ 5 ] ^{[5]} [5] 和 Uformer [ 6 ] ^{[6]} [6] 。训练设置:图像尺寸为512 × \times × 512,batch-size为2,显卡为 RTX 3090(24G),受限于显存,作者减少了 MPRNet 和 Restormer 中采用大网络结构的模型参数。
由于反射炫光通常会产生类似明亮的窗户和街灯的亮斑,这些窗户和街灯可作为反射炫光的一部分被移除。此外,当相机与光源距离较近时,会产生覆盖全图的炫光且很难去除,此时,条纹和光源附近的区域会发生饱和,而现有的基于图像分解的方法很难弥补此类缺失的信息。要解决以上问题,可考虑以语义先验作为输入或者引入更好的网络结构。
本文提出了一个包含5000个散射炫光图像和2000个反射炫光图像的数据集,其包括25中散射炫光和10种反射炫光。该数据集包含种类丰富的炫光图像并提供大量的标注,有助于推动夜间炫光去除的相关研究。
Reference
[1] Yicheng Wu, Qiurui He, Tianfan Xue, Rahul Garg, Jiawen Chen, Ashok Veeraraghavan, and Jonathan T. Barron. How to train neural networks for flare removal. In IEEE International Conference on Computer Vision, 2021.
[2] Sungkil Lee and Elmar Eisemann. Practical real-time lens-flare rendering. Computer Graphics Forum, 32(4):1–6, 2013.
[3] Liangyu Chen, Xin Lu, Jie Zhang, Xiaojie Chu, and Chengpeng Chen. Hinet: Half instance normalization network for image restoration. In IEEE Conferenceon Computer Vision and Pattern Recognition Workshops, 2021.
[4] Syed Waqas Zamir, Aditya Arora, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan, Ming-Hsuan Yang, and Ling Shao. Multi-stage progressive image restoration. In IEEE Conference on Computer Vision and Pattern Recognition, 2021.
[5] Syed Waqas Zamir, Aditya Arora, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan, and Ming-Hsuan Yang. Restormer: Efficient transformer for high-resolution image restoration. In IEEE Conference on Computer Vision and Pattern Recognition, 2022.
[6] Zhendong Wang, Xiaodong Cun, Jianmin Bao, Wengang Zhou, Jianzhuang Liu, and Houqiang Li. Uformer: A general u-shaped transformer for image restorationn. In IEEE Conference on Computer Vision and Pattern Recognition, 2022.