暗角的概念

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

产生暗角的原因

(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

图像暗角阴影去除算法相关推荐

  1. 脑部CT检查图像检查床去除算法

    1. 前言 对于脑部肿瘤的诊断通常会拍摄患者CT与MRI两种类型的图像,之后结合起来进行分析.但是CT图像中就会出现检查床的区域,首先来看CT扫描设备是什么样子的 可以在图中看到,在头部位置安装有固定 ...

  2. 图像的阴影检测消除和图像重建算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...

  3. 图像恢复系列之(6)超分(7)反光去除(8)光斑去除 (9)阴影去除(10)水下图像失真去除 | ICCV2021生成对抗GAN...

    六.图像恢复-超分 20.Fourier Space Losses for Efficient Perceptual Image Super-Resolution 许多超分辨率 (SR) 模型仅针对精 ...

  4. CNN阴影去除--DeshadowNet: A Multi-context Embedding Deep Network for Shadow Removal

    DeshadowNet: A Multi-context Embedding Deep Network for Shadow Removal CVPR2017 本文使用深度学习CNN网络来进行阴影去除 ...

  5. 单波段遥感图像薄云去除与云检测

    单波段遥感图像薄云去除与云检测 一.背景 二.两种薄云去除方法 1.同态滤波法 参考代码 实验结果 2.小波变换法 参考代码 实验结果 3.评价方法 主观评价法 信息熵评价法 三.两种云检测方法 1. ...

  6. CVPR2022-利用3D合成数据进行人像眼镜和阴影去除

    (说明:如果您认为下面的文章对您有帮助,请您花费一秒时间点击一下最底部的广告以此来激励本人创作,谢谢!!!) 许多面部识别技术假设输入面部图像不具有遮挡.如果不满足该假设,则模型的性能会下降.其中一种 ...

  7. 技术详解 | 如何用GAN实现阴影检测和阴影去除?

    作者 | 江亦凡 最近两天刚看到的论文,写一篇文章当做笔记,论文原文取自https://arxiv.org/abs/1712.02478 继去年底Phillip Isola, Jun-Yan Zhu等 ...

  8. 调整图像- 自动对比度、自动色阶算法

    调整图像- 自动对比度.自动色阶算法 我们以24位彩色图像为例说明这两个算法. 在执行两个算法之前,我们需要确定两个参数,大家在用PS时选择自动色阶并不会弹出什么参数设置对话框,那是因为PS把这个隐藏 ...

  9. 一种改进的高光谱图像CEM目标检测算法

    一种改进的高光谱图像CEM目标检测算法 人工智能技术与咨询 来源:< 应用物理> ,作者付铜铜等 关键词: 高光谱图像:光谱重排:CEM算法:目标检测: 摘要: 约束能量最小化(Const ...

最新文章

  1. 钱学森最后一次系统谈话:大学要有创新精神
  2. jquery的sortable拖拽排序插件,顺序没发生改变则不请求
  3. mysql数据库教程外联_MySQL--外联语句练习
  4. WPF 4 Ribbon 开发 之 标签工具栏(Tab Toolbar)
  5. 在程序中设置最小化、最大化、关闭按钮
  6. linux——管理系统设备之LVM的管理
  7. B+/-Tree原理及mysql的索引分析
  8. 在Spring中使用JMS
  9. uninitialized_copy测试代码示例
  10. linux virtualhost不能正常运行,造成网站无法正常运行的4个原因!
  11. html和css哪个优先,CSS3 | 样式和优先级
  12. SpringIOC容器-对象依赖
  13. 和华为云一起做件“伟大的事”,24万奖金等你来!
  14. 无心剑随感《译诗但求达意传神》
  15. 天然气压缩因子计算软件_测量天然气用什么流量计?
  16. 2018-2019-2 20165313 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
  17. 为什么总说程序员是吃青春饭的? 32岁程序员直接被面试官送走?
  18. 分页存储逻辑地址转物理地址
  19. android activity 实际,如何整合Zxing条形码扫描器而不安装实际的zxing应用程序(无法解析符号:.android.CaptureActivity)?...
  20. Web APIs 简介、DOM

热门文章

  1. 0. Office Web Apps简介
  2. 硬件基础知识---(8)如何选取 电容
  3. 图神经网络框架DGL实现Graph Attention Network (GAT)笔记
  4. 奶牛与农夫John与oj
  5. 计算机管理 看内存个数,如何知道/查看内存槽数
  6. java unicode 藏文_UNICODE 区域对照表
  7. 《用户体验设计:100堂入门课》20190920
  8. a标签实现文件下载(ie8可用)
  9. 山水印|竹林野茶:万丈红尘三杯酒,千秋大业一壶茶
  10. 马自达CX-5,中控台的点烟器没电