自动驾驶之去光晕调研

中文版综述github

一、光晕类型

  • 常见去光晕算法的光晕
    自动驾驶之去光晕调研_第1张图片

  • 去光晕算法的光晕之二(汇总)
    自动驾驶之去光晕调研_第2张图片

样式包括有: halos(色圈), streaks(条纹), bright lines(亮线), saturated blobs(深污点), color bleeding(色渗), haze(烟雾), and many others。

二、光晕成因

自动驾驶之去光晕调研_第3张图片

一个理想的相机,当对焦时,应该支持从单个点光源射出的所有光线都可折射收敛到同一点(灰色)。
在实际中,真实的镜头散射和反射光沿着计划之外的路径,导致了光晕(蓝色和橙色)。

尽管这些光晕是无处不在的,在大部分图像中都是微不足道的。但是 当一个亮光源比其他部分亮度高几个量级时,这些小部分的散射和折射光会导致视觉上的光晕。

光晕主要分为两种: 散射导致的和折射导致的。

  • 散射光晕

    • 来源: 镜头瑕疵。包括工业瑕疵(例如压痕)、正常磨损(例如灰尘或刮痕)。
    • 成因: 大部分光线折射,而少部分光线散射或衍射,而不是沿着他们的既定路径. 灰尘导致类似于彩虹的效应,而刮痕导致放射性的条纹。散射也会降低光晕附近的对比度,导致朦胧的现象。
  • 反射光晕:
    来源: 在实际的镜头系统中,每个空气-镜片交界面会有 4 % 4\% 4%的反射。经过这些反射,光线到达镜头传感器的非既定位置。
    硬件方案: AR技术可以将空气-镜面界面的反射小于1%。但是该方法的有效性依赖于波长,所以这些光晕可能存在多种颜色,例如蓝色、粉色和紫色。

三、解决方案

3.1 硬件方案

高端相机使用精密的光流设计和材料来减少光晕。伴随着一些glass element加到镜头上来提高图像质量,同时也降低了从镜面反射的概率,常采用的技术是加入anti-reflective(AR) 涂层。这些涂层是昂贵的。

3.2 软件方案

基于镜头光晕的独一无二的shape、location或intensity检测光晕。然后使用图像修补来恢复光晕区域的flare.。但仅对部分类型的光晕点有效(例如bright spots)。

3.2.1 Automated Lens Flare Removal 2015

  • 方案:
    检测光晕 -> 恢复原图
    自动驾驶之去光晕调研_第4张图片

1. Multiple Thresholding: 将图像转换为灰度图,使用一系列阈值进行二值化。
2. Contour Detection: 对每个二值化的图,找到轮廓。
3. Blob Merging: 计算每个blob的中心,以距离和相似度为度量,对所有二值化图像的blob融合,获取一系列的潜在可能的光晕候选。
4. Flare Candidates Filtering: 对候选框使用一些规则进行筛选。
5. Flare Mask Computation: 计算Flare Mask
自动驾驶之去光晕调研_第5张图片
自动驾驶之去光晕调研_第6张图片

3.2.2 Automatic Flare Spot Artifact Detection and Removal in Photographs. 2021

主要步骤:

  • 光源检测
  • 光晕点检测
    • Blob检测
    • 检测光晕点范围
    • 拒绝细长的Blobs
    • 在光晕点附近过度曝光
    • 最终光晕点的置信度度量
  • 光晕移除
    • 创建光晕点mask
    • 移除光晕
      自动驾驶之去光晕调研_第7张图片

3.2.3 Auto Removal of Bright Spot from Images Captured Against Flashing Light Source

主要处理: 太阳光源或/flashing光源下经常在背景出现的bright spot的问题。

原因: 光线通过光圈不完美反射或散射,或者不合适的入射角。

方案: 检测亮点->修复技术填充亮点区域。
自动驾驶之去光晕调研_第8张图片

3.2.4 data-driven方法

How to Train Neural Networks for Flare Removal (ICCV2021)
有数据集; 有训练代码; 模型权重需要自己训练。

  • 散射光晕的物理模型和光晕获取
    根据薄透镜(thin-len) 近似, 由pupil function
    P ( u , v ) P(u,v) P(u,v): 对于每光圈平面(aperture plane)上的点 ( u , v ) (u,v) (u,v), 镜头对波长为 λ \lambda λ入射波(an incident wave)振幅(amplityde)和相位(phase)的影响为:
    在这里插入图片描述

    其中, A A A为光圈方程,描述了光流的性质,表示了它入射波的衰减。简单形式下,含有光圈半径为 r r r的相机有如下光圈方程:
    在这里插入图片描述

ϕ λ \phi_{\lambda} ϕλ描述了相移(phase shift),依赖于波长和光源的3D位置 x , y , z x,y,z x,y,z,
在这里插入图片描述

ϕ S \phi^S ϕS由入射角决定,散角 ϕ D F \phi^{DF} ϕDF由光源的深度 z z z决定.

点扩散方程由傅里叶变换:
在这里插入图片描述

Sampling PSFs: 为了模仿灰尘和刮痕,在光圈方程 A A A上添加随机大小的点。共生成125个不同光圈。

自动驾驶之去光晕调研_第9张图片

  • 反射光晕和光晕获取

很难通过精准的光流计算,因此在实验室环境内获取。

  • 人造训练集
    自动驾驶之去光晕调研_第10张图片

  • 模型训练结果
    注意要把光源保留
    自动驾驶之去光晕调研_第11张图片
    自动驾驶之去光晕调研_第12张图片

3.3 软硬件结合方案

结合3.1和3.2.

三、其它自动驾驶夜晚红绿灯方案

红绿灯模块根据自身的位置查找地图,可以获得前方红绿灯的坐标位置。通过标定参数,可以将红绿灯从世界坐标系投影到图像坐标系,从而完成相机的自适应选择切换。选定相机后,在投影区域外选取一个较大的感兴趣区域,在其中运行红绿灯检测来获得精确的红绿灯框位置,并根据此红绿灯框的位置进行红绿灯的颜色识别,得到红绿灯当前的状态。得到单帧的红绿灯状态后,通过时序的滤波矫正算法进一步确认红绿灯的最终状态。我们提出的基于CNN的红绿灯的检测和识别算法具有极高的召回率和准确率,可以支持白天和夜晚的红绿灯检测识别。

你可能感兴趣的:(CV,自动驾驶,自动驾驶,人工智能,去光晕)