Non-Local Image Dehazing_CVPR2016 理解_luo_hao_2的博客-程序员秘密_non-local image dehazing

技术标签: dehazing  算法  cvpr2016  rgb  non-local  

Understanding of Non-Local Image Dehazing_CVPR2016:

Abstract

  1. haze限制了可见性,减小了户外图像的对比度。每个像素的恶化是不同的,取决于场景点到相机的距离,这种独立性由传输系数transmission来表达。
  2. 算法依赖于这样一个假设:haze-free图像的颜色能够由几百个严格的颜色很好地估计,即在RGB空间里形成紧密的clusters。
  3. Non-local 是指每个cluster里的像素经常是非局部的,他们分布在整个图像平面,到相机有不同的距离。
  4. 对于haze,不同的距离有不同的传输系数。这里的距离是指场点到相机的距离。
  5. Haze-line:基于(4)的事实haze-free image里每一个紧密的cluster,在haze image 里变成了RGB空间里的线。用这些haze-line,我们的算法可以恢复the distance map和the haze-free image。

1. Introduction

  1. haze与场景辐射无关,他在得到的图像the acquired image产生两个影响:衰减观测场里的信号,带来了加性分量环境光airlight,ambient light(场景点在无穷处的颜色)。
  2. 由haze导致的图像恶化image degradation随着距离的增加而增强,这是由于场景辐射scene radiance减少而环境光airlight增加。这也是haze image model由来。
    这里写图片描述
  3. 算法的目标是恢复haze-free image(J(x))和transmission(t(x))。那么问题来了。。。。。。这是一个不适定问题。在确定系统下有三个方程但是却至少有四个未知数。这是haze和object radiance固有歧义性的inherent ambiguity。为了解决这样的不适定问题,我们需要增加先验。文章里引入先验知识即是haze-free图像的颜色能够由几百个严格的颜色很好地估计,即!在RGB空间里形成紧密的clusters。
  4. 沿着同一根haze-line的像素对应的对象有相同的辐射颜色。这些对象可以来自距离相机不同的位置。
  5. Patch-based methods

2. Previous Work

  1. 单幅图像去雾方法假设只有输入图像可用并且依赖图像先验。Haze减小图像的对比度,不同的方法都依赖于这个观察来进行图像复原。
  2. 最大化每一patch的对比度,保持全局相关图像(global coherent image);从RGB通道之间的差异估计haze的量,随着雾的增加而减小。这种假设在灰度区域是有问题的;haze区域具有高亮度低饱和的特性。
  3. 一些方法使用图像深度上的先验。
  4. 一些方法假定传输系数和辐射是分段常数。
    The dark channel prior 假设在每一个小的图像patch里都是至少有一个带有dark channel的像素,并用这个最小值来估计当前的haze。(在明亮的地区这个先验靠不住);
    color ellipsoids;
    color lines在RGB空间中每一patch中拟合的,寻找具有恒定传输系数的patch。这个先验是基于观察haze-free image里的像素在RGB空间里构成的color lines。这些线通过原点,并源自从对象内部的明暗变化;
    局部衰落效应。

3. Non-Local Colors in Hazy Images

3.1 Haze image model
这里写图片描述
传输系数t(x)和距离相关:
这里写图片描述
衰减系数β依赖于波长,因此,每一个颜色通道里的传输系数是不同的。为了减少未知量,假设这种依赖性忽略不计。对于每一个像素点x,有三个观测I(x),却有四个未知量J(x),t(x)(假设每个颜色通道里的传输系数是相同的)。

3.2 The prior
1. 我们的方法是基于这样的观察,图像中不同颜色的数量比像素的数量级小得多。我们使用K-means对图像的RGB像素值进行聚类,最大500个簇。然后用每个簇的中心来代替图像中的每一个像素。结果是依附图像中至多有500个RGB值(比图像大小小至少2个数量级)。
2. PSNR用来量化后图像的质量。
3. 在存在haze的情况下,属于相同颜色cluster的目标点最终获得不同的颜色,因为他们分布在整个图像上,到相机有不同的距离。

