图像暗角阴影去除算法

暗角的概念

暗角一词属于摄影术语,是指一幅图像的四周的亮度或饱和度相比于中间部分的降低,画面四角有变暗的现象。暗角对于任何相机设置或镜头都不可避免。当然有时会故意引入暗角这种效果。

产生暗角的原因

(1)边角的成像光线与镜头光轴有较大的夹角是主要原因。沿着视场边缘的光线的前进方向看光圈,由于光线与光圈所在的平面有夹角,看到的光圈是椭圆的,所以通光面积减小。镜头光心到胶片的边缘距离较大,同样的光圈直径到达底片的光线夹角较小,亮度必然减小。同理,同样的光线偏角,对于边角光线位移较大,等价于照在较大的面积上。而面积是与位移的平方成正比的,所以综合上述原因,边缘亮度与光线和光轴夹角的cos值的4次方成正比。换句话说,广角镜头的边缘亮度随着视角变大急剧下降。


(2)长焦镜头,尤其是变焦长焦镜头,镜片很多,偏离光圈比较远的镜片为了能让边角光线通过,这些镜片必须很大。为了降低成本,缩小了这些镜片直径,造成边角成像光线不能完全通过,降低了边角的亮度。
(3)边角的像差较大。为了提高像质,某些镜片的边缘或专门设置的光阑有意挡住部分影响成像质量的边缘光线,造成边角失光。

暗角的分类

(1)自然暗角:表现为照片四角平缓暗化的渐变效果,这主要是由不同位置的光照进相机传感器的角度不同造成的。这种类型的照片暗角在用广角镜头拍摄的时候最为明显。:
(2)光学暗角:渐变同样也很平缓,但是它形成的主要原因是由镜头的固有特性,或者由镜筒自身的阴影造成。光学暗角也最终决定了一个镜头的成像圈的尺寸。这种暗角多在使用大光圈的情况下出现,并且受特定的镜头设计的影响很大。
(3)机械暗角:通常非常突兀,且只存在于照片的四角,通常是由遮光斗、滤镜环或其他安置在镜头前的遮光器材造成的。这种暗角如果由大光圈镜头或者变焦镜头来拍的话渐变效果就会略微平缓一些,没有那么突兀,也可以使用长焦从而避免这种效果。

po几张带暗角效果的原始图像:



去暗角算法

去阴影的算法有多种,例如参考【7,8】里的方法,本文主要讨论基于熵的去暗角算法,在论文《Retrospective shading correction based on entropy minimization》【1】中介绍了基于熵最小化的阴影校正(暗角自然也是一种阴影形式)方法,另外论文【2】《Single-Image Vignetting Correction by Constrained Minimization of log-Intensity Entropy》进一步讨论了论文【1】中方法的局限,主要是指局部最优的问题,并提出了一种基于对数熵的方法,这里大概讲述一下论文【2】中方法的思路,另见参考[4]。其主要内容有三部分:一是关于对数熵的评价准则;二是阴影去除方法的建模;三是模型参数的优化,使得熵值最小。

(1)对数熵

关于熵的概念,有点抽象,在维基里有很详细的解释,请参见:https://en.wikipedia.org/wiki/Entropy,这里只po一下连续随机变量的信息熵公式:

,

其中,X为图像灰度的分布,f(x)为概率密度函数,当X乘以一个参数c时,熵变为:


当c>1时,ln|c|>0.

(2)暗角建模

首先将灰度进行对数映射:

即将[0,255]的像素值基于对数关系映射到[0, N-1]内,通常N取256,这样映射后的像素范围还是[0,255]。映射后的直方图为:

那两个数学符号了,是向上取整和向下取整的意思,作和是一种线性权重取值方式。此时的对数熵直方图由于巨大的色阶调整,会出现直方图信息缺失,需要进行高斯平滑得到新的直方图。经过高斯平滑后的离散熵为:

论文给出的阴影函数反函数,也称增益函数g 为:

, g的范围为:1<g<1

其中,(x,y)是图像点坐标,x,y均值表示图像的中心位置。可以看到,当r=0时,校正系数=1,即无需校正。当r=1时,校正系数为1+a+b+c。经过暗角校正后的图像就为:


图像从暗角的中心点到四周是逐渐变暗的,函数g是随着r单调递增的,因此函数g的一阶导数大于0,即:

,由r>0,可以得到:

,令q2=r,那么转换为:

,方程解为:

,根据g在所属范围内的单调递增特性,推出C1~C5,并保证了r=0和1时,g>0,并且在范围0~1内,g不等于0;


(3)参数最优化

在第二部分,建立暗角模型后,问题便转化为一个最优化问题,最优条件是调参使得对数熵最小。文中介绍的求最优方法是爬山法:即从一个随机的初始解开始,逐步找到一个最优解。 因为模型中有多个参数,通过爬山法逐步获得最优解的过程中可以依次分别将某个参数的值增加或者减少一个单位。

算法实现:(待完成)

参考:

  1. https://en.wikipedia.org/wiki/Vignetting
  2. http://blog.csdn.net/omade/article/details/17449471
  3. http://www.xinpianchang.com/e881
  4. http://www.cnblogs.com/Imageshop/p/6166394.html
  5. http://blog.csdn.net/grafx/article/details/68958815
  6. 《Single-Image Vignetting Correction by Constrained Minimization of log-Intensity Entropy》[J].IEEE
  7. 《Single-Image Vignetting Correction》[J].IEEE
  8. 《Single-Image Vignetting Correction Using Radial Gradient Symmetry》[J].IEEE
### 360度影像拼接车辆模型底部盲区阴影过大解决方案 在处理360度影像拼接过程中,车辆模型底部盲区的阴影过大会严重影响视觉效果和用户体验。为了改善这一情况,可以采取多种技术手段相结合的方法。 #### 图像预处理阶段调整曝光补偿 通过调节摄像头参数,在采集图像前设置合适的曝光时间与增益值,使得拍摄到的画面亮度更加均匀合理[^1]。对于容易形成暗角的位置给予额外光照补充,减少因光线不足造成的黑色区域扩大现象。 ```python import cv2 def adjust_exposure(image, exposure_compensation=1.5): lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB) l_channel, a, b = cv2.split(lab) # Applying CLAHE to lightness channel only clahe = cv2.createCLAHE(clipLimit=exposure_compensation, tileGridSize=(8, 8)) cl = clahe.apply(l_channel) # Merge the CLAHE enhanced L-channel with original A and B channels merged_lab = cv2.merge((cl, a, b)) final_image = cv2.cvtColor(merged_lab, cv2.COLOR_LAB2BGR) return final_image ``` #### 利用车身姿态传感器数据校正投影变形 当汽车处于倾斜状态时,地面部分会出现不同程度扭曲失真状况,进而影响合成后的整体美观程度。借助安装于车身内部的姿态感应装置获取实时倾角信息,并据此动态修正各视角间相对位置关系,从而达到自然过渡的效果。 #### 合成算法优化去除多余遮挡物 针对特定场景下可能出现固定物体干扰问题(如轮胎),可采用基于深度学习的目标检测框架识别并剔除这些元素后再执行最终融合操作;另外还可以利用语义分割网络对不同类别像素点赋予权重系数,优先保留重要特征的同时削弱次要因素的影响力度,使整个画面看起来更为清晰通透。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值