Retinex图像增强和暗通道去雾的关系及其在hdr色调恢复上的应用

很多人都认为retinex和暗通道去雾是八杆子都打不着的增强算法。的确,二者的理论、计算方法都完全迥异,本人直接从二者的公式入手来简单说明一下,有些部分全凭臆想,不对之处大家一起讨论。

首先,为描述方便,后面所有的图像都是归一化到[0,1]的浮点数图像。

Retinex的公式就是:

J=I/L                                                                                         (1)

其中,J是所求的图像,I是观测图像,L是估计的光照图像。注意,由于有J、I、L的值都在区间[0,1]内,则有L>=I成立。(这里使用符号J和I,而不是常规的R和S,主要是为了和暗通道公式保持一致,便于比较)

暗通道去雾的公式为:

J=(I-A)/t+A                                                                                  (2)

其中,A是光照值,t是透射率。如果我们定义遮罩图像V1, 并令t=1-V1/A, 将其带入上面公式,则有:

J = (I-V1)/(1-V1/A)                                                                       (3)

一般有I>=V1, 由于光照A的值一般都偏大,接近于1,那么上面公式再次简化为:

J = (I-V1)/(1-V1)                                                                           (4)

仔细观察公式(1)和(4),你发现相似之处了吗?

在公式(1)中,I值介于0和L之间,其作用就是将I线性拉伸到[0,1]之间,公式(4)中,I值介于[V1,1]之间,其作用也是将其值线性拉伸到[0,1]之间。

所以,二者是类似的。

如果现在图像I值介于[V1,L]之间,那么自然地恢复公式是:

J = (I-V1)/(L-V1)                                                                           (5)

如果直接套用上面公式到普通图像,效果很容易增强太过,毕竟难以找到又有较强雾霾有光照不足的场景。什么图像合适呢?标题已经点明了,HDR图像。V1也就是我前几天说的暗边界,L就是亮边界,三个RGB通道可以共用暗边界,但L要各自计算。此外,hdr的预处理也非常关键,比如进行对数操作,最后要采用非线性归一化操作。

话不多说,下面上图。左边是Luminance-HDR软件的结果,右边是我的增强结果。

软件EXE下载地址:http://pan.baidu.com/s/1cxKU0u

程序采用python实现,未经性能优化,exe中打包了python及numpy wxpython opencv等重量级模块,故体积较大,如杀毒软件误报为病毒,请信任运行。

时间: 2024-12-25 16:39:31

Retinex图像增强和暗通道去雾的关系及其在hdr色调恢复上的应用的相关文章

基于暗通道去雾算法的实现与优化(二)opencv在pc上的实现

上一篇中,学习了何的论文中的去雾方法,这一篇中,我按照何的论文思路借助opencv 2.4.10 进行了实现,效果的确很好,就是耗时太多了,效果见下图:蓝色圆圈代表大气光值的取值点. 突然发现上一篇中忘了介绍大气光值A的求解了,论文中是这样做的: 1.首先取暗通道图中最亮的千分之一的像素点. 2.根据这些像素点的位置在原图中搜索一个最亮的点,这个点的强度(intensity)就是我们要求的A啦. 论文作者何认为这样做的好处就是避免了原图中比较亮的物体作为A的值,比如图片中的白色的汽车,如果从原图

暗通道去雾算法的python实现

何凯明博士的去雾文章和算法实现已经漫天飞了,我今天也就不啰里啰唆,直接给出自己python实现的完整版本,全部才60多行代码,简单易懂,并有简要注释,去雾效果也很不错. 在这个python版本中,计算量最大的就是最小值滤波,纯python写的,慢,可以进一步使用C优化,其他部分都是使用numpy和opencv的现成东东,效率还行. import cv2 import numpy as np def zmMinFilterGray(src, r=7): '''最小值滤波,r是滤波器半径''' if

基于暗通道的图像去雾