4. Haze Removal

4.1 finding haze-lines
这里写图片描述
文章中airlight A用先前的方法进行评估。在2017 ICCP中作者提出了一种新的估计方法。(3)将3D RGB坐标解释为以airlight为原点。
这里写图片描述
由(1),(3)得到(4),并表示为球坐标系:
这里写图片描述
在球坐标系里我们定义,改变传输系数t,仅仅影响r(x),不会影响角度。换句话说,在球坐标中具有相同角度[φ(x), θ(x)]的像素,他们在haze-free image具有相同的RGB值。
这里写图片描述
因此,如果角度[φ(x), θ(x)]相同,像素属于同一根haze-line。在每一根haze-line里的像素,以很大的概率在haze-free image具有相同的值。
应当注意的是,在color和haze for colors 具有歧义性:
这里写图片描述
这样会导致两种颜色簇被映射到同一haze-line上。
为了确定哪些像素是在同一haze-line上,像素应该根据角度分类。文章里说,2D 均匀采样,即对[φ(x), θ(x)]进行均匀采样不会产生一个球体的均匀采样。会导致极性稠密的问题(大量的采样点聚集在极性)。因此,我们均匀采样单位球体。每一个顶点对应一根haze-line。然后我们基于像素的角度进行分类,根据表面上最近的采样点。文章里用KD-tree的方法进行快速查询。
4.2 Estimating initial transmission
对于给定的haze-line,r(x)取决于目标距离,(5)的距离就是r(x):
这里写图片描述
t= 1时,最大辐射候选:
这里写图片描述
(8),(9)得到传输系数表达式:
这里写图片描述
现在的问题是怎样找到rmax 的估计r ˆmax:如果一根haze-line里包含一个haze-free的像素,那么
这里写图片描述
我们假设距离airlight最远的像素是haze-free的,这样的像素存在于每一根haze-line里。这种假设对于整张图片是靠不住的,因此需要正则化步骤来补偿。
这里写图片描述
4.3 Regularization
因为辐射J为正数,所以得到在传输系数上给定一个更低的边界条件:
这里写图片描述
文章采取这种边界条件:
这里写图片描述
上文说道(12)中的估计在整张图像上是靠不住的,其中的一个原因是(12)是对像素单独操作,没有利用空间域的相关性。这种估计会不精确,如果少量的像素背映射到一个特殊的haze-line上,或者在非常haze的区域,距离r(x)小到角度[φ(x), θ(x)]被噪声影响。平滑smooth可以增加空间域的相关性。
文章中说明传输系数映射transmission map应给被平滑smooth,除了深度的不连续性。文章找到了一种transmission map t ˆ(x) 和(14)相同,并且当输入是平滑的这种映射也是平滑的。即最小化下面的方程:
这里写图片描述
σ(x) 是t ˜LB的标准差,由每一条haze-line进行计算。他扮演着一个非常重要的角色,因为他使在像素上的估计变得可靠。当σ(x)很大时,初始化的估计变得不可靠。σ(x)随着在haze-line里的像素数量的减小而增加。当给定的haze-line radii 分布(半径上的分布)很小时,我们的haze-line也不可靠,因为我们观测不到带有不同haze的像素。这种情况下,σ(x)也是增加的。
4.4 Dehazing
当(15)计算出来transmission map t ˆ(x),可以进行去雾化:
这里写图片描述

未完待续。。。。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luo_hao_2/article/details/78603772

智能推荐

二叉树(先序中序后序java实现)_坤仔~的博客-程序员秘密

