技术标签: dehazing 算法 cvpr2016 rgb non-local
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.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),可以进行去雾化:
二叉树(先序中序后序java实现)代码实现: ** * 二叉树(先序中序后序) */ public class Tree {private void preOrder(Node node){ if(node!=null){ System.out.println(node.data); preOrder(node.g...
系统中需要用到文件上传的功能,但是从系统安全的角度上来说需要判断上传文件的格式,防止将病毒木马等有害的文件上传到服务器上。判断文件类型有三种方式1、通过文件后缀名这个方法简单容易,但是也是最容易被欺骗的方法,修改文件的后缀名即可实现欺骗系统。2、通过Content-Type判断这个是通过判断文件的MIME类型进行判断,我们在通过form表单上传文件时,在上传的request域里面会获取当...
问题描述:有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行,每个按钮的位置上有一盏灯当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左 边, 右边)的灯都会改变一次如果灯原来是点亮的, 就会被熄灭如果灯原来是熄灭的, 则会被点亮输入:输入一个案例,案例由5行组成, 每一行包括6个数字,这些数字以空格隔开, 可以是0或1。0 表示灯的初始状态是熄灭...
2019独角兽企业重金招聘Python工程师标准>>> ...
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
为什么80%的码农都做不了架构师?>>> ...
[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新手项目搭建全过程—个人学习笔记-超详细1、MyBatis这个框架是什么?2、MyBatis是做什么用的?3、MyBatis基础配置(干货)3.1、创建一个新项目3.2、项目所需引入的Jar包3.3、创建数据库表3.4、框架配置文件3.5、创建POJO对象3.6、编写测试代码3.7、测试《END》首先,我们要知道...
这个异常是Maven中Tomcat依赖的JDK版本与环境变量中的JDK版本不同引起的,可以按照以下步骤解决该异常:右击项目=&gt;选择Maven=&gt;点击Add Plugin在下图箭头指向的空格输入:“Tomcat”(前提你已经重新配置了索引)选择你之前使用的Tomcat版本即可点击OK重新发布一下就可以了:右键项目Run As =&gt; Maven Build... =&gt;如有问题,...
第一种方法1.在跳转代码上加上 tag="a" target="_blank"2.亲测有效第二种方法1.通过resolve方法来实现2.按照上面书写格式,路由会跳转到更目录打印结果如下,结果并不是我们想要的3.将resolve下的name参数改成path完美解决...
SecureCRT的下载、安装
黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------NSArray和NSMutableArrayNSArray代表元素有序,可重复的一个集合,集合中每个元素都有其对应的顺序索引,NSArray只能保存对象,不...