该算法基于雾图像成像模型:其中,I(X)就是待去雾的图像,J(x)是我们要恢复的无雾的图像,A是环境光, t(x)为透射率.现在的已知I(X),求目标值J(x).其中环境光A的计算,参考暗通道去雾算法.定义F(x,y)为图像的雾浓度,对应于模型中的A(1-t(x)). 计算F(x,y) 第一步: function SD = MyCloud( IM ) %MYCLOUD Summary of this function goes here % Detailed explanation goes h

retinex图像增强算法的研究

图像增强方面我共研究了Retinex.暗通道去雾.ACE等算法.其实,它们都是共通的.甚至可以说,Retinex和暗通道去雾就是同一个算法的两个不同视角,而ACE算法又是将Retinex和灰度世界等白平衡理论相结合的产物.下面将依次讨论,每个算法写一个心得,欢迎拍砖. 今天先写Retinex.Retinex理论认为,人眼观测到的图像S是光照图像L和物体反射图像R的乘积.而R才是真实的恒常性的图像,但是怎么从观测图像S中计算R呢?这是个病态问题,根本不可解.研究者就通过加以一定的约束条件,比如光照

《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果

本文完全转载:http://www.cnblogs.com/Imageshop/p/3281703.html,再次仅当学习交流使用.. <Single Image Haze Removal Using Dark Channel Prior>一文中图像去雾算法的原理.实现.效果(速度可实时) 本文算法合作联系QQ: 33184777, 非诚勿扰 邮件地址:   [email protected] 最新的效果见 :http://video.sina.com.cn/v/b/124538950-125

图像去雾

背景 关于雾霾(Haze Image) 在雾天环境中, 由于大气中存在随机介质, 如悬浮颗粒.雾.霾等, 光从物体表面反射到达相机的过程会发生散射偏离了原来的传播路径而衰减. 雾霾图像特征 低可见度 色彩暗淡 低对比度 雾霾图像 背景知识 物理模型 I=Jt+A(1?t)(1) 这里I是有雾图像,J是清晰图像,t是透射率图,A是大气光值. 暗通道先验(Dark channel Prior) 由于不知道透射率t和大气光值,因此这里需要一些先验知识.何凯明等人基于对无雾清晰图像提出暗通道算法,即对图

高级图像去雾算法的快速实现(转载)

原文:http://blog.csdn.net/laviewpbt/article/details/11555877 最新的效果见 :http://video.sina.com.cn/v/b/124538950-1254492273.html 可处理视频的示例:视频去雾效果 在图像去雾这个领域,几乎没有人不知道<Single Image Haze Removal Using Dark Channel Prior>这篇文章,该文是2009年CVPR最佳论文.作者何凯明博士,2007年清华大学毕业

避免图像去雾算法中让天空部分出现过增强的一种简易方法。

在经典的几种去雾算法中,包括何凯明的暗通道去雾.Tarel的基于中值滤波的去雾以及一些基于其他边缘保留的方法中,都有一个普遍存在的问题:即对天空部分处理的不好,天空往往会出现较大的面积的纹理及分块现象.究其主要原因,还是因为天空部位基本上是不符合暗通道去雾先验这个前决条件的.目前,针对这一问题,我搜索到的主要有以下几篇文章进行了处理: 1. 改进的基于暗原色先验的图像去雾算法 作者: 蒋建国\侯天峰\齐美彬   合肥工业大学 2011. 2.Single image dehazing Algor

暗通道优先的图像去雾算法(上)

?? 11.1  暗通道优先的图像去雾算法 图像增强与图像修复二者之间有一定交叉,尽管它们一个强调客观标准,一个强调主观标准,但毕竟最终的结果都改善了图像的质量.图像去雾就是这两种技术彼此交叉领域中最典型的代表.如果将雾霾看作是一种噪声,那么去除雾霾的标准显然是非常客观的,也就是要将图像恢复至没有雾霾下所获取的情况.但是如果将在雾霾环境下拍摄的照片就看作是一种图像本来的面貌,那么去雾显然就是人们为了改善主观视觉质量而对图像所进行的一种增强.早期图像去雾的研究并没有得到应有的重视,很多人认为它的实