二叉树(先序中序后序java实现)代码实现: ** * 二叉树(先序中序后序) */ public class Tree {private void preOrder(Node node){ if(node!=null){ System.out.println(node.data); preOrder(node.g...

Go语言 通过文件流判断文件头来识别文件类型_weixin_34402408的博客-程序员秘密

系统中需要用到文件上传的功能,但是从系统安全的角度上来说需要判断上传文件的格式,防止将病毒木马等有害的文件上传到服务器上。判断文件类型有三种方式1、通过文件后缀名这个方法简单容易,但是也是最容易被欺骗的方法,修改文件的后缀名即可实现欺骗系统。2、通过Content-Type判断这个是通过判断文件的MIME类型进行判断,我们在通过form表单上传文件时,在上传的request域里面会获取当...

pku_oj: W11-02熄灯问题(C++)_banshan4622的博客-程序员秘密

问题描述:有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行,每个按钮的位置上有一盏灯当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左 边, 右边)的灯都会改变一次如果灯原来是点亮的, 就会被熄灭如果灯原来是熄灭的, 则会被点亮输入:输入一个案例,案例由5行组成, 每一行包括6个数字,这些数字以空格隔开, 可以是0或1。0 表示灯的初始状态是熄灭...

python简介_weixin_34018202的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

SVO学习日记-8--2021.2.1_tukey权重函数_梅干菜烧饼的博客-程序员秘密

SVO-8-pose_optimizer–2021.2.1pose_optimizer.h#ifndef SVO_POSE_OPTIMIZER_H_#define SVO_POSE_OPTIMIZER_H_#include <svo/global.h>namespace svo{ using namespace Eigen; using namespace Sophus; using namespace std; typedef Matrix<doubl

tgt服务端流程分析_weixin_34232744的博客-程序员秘密

为什么80%的码农都做不了架构师?>>> ...

随便推点

matlab 中如何使用bwboundaries获取连通区域并求取其轮廓_mjiansun的博客-程序员秘密

[B,L] =bwboundaries(...)说明:1.B是一个 P x 1的数组,其中P代表连通体的个数.B内每一行是一个 Q x 2的矩阵,Q内每一行表示连通体的边界像素的位置坐标(第一列是纵坐标Y,第二列是横坐标X),Q为边界像素的个数.附:引用原文bwboundaries returnsB, a P-by-1 cell array, where P ist

Mybatis新手项目搭建全过程—个人学习笔记-超详细_清风暖云的博客-程序员秘密

叙:之前的学习笔记,存到网上吧,有些放在电脑上被误删了。。。。哎Mybatis新手项目搭建全过程—个人学习笔记-超详细1、MyBatis这个框架是什么?2、MyBatis是做什么用的?3、MyBatis基础配置(干货)3.1、创建一个新项目3.2、项目所需引入的Jar包3.3、创建数据库表3.4、框架配置文件3.5、创建POJO对象3.6、编写测试代码3.7、测试《END》首先,我们要知道...

org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException异常怎么解决?_阿海你个逼仔的博客-程序员秘密

这个异常是Maven中Tomcat依赖的JDK版本与环境变量中的JDK版本不同引起的,可以按照以下步骤解决该异常:右击项目=>选择Maven=>点击Add Plugin在下图箭头指向的空格输入:“Tomcat”(前提你已经重新配置了索引)选择你之前使用的Tomcat版本即可点击OK重新发布一下就可以了:右键项目Run As => Maven Build... =>如有问题,...

VUE iview vue-router 跳转打开新的窗口并传递参数_wjm0519的博客-程序员秘密

第一种方法1.在跳转代码上加上 tag="a" target="_blank"2.亲测有效第二种方法1.通过resolve方法来实现2.按照上面书写格式,路由会跳转到更目录打印结果如下,结果并不是我们想要的3.将resolve下的name参数改成path完美解决...

27-黑马程序员------OC 语言学习笔记--- Foundation02_weixin_33979203的博客-程序员秘密

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------NSArray和NSMutableArrayNSArray代表元素有序,可重复的一个集合,集合中每个元素都有其对应的顺序索引,NSArray只能保存对象,不...

推荐文章

热门文章

相关标签