中文版综述github
一、光晕类型
-
常见去光晕算法的光晕
-
去光晕算法的光晕之二(汇总)
样式包括有: halos(色圈), streaks(条纹), bright lines(亮线), saturated blobs(深污点), color bleeding(色渗), haze(烟雾), and many others。
二、光晕成因
一个理想的相机,当对焦时,应该支持从单个点光源射出的所有光线都可折射收敛到同一点(灰色)。
在实际中,真实的镜头散射和反射光沿着计划之外的路径,导致了光晕(蓝色和橙色)。
尽管这些光晕是无处不在的,在大部分图像中都是微不足道的。但是 当一个亮光源比其他部分亮度高几个量级时,这些小部分的散射和折射光会导致视觉上的光晕。
光晕主要分为两种: 散射导致的和折射导致的。
-
散射光晕
- 来源: 镜头瑕疵。包括工业瑕疵(例如压痕)、正常磨损(例如灰尘或刮痕)。
- 成因: 大部分光线折射,而少部分光线散射或衍射,而不是沿着他们的既定路径. 灰尘导致类似于彩虹的效应,而刮痕导致放射性的条纹。散射也会降低光晕附近的对比度,导致朦胧的现象。
-
反射光晕:
来源: 在实际的镜头系统中,每个空气-镜片交界面会有 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
- 方案:
检测光晕 -> 恢复原图
1. Multiple Thresholding: 将图像转换为灰度图,使用一系列阈值进行二值化。
2. Contour Detection: 对每个二值化的图,找到轮廓。
3. Blob Merging: 计算每个blob的中心,以距离和相似度为度量,对所有二值化图像的blob融合,获取一系列的潜在可能的光晕候选。
4. Flare Candidates Filtering: 对候选框使用一些规则进行筛选。
5. Flare Mask Computation: 计算Flare Mask
3.2.2 Automatic Flare Spot Artifact Detection and Removal in Photographs. 2021
主要步骤:
- 光源检测
- 光晕点检测
- Blob检测
- 检测光晕点范围
- 拒绝细长的Blobs
- 在光晕点附近过度曝光
- 最终光晕点的置信度度量
- 光晕移除
- 创建光晕点mask
- 移除光晕
3.2.3 Auto Removal of Bright Spot from Images Captured Against Flashing Light Source
主要处理: 太阳光源或/flashing光源下经常在背景出现的bright spot的问题。
原因: 光线通过光圈不完美反射或散射,或者不合适的入射角。
方案: 检测亮点->修复技术填充亮点区域。
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个不同光圈。
- 反射光晕和光晕获取
很难通过精准的光流计算,因此在实验室环境内获取。
-
人造训练集
-
模型训练结果
注意要把光源保留
3.3 软硬件结合方案
结合3.1和3.2.
三、其它自动驾驶夜晚红绿灯方案
红绿灯模块根据自身的位置查找地图,可以获得前方红绿灯的坐标位置。通过标定参数,可以将红绿灯从世界坐标系投影到图像坐标系,从而完成相机的自适应选择切换。选定相机后,在投影区域外选取一个较大的感兴趣区域,在其中运行红绿灯检测来获得精确的红绿灯框位置,并根据此红绿灯框的位置进行红绿灯的颜色识别,得到红绿灯当前的状态。得到单帧的红绿灯状态后,通过时序的滤波矫正算法进一步确认红绿灯的最终状态。我们提出的基于CNN的红绿灯的检测和识别算法具有极高的召回率和准确率,可以支持白天和夜晚的红绿灯检测识别。