可管理录制的言传身教,录制去雾效果

     
在精彩的两种去雾算法中,包蕴何凯明的暗通道去雾、Tarel的基于中值滤波的去雾以及一些基于其余边缘保留的法子中,都有八个普及存在的标题:即对天空部分管理的不得了,天空往往会现出非常的大的面积的纹路及分块现象。究其首要缘由,仍旧因为天空部位基本上是不合乎暗通道去雾先验这一个前决条件的。最近,针对这一难题,作者查找到的显要有以下几篇小说举行了管理:

      最新的功力见
http://video.sina.com.cn/v/b/124538950-1254492273.html
 

1、 勘误的基于暗原色先验的图像去雾算法
作者: 蒋建国\侯天峰\齐美彬  
卑尔根金融大学 2011

     
可管理录像的演示:录像去雾效果

原文:http://blog.csdn.net/laviewpbt/article/details/11555877

      二、Single image dehazing Algorithms
based on sky region segmentation, 201叁  王广义
 Madison财经学院(这篇作品就像要到学校里手艺下载);

   
 在图像去雾那个领域,大约从不人不通晓《Single Image Haze Removal Using
Dark Channel
Prior
》那篇作品,该文是二零一零年CVPCR-V最好散文。小编何凯明大学生,2007年浙大高校毕业,201一年东方之珠中文大学博士结束学业,可谓是功力深厚,咋舌于国内部分所谓硕士的水平,何那样的大学生才得以真正称之为Doctor。

 最新的成效见
http://video.sina.com.cn/v/b/124538950-1254492273.html
 

      第2篇文章扩张了三个可控参数K,
用来调整各种像素处的透射率:

    
关于何大学生的片段资料和随想,大家能够访问这里:http://research.microsoft.com/en-us/um/people/kahe/

 
 
 可管理录像的演示:录制去雾效果

 

    
最开头接触何的那篇诗歌是在201一年,说实在的今年,只是随意浏览了下,看到个中的soft
matting进程相比较复杂,并且施行进程极其慢,就不曾什么样大的志趣。最近又神迹十起,仔细研读,认为随想的演绎步骤特别清晰,讲明很成功。恰好适逢浏览到其其余1篇小说《Guided
Image
Filtering
》 ,当中涉嫌了可以用导向滤波来代替soft
matting的进程,且速度非常快,由此,作者对去雾的兴趣算法又大大提升了。
 

   
在图像去雾这几个领域,大概未有人不清楚《Single Image Haze Removal Using
Dark Channel
Prior
》那篇小说,该文是二〇〇八年CVPTucson最好故事集。作者何凯明硕士,200柒年南开东军大学毕业,2011年东方之珠中大大学生结业,可谓是武术深厚,咋舌于国内一些所谓大学生的程度,何这样的博士技艺够真正称之为Doctor。

         
 图片 1

     本文主要上是对《Single Image Haze
Removal Using Dark Channel
Prior》的翻译、整理、及部分解释。如若您的英文水准好,提出看原稿大概来的更加爽些。

    
关于何大学生的片段资料和杂文,我们能够访问这里:http://research.microsoft.com/en-us/um/people/kahe/

 

    一、随想观念的简易描述 

    
最起头接触何的那篇诗歌是在2011年,说其实的特别时候,只是无论浏览了下,看到里面包车型客车soft
matting进程比较复杂,并且奉行进度相当的慢,就未有怎么大的兴趣。如今又神迹10起,仔细研读,认为故事集的推理步骤特别清楚,批注很成功。恰好适逢浏览到其此外壹篇作品《Guided
Image
Filtering
》 ,个中提到了能够用导向滤波来代表soft
matting的进度,且速度飞快,因而,笔者对去雾的志趣算法又大大升高了。
 

     
当|I(x)-A|<k时,以为那一个区域或许是天上,重新计算透射率(增添透射率),|I(x)-A|>k处,则感觉是相符暗通道先验的区域,透射率不改变。

     首先看望暗通道先验是怎么样:

     本文首要上是对《Single Image Haze
Removal Using Dark Channel
Prior》的翻译、整理、及片段解释。假若你的英文水准好,提出看原稿或许来的更加爽些。

     
假使K取值为0,则也就是原来的透射率公式。

      
在大很多非天空的局地区域里,某某个像素总会有起码多个颜料通器具有异常的低的值。换言之,该区域光强度的最小值是个比非常小的数。

    1、杂文观念的简短描述 

     
上面的做法是较为合理的,因为一般意况下大气光A的取值和天上部分应该是可怜类似的,而那多少个符合暗通道的地点则离家天空,关于那一个算法的服从,小编在自家的《Single
Image Haze Removal Using Dark Channel
Prior》一文中图像去雾算法的原理、完毕、效果(速度可实时)
一文的实例工程中1度提供了测试程序。

  我们给暗通道三个数学概念,对于随便的输入图像J,其暗通道能够用下式表明:

     首先看望暗通道先验是哪些:

     
 第二篇文章的笔触则是实行天空分割。对私分后的两有个别透射率做分裂的拍卖,那么那几个的第三就在于天空特征的领到。笔者原来的小说是由此以下多少个步骤来促成的。

                                   图片 2 

      
在许多非天空的壹部分区域里,某有个别像素总会有起码八个颜料通道具备异常的低的值。换言之,该区域光强度的最小值是个相当小的数。

   
 图片 3

      式中Jc代表彩色图像的种种通道 ,Ω(x)表示以像素X为主干的二个窗口。 

  大家给暗通道1个数学概念,对于自由的输入图像J,其暗通道可以用下式表达:

   
 图片 4

   
式(5)的意义用代码表明也很轻松,首先求出每一个像素福睿斯GB分量中的最小值,存入1副和原有图像大小同等的灰度图中,然后再对那幅灰度图进行小小的值滤波,滤波的半径由窗口大小决定,一般有WindowSize
= 二 * Radius + 1;          

                                   图片 5 

 

      暗通道先验的辩驳建议:

      式中Jc代表彩色图像的各个通道 ,Ω(x)表示以像素X为主导的多个窗口。 

   
 图片 6

                                                           
图片 7           

   
式(伍)的意思用代码表明也很简短,首先求出每一个像素CR-VGB分量中的最小值,存入1副和原来图像大小一样的灰度图中,然后再对那幅灰度图举办小小的值滤波,滤波的半径由窗口大小决定,一般有WindowSize
= 二 * Radius + 1;          

  对那多少个步骤我举行了粗糙的点评吧。

     实际生活中产生暗原色中低通道值首要有四个成分:a)小车、建筑物和城市中玻璃窗户的阴影,大概是树叶、树与岩石等当然风景的黑影;b)色彩鲜艳的物体或外部,在昂CoraGB的四个通道中有个别通道的值十分的低(比方群青的草地/树/植物,深紫或紫色的繁花/叶子,也许金红的水面);c)颜色较暗的物体只怕表面,举例灰暗色的树枝和石块。不问可见,自然景象中处处都以影子只怕彩色,这个风景的图像的暗原色总是异常的惨淡的。

      暗通道先验的辩白提出:

     
第一步笔者感到最有价值,间接在原有数据剖断天空不是很好做,小编调查到天上部分完全来说是比较平缓的,也正是附近像素之间调换相当小,由此用梯度来代表则更易于辨别,梯度值越小则注明图像那1块越光滑。

     
大家抛开故事集中列举的那么些例子,自身从英特网找几幅未有雾的风景照,看看结果如下:

                                                         
  图片 8           

     
第二步则设定三个阈值来初阶剖断某处是不是属于天空,这么些阈值作者取的是0.0二,量化到unsigned
char范围则着力对应5。

   图片 9    
图片 10

     实际生活中产生暗原色中低通道值首要有多少个要素:a)汽车、建筑物和都市中玻璃窗户的黑影,只怕是树叶、树与岩石等当然山水的影子;b)色彩鲜艳的实体或外部,在ENVISIONGB的多少个通道中微微通道的值十分的低(比如黑灰的草地/树/植物,红棕或金红的繁花/叶子,只怕月光蓝的水面);c)颜色较暗的物体大概表面,比方灰暗色的树枝和石块。不问可见,自然风光中四处都以影子也许彩色,那个风景的图像的暗原色总是十分的惨淡的。

     
第二步对早先的界线实行下小范围的扩充。

   图片 11    
图片 12

     
大家抛开诗歌中列举的那么些例子,本身从互连网找几幅没有雾的风景照,看看结果如下:

     
第5步对细分后的图的各样联通区域计算其原始图像在对应地方的像素的平均亮度,假使过量阈值T则保留,T这里作者取0.8一,对应整数205左右。

   图片 13    
图片 14

   图片 15 
   图片 16

     
第5步取符合第五步条件的最大的联通区域作为识其余苍天区域。

                     
一些无雾的图样                                                                               
  其暗通道

   图片 17     图片 18

     
第肆步是为了防止部分漏检点,把在天空区域广阔的有些像素在更为拓展分辨,符合条件的则加到天空区域中。

在探望一些有雾的图的暗通道:

   图片 19     图片 20

     
第10步是有的被完整包涵在天上中还未被感觉是天空的小区域增添到天空中。

   图片 21  
图片 22

                     
一些无雾的图片                                                                               
  其暗通道

   
 个人以为,除了第二步、第一步、第6步有不可缺少外,别的的没有须要如此管理。非常是第5步的拍卖会导致天空部位的漏检。比如上面包车型地铁流程暗指图的原图,若是用上述措施势必会促成左上角处小部分天空完全不见掉。别的二个标题就是,联通区域的企图如故相比较耗费时间的。

   图片 23  
图片 24

在探望一些有雾的图的暗通道:

     作者的做法是: 

          一些有雾的图片                                                                              
   其暗通道

   图片 25   图片 26

   
 一、将图像调换为灰度:这里为保留越来越多的边缘消息,能够思虑动用全数比较度保留效用或分明性保留功效的一些去色算法。

  上述暗通道图像均运用的窗口大小为一5*一五,即最小值滤波的半径为7像素。

   图片 27   图片 28

   
 二、求灰度图像的梯度消息(其实就可以用常用的部分边缘检查评定算子完结);

     
由上述几幅图像,能够有目共睹标来看暗通道先验理论的普及性。在小编的杂谈中,总括了伍仟多副图像的特点,也都基本吻合那个先验,由此,大家能够感到实际一条定律。

          一些有雾的图样                                                                              
   其暗通道

   
 三、对梯度新闻进行适宜的去噪和滤波;

     
有了那个先验,接着就必要进行部分数学方面包车型大巴推理来最后消除难点。

  上述暗通道图像均采取的窗口大小为一伍*一5,即最小值滤波的半径为7像素。

   
 肆、根据设定梯度阈值和亮度阈值对梯度新闻举行区分;

  首先,在处理器视觉和Computer图形中,下述方程所讲述的雾图形成模型被广泛利用:

     
由上述几幅图像,能够明显的看出暗通道先验理论的广泛性。在小编的杂谈中,总括了五千多副图像的特性,也都基本吻合那些先验,因而,大家能够以为实际一条定律。

   
 伍、对界别后的图实行高斯羽化管理(可选的)。

                                                  
图片 29

     
有了那几个先验,接着就要求开始展览局地数学方面包车型大巴演绎来最终解决难点。

    整个流程的暗暗表示图如下所示:

 
 当中,I(X)正是大家今后曾经局地图像(待去雾的图像),J(x)是我们要过来的无雾的图像,A是中外大气光成分,
t(x)为透射率。以后的已知条件就是I(X),供给指标值J(x),显明,那是个有大多解的方程,因而,就需求一些先验了。

  首先,在管理器视觉和管理器图形中,下述方程所讲述的雾图形成模型被相近选用:

图片 30  图片 31 图片 32

  将式(1)稍作处理,变形为下式:

                                                
  图片 33

              原图                                    灰度图                                  梯度音讯

                                                   
图片 34

 
 当中,I(X)就是大家今日曾经局地图像(待去雾的图像),J(x)是大家要回涨的无雾的图像,A是天底下大气光成分,
t(x)为透射率。以往的已知条件正是I(X),要求指标值J(x),鲜明,那是个有成都百货上千解的方程,因而,就供给部分先验了。

图片 35 图片 36 图片 37

   
如上所述,上标C表示福特Explorer/G/B多个通道的意趣。

  将式(1)稍作管理,变形为下式:

            稍作去噪                                 初阶天空识别                           
          实行羽化

   
首先即使在每三个窗口内透射率t(x)为常数,定义他为图片 38,并且A值已经给定,然后对式(7)两边求四次最小值运算,得到下式:

                                                 
  图片 39

     
作为相比较,大家在提交几幅图的苍天的辨识作用:

                                 
图片 40

   
如上所述,上标C表示Evoque/G/B四个通道的乐趣。

 
 图片 41
  图片 42

   
上式中,J是待求的无雾的图像,依据前述的暗原色先验理论有:

   
首先若是在每一个窗口内透射率t(x)为常数,定义他为图片 43,并且A值已经给定,然后对式(7)两边求四回最小值运算,获得下式:

 
 图片 44  图片 45

                                              
图片 46

                               
  图片 47

 对于那些基本不设有天空的图,检查评定的结果如下:

     因而,可推导出:

   
上式中,J是待求的无雾的图像,遵照前述的暗原色先验理论有:

 
 图片 48  图片 49

                                                        
图片 50

                                               图片 51

  一片黑,因而,完全不影响结果。

   
把式(10)带入式(8)中,得到:

     因而,可推导出:

     
获得天空区域后,原来的作品作者将天空区域的透射率图统1的设置成了3个固定值,小编感到那样不佳,照旧应该依靠现实的值做适合的革新。
在自个儿上述的操作中,获得的天空去区域是一副蒙版图,有个别点并不一定是全然属于天空或完全不属于。因而,作者就能够依照那个值来+
暗通道求得的值进行一下Alpha掺杂,如下所示:

                                                 图片 52

                                                     
   图片 53

  DarkChannel[Y]= (SkyPresrve *
Sky[Y] + DarkChannel[Y] * (255 – Sky[Y])) / 255 ;    

    那便是透射率图片 54的预估值。

    把式(10)带入式(8)中,得到:

  个中SkyPresrve就就像是于杂文的长久透射率值,是用户钦命的,在上式中,若Sky[255],即完全属于天空,则改点的透射率即为固定值,若Sky[Y]=0,即完全不属于天空,总结式的值不改变,不影响健康去雾。

   
在现实生活中,即便是晴天白云,空气中也设有着部分颗粒,因而,看远处的物体还是可以够认为到雾的熏陶,其它,雾的留存令人类感觉景深的存在,由此,有供给在去雾的时候保留一定水准的雾,这足以经过在式(1一)中引入四个在[0,1]
之间的因子,则式(11)校订为:

                                                 图片 55

     
其它关于大气光值A的猜测,散文提议了以博得的天幕部位的像素的平均值作为A,那也是格外合情的,可是在实质上管理时,针对有个别完全未有天空部分的图像,恐怕检查评定到的苍天区域相当的小(显著属于误检,可是程序不精晓的),那个时候以此为大气光值,也是不创制的。为此,小编的管理情势先计算天空部位计算的A值,然后在检查评定天空像素占整个图像的比重,假如比例小于5%,则照旧以何凯明那种计算A的秘籍展开。

                                              
图片 56

    那正是透射率图片 57的预估值。

     
还大概有一步,散文也关乎了,正是那些校勘的步子都必须在refine阶段在此以前做,简单来说,就是急需在拓展导向滤波前做。那样利用导向滤波的平滑功效,能够将天空和非天空分界部位的不平易现象自然程度上弥补掉);

     本文中装有的测试结果注重于: 
ω=0.95。

   
在现实生活中,尽管是晴朗白云,空气中也设有着有个别颗粒,因而,看远处的物体还能觉获得到雾的震慑,其它,雾的留存令人类感觉景深的留存,由此,有必要在去雾的时候保留一定水准的雾,那足以经过在式(11)中引进二个在[0,1]
之间的因子,则式(1一)校订为:

  为了增强速度,也得以行使作者在何那篇杂文的辨析的博文中的格局,进行下采集样品管理,然后在上采集样品。

    
上述推论中都是一旦全世界达气光A值时已知的,在实际中,我们能够依据暗通道图来从有雾图像中获得该值。具体步骤如下:

                                          
    图片 58

     
作为相比,大家付出直接用何的方法贯彻的效果和用天空识别情势管理的对待效果:

      一)
从暗通道图中遵循亮度的轻重缓急取前0.一%的像素。

     本文中具备的测试结果注重于: 
ω=0.95。

  图片 59 图片 60  图片 61

          二)
在这几个岗位中,在原有有雾图像I中探索对应的全数最高亮度的点的值,作为A值。

    
上述推论中都以一旦满世界达气光A值时已知的,在实际中,大家得以依靠暗通道图来从有雾图像中获取该值。具体步骤如下:

   
  图片 62 图片 63 图片 64

    
到这一步,大家就能够开始展览无雾图像的还原了。由式(1)可见:  J = ( I –
A)/t + A  

      一)
从暗通道图中遵守亮度的大小取前0.一%的像素。

   
  图片 65 图片 66 图片 67

     以后I,A,t都已经求得了,由此,完全能够张开J的乘除。

          2)
在那几个岗位中,在原有有雾图像I中找找对应的全部最高亮度的点的值,作为A值。

   
 图片 68  图片 69 图片 70

     当投射图t
的值比十分的小时,会导致J的值偏大,从而使淂图像整体向白场过度,由此一般可设置一阈值T0,当t值小于T0时,令t=T0,本文中具有机能图均以T0=0.一为业开放式测试算。

    
到这一步,大家就能够进行无雾图像的过来了。由式(一)可见:  J = ( I –
A)/t + A  

   
 图片 71  图片 72 图片 73

     由此,最后的复苏公式如下:

     现在I,A,t都已经求得了,由此,完全能够进行J的计量。

               原图                                    何的去雾                             本文结果(SkyPresrve
=拾0)

                              
 图片 74

     当投射图t
的值很时辰,会变成J的值偏大,从而使淂图像全部向白场过度,因而一般可安装1阈值T0,当t值小于T0时,令t=T0,本文中全部功能图均以T0=0.1为标准总括。

  有上述比较可知,在维护了天上的时候,和天幕交接的位置的去雾程度也适合的有着减弱。

    
当直接用上述申辩实行还原时,去雾的意义实在也是很显明的,举例上面一些例证:

     因而,最后的还原公式如下:

 
 在诗歌的最终,小编也提到了去雾的图像呈现相比较昏暗,为此,做了弹指间甩卖:

   图片 75   
图片 76

                              
 图片 77

     
  图片 78

   图片 79  
 图片 80

    
当直接用上述辩白进行复原时,去雾的功用其实也是很显明的,举例下边一些事例:

  即在HSV空间,对V分量举行CLAHE巩固,然后在转移到帕杰罗GB空间,这种方法对有个别图像确实有很扎眼的增加功用,然而有些图只怕又会增加噪音,由此依旧基于实际处境选用性的拍卖呢。

                
有雾图                                           
 去雾图

   图片 81    图片 82

  示例程序:http://files.cnblogs.com/Imageshop/HazeRemovalWithSkyRecognition.rar

      注意到第二幅图的原图多个字的四周鲜明有1块不协调的位置,而第3图顶端水平方向就像有1块没有进展去雾管理,那一个都是由于我们的透射率图过于粗糙了。

   图片 83  
 图片 84

 
 图片 85

     
要赢得越来越精细的透射率图,何硕士在小说中建议通晓soft
matting方法,能得到一点也不粗致的结果。但是她的二个致命的症结便是速度特慢,不采用于实际行使。在2011年,何博士又除了一片随想,在那之中涉嫌了导向滤波的方法来博取较好的透射率图。该措施的主要进程聚焦于简单的正方模糊,而方框模糊有多种和半径毫不相关的迅猛算法。因而,算法的实用性特强,关于这些导向滤波算法我们在何大学生的网址能够团结去研习下,除了在去雾方面外,还享有别样多地点的选用,那部分本文非常少述。

                
有雾图                                           
 去雾图

 

     使用了导向滤波后的去雾效果:

      注意到第三幅图的原图七个字的四周显然有1块不协和的地点,而第贰图最上部水平方向就如有一块未有进展去雾管理,这几个都以出于大家的透射率图过于粗糙了。

图片 86

  图片 87  
图片 88

     
要赢得越来越精细的透射率图,何大学生在文章中提议驾驭soft
matting方法,能获取非常细致的结果。可是她的一个致命的瑕疵便是速度特慢,不选拔于实际行使。在201一年,何博士又除了一片故事集,个中涉及了导向滤波的点子来收获较好的透射率图。该办法的首要进程集中于轻易的方框模糊,而方框模糊有多种和半径非亲非故的飞速算法。由此,算法的实用性特强,关于那几个导向滤波算法咱们在何大学生的网址能够团结去研习下,除了在去雾方面外,还拥有别样多地方的选用,这1部分本文没有多少述。

****************************小编:
laviewpbt   时间: 201四.八.12    联系QQ:  3318477七转发请保留本行音讯**********************

  图片 89  
图片 90 

     使用了导向滤波后的去雾效果:

  

         
  使用原来的预估透射率图                               
 使用导向滤波后的透射率图

  图片 91   图片 92

  图片 93   
图片 94

  图片 95   图片 96 

               (a)
原图                               
  (b)  去雾结果图

         
  使用原有的预估透射率图                               
 使用导向滤波后的透射率图

  图片 97    图片 98

  图片 99    图片 100

                (c)   
暗通道图                          (d) 导向图
(原始图像的灰度图)

               (a)
原图                               
  (b)  去雾结果图

  图片 101  
 图片 102

  图片 103    图片 104

                (e) 
 预估透射率图                       (f)   使用导向滤波后的透射率图

                (c)   
暗通道图                          (d) 导向图
(原始图像的灰度图)

  2、各参数对去雾结果的熏陶

  图片 105  
 图片 106

  第3:窗口的尺寸。那几个对结果来说是个关键的参数,窗口越大,其富含暗通道的票房价值越大,暗通道也就越黑。大家不去从理论角度深入分析,从进行的意义来看,就如窗口越大,去雾的法力越不分明,如下图所示:

                (e) 
 预估透射率图                       (f)   使用导向滤波后的透射率图

   图片 107   
 图片 108

  二、各参数对去雾结果的震慑

                              (a)
原始图像                            (b)
窗口大小=1壹

  第3:窗口的分寸。这么些对结果来讲是个基本点的参数,窗口越大,其富含暗通道的概率越大,暗通道也就越黑。我们不去从理论角度解析,从举行的职能来看,就如窗口越大,去雾的功能越不显明,如下图所示:

   图片 109  
图片 110

   图片 111   
 图片 112

              (c)
窗口大小=2一                         (d)
窗口大小=10一 

                              (a)
原始图像                            (b)
窗口大小=1一

  笔者的提出是窗口大小在1一-51里头,即半径在伍-贰伍里头。

   图片 113   图片 114

    
式(1二)中的ω具备着显然的含义,其值越小,去雾效果越不醒目,比如如下:

              (c)
窗口大小=二1                         (d)
窗口大小=拾一 

  
图片 115   图片 116

  笔者的提议是窗口大小在1一-5一之间,即半径在伍-2伍之间。

                                    (a)
原始图像                                  
(b)    ω=0.伍         

    
式(12)中的ω具备着显然的意思,其值越小,去雾效果越不显然,比方如下:

  
图片 117   图片 118    

   图片 119   图片 120

                                       (c)   
ω=0.8                                                                  
    (d)    ω=1 

                                    (a)
原始图像                                  
(b)    ω=0.伍         

    叁:编码的步调

   图片 121   图片 122    

  即使你精心的剖析了初稿的细路,加上适当的量的参谋,编码其实并不是很拮据。

                                       (c)   
ω=0.8                                                                  
    (d)    ω=1 

  一)依据原有图像求暗通道,参照他事他说加以调查代码如下:

    叁:编码的手续

    for (Y = 0, DarkPt = DarkChannel; Y < Height; Y++)
    {
        ImgPt = Scan0 + Y * Stride;
        for (X = 0; X < Width; X++)
        {
            Min = *ImgPt;
            if (Min > *(ImgPt + 1)) Min = *(ImgPt + 1);
            if (Min > *(ImgPt + 2)) Min = *(ImgPt + 2);
            *DarkPt = Min;
            ImgPt += 3;
            DarkPt++;
        }
    }

    MinFilter(DarkChannel, Width, Height, Radius);

  如若你细心的深入分析了初稿的细路,加上适当的数量的参阅,编码其实并不是很难堪。

    这里须要专注的是MinFilter算法的飞快实现,提供1篇杂文供有要求的爱人学习:STREAMING
MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER
ELEMENT
 。这几个算法的日子复杂度是O(一)的。

  一)依据原有图像求暗通道,参照他事他说加以考察代码如下:

     
二)按文中所描述的算法自动得到全球大气光的值。

    for (Y = 0, DarkPt = DarkChannel; Y < Height; Y++)
    {
        ImgPt = Scan0 + Y * Stride;
        for (X = 0; X < Width; X++)
        {
            Min = *ImgPt;
            if (Min > *(ImgPt + 1)) Min = *(ImgPt + 1);
            if (Min > *(ImgPt + 2)) Min = *(ImgPt + 2);
            *DarkPt = Min;
            ImgPt += 3;
            DarkPt++;
        }
    }

    MinFilter(DarkChannel, Width, Height, Radius);

     这里表明有些,原始诗歌中的A最后是取原始像素中的某七个点的像素,小编其实是取的符合条件的全体一点的平均值作为A的值,作者那样做是因为,如若是取二个点,则各通道的A值很有十分大希望整个很邻近25伍,那样的话会导致管理后的图像偏色和出现多量色素斑点。原作作者说那几个算法对天空部分不需特备管理,小编实际发现该算法对有天上的图像的功能一般都不佳。天空会并发鲜明的接入区域。作为解决方案,作者扩张了一个参数,最大满世界大气光值,当计算的值超越该值时,则就取该值。
 

    这里须要留意的是MinFilter算法的急速完结,提供一篇杂谈供有供给的爱侣学习:STREAMING
MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER
ELEMENT
 。这一个算法的岁月复杂度是O(一)的。

    图片 123  
图片 124  
 图片 125

     
2)按文中所描述的算法自动获得满世界大气光的值。

                       
原图                                                        
未对A值做限定                  最大A值限定为220

     这里说美素佳儿些,原始散文中的A最后是取原始像素中的某八个点的像素,笔者骨子里是取的符合条件的全部一些的平均值作为A的值,笔者那样做是因为,若是是取3个点,则各通道的A值很有非常的大概率全部很类似255,那样的话会促成管理后的图像偏色和产出大量色素斑点。最初的小说作者说这几个算法对天空部分不需特备管理,小编其实开采该算法对有天上的图像的意义一般都倒霉。天空会并发分明的连接区域。作为消除方案,小编扩张了3个参数,最大全球大气光值,当总结的值抢先该值时,则就取该值。  

       三)
按式(1二)总结预估的透射率图。

    图片 126   图片 127  
 图片 128

  在式(1贰)中,每种通道的数据都亟待除以对应的A值,即归一化,那样做,还存在1个主题素材,由于A的选项进度,并无法确定保证各个像素分量值除以A值后都低于壹,从而导致t的值恐怕小于0,而那是不容许的,最初的文章作者并不曾交代这点是怎么管理的。笔者在事实上的编码中窥见,如若确实这么做了,其效果也并不是很理想 ,因而,小编最后的措施是在式(1二)中,不思虑A的盘算。

                       
原图                                                        
未对A值做限定                  最大A值限定为220

        四)计算导向滤波图。

       3)
按式(1二)计算预估的透射率图。

  
这里能够一直用原始的图像做导向图,当然也得以用其灰度图,但是用CR-VGB导向图在下一步的图谋中会占用十分大的年月。

  在式(1二)中,每一种通道的数额都急需除以对应的A值,即归1化,那样做,还存在3个主题素材,由于A的精选进程,并不可能确认保证每一种像素分量值除以A值后都自愧比不上1,从而导致t的值恐怕小于0,而那是不容许的,原著作者并未交代那或多或少是何许管理的。笔者在实际上的编码中窥见,如若实在这么做了,其效劳也并不是很理想 ,由此,笔者最终的办法是在式(12)中,不考虑A的一个钱打二十多少个结。

        5)按照《Guided Image
Filtering
》故事集中的公式(伍)、(六)、(捌)编码总计获得Mini的透射率图。

        四)计算导向滤波图。

    网络上有这几个算法的
matlab代码可下载的,这里贴部分代码:

  
这里能够一贯用原始的图像做导向图,当然也得以用其灰度图,不过用HavalGB导向图在下一步的预计中会占用相当大的时辰。

  function q = guidedfilter(I, p, r, eps)
  %   GUIDEDFILTER   O(1) time implementation of guided filter.
  %
  %   - guidance image: I (should be a gray-scale/single channel image)
  %   - filtering input image: p (should be a gray-scale/single channel image)
  %   - local window radius: r
  %   - regularization parameter: eps

  [hei, wid] = size(I);
  N = boxfilter(ones(hei, wid), r); % the size of each local patch; N=(2r+1)^2 except for boundary pixels.

  % imwrite(uint8(N), 'N.jpg');
  % figure,imshow(N,[]),title('N');
  

  mean_I = boxfilter(I, r) ./ N;
  mean_p = boxfilter(p, r) ./ N;
  mean_Ip = boxfilter(I.*p, r) ./ N;
  cov_Ip = mean_Ip - mean_I .* mean_p; % this is the covariance of (I, p) in each local patch.

  mean_II = boxfilter(I.*I, r) ./ N;
  var_I = mean_II - mean_I .* mean_I;

  a = cov_Ip ./ (var_I + eps); % Eqn. (5) in the paper;
  b = mean_p - a .* mean_I; % Eqn. (6) in the paper;

  mean_a = boxfilter(a, r) ./ N;
  mean_b = boxfilter(b, r) ./ N;

  q = mean_a .* I + mean_b; % Eqn. (8) in the paper;
  end

        5)按照《Guided Image
Filtering
》随想中的公式(5)、(陆)、(八)编码总结得到Mini的透射率图。

      
由地方的代码,可知,重要的职业量在均值模糊上,而均值模糊是个极高效的算法,关于均值模糊的优化可参照小编此前的稿子:彩色图像高速模糊之懒惰算法。

    网络上有那个算法的
matlab代码可下载的,这里贴部分代码:

      还会有一点正是,上述总结要求在[0,1]限制内开展,也正是说导向图和预估的透射率图都无法不从[0,255]先映射到[0,1]在举办总括。

  function q = guidedfilter(I, p, r, eps)
  %   GUIDEDFILTER   O(1) time implementation of guided filter.
  %
  %   - guidance image: I (should be a gray-scale/single channel image)
  %   - filtering input image: p (should be a gray-scale/single channel image)
  %   - local window radius: r
  %   - regularization parameter: eps

  [hei, wid] = size(I);
  N = boxfilter(ones(hei, wid), r); % the size of each local patch; N=(2r+1)^2 except for boundary pixels.

  % imwrite(uint8(N), 'N.jpg');
  % figure,imshow(N,[]),title('N');
  

  mean_I = boxfilter(I, r) ./ N;
  mean_p = boxfilter(p, r) ./ N;
  mean_Ip = boxfilter(I.*p, r) ./ N;
  cov_Ip = mean_Ip - mean_I .* mean_p; % this is the covariance of (I, p) in each local patch.

  mean_II = boxfilter(I.*I, r) ./ N;
  var_I = mean_II - mean_I .* mean_I;

  a = cov_Ip ./ (var_I + eps); % Eqn. (5) in the paper;
  b = mean_p - a .* mean_I; % Eqn. (6) in the paper;

  mean_a = boxfilter(a, r) ./ N;
  mean_b = boxfilter(b, r) ./ N;

  q = mean_a .* I + mean_b; % Eqn. (8) in the paper;
  end

     
关于guidedfilter中的半径r值,因为在近期实行小小的值后暗通道的图像成壹块壹块的,为了使透射率图更精细,建议这些r的取值十分大于进行小小的值滤波的半径的4倍,如下图所示:

      
由地点的代码,可知,首要的职业量在均值模糊上,而均值模糊是个很便捷的算法,关于均值模糊的优化可参照他事他说加以考察作者原先的稿子:彩色图像高速模糊之懒惰算法。

   
图片 129    
图片 130

      还恐怕有一点就是,上述总括须求在[0,1]界定内开始展览,也正是说导向图和预估的透射率图都不能不从[0,255]先映射到[0,1]在开始展览测算。

          (a) 
r=最小值滤波半径的2倍
                       (b) r=最小值滤波半径的八倍

     
关于guidedfilter中的半径r值,因为在前头举行小小的值后暗通道的图像成1块一块的,为了使透射率图越来越小巧,建议那几个r的取值不低于实行小小的值滤波的半径的四倍,如下图所示:

      能够看出,当r极小的时候,在透射率图中挑咸阳看不到什么细节消息,由此恢复生机处的图像边缘处不明了。

    图片 131  
  图片 132

     
参数eps的取值也装有钟情,他主即便为着避防总计中除以0的荒唐以及为了使得一些总计结果未必过大,一般提出取值0.00一依旧越来越小。

          (a) 
r=最小值滤波半径的二倍
                       (b) r=最小值滤波半径的8倍

     
借使运用的斑块汉兰达GB图做导向图,计算时间上会扩张许多,所的到的透射率图的边缘会比灰度图所拍卖的保存了越来越多的底细,效果上略微比灰度图好,如下所示:

      能够观望,当r非常的小的时候,在透射率图中基本看不到什么细节信息,因而苏醒处的图像边缘处不明了。

    
图片 133  
 图片 134

     
参数eps的取值也负有青睐,他第二是为着防止总计中除以0的失实以及为了使得一些总括结果未必过大,一般建议取值0.00一可能越来越小。

              (a)
原图                                                                               
    (b)预估的透射率图

     
假诺利用的印花TucsonGB图做导向图,总结时间上会增添多数,所的到的透射率图的边缘会比灰度图所拍卖的保存了更加的多的细节,效果上略微比灰度图好,如下所示:

    
图片 135   
图片 136

     图片 137  
 图片 138

                      
(c)使用灰度图为导向图获得的透射率图                      
    (d)使用QashqaiGB图为导向图获得的透射率图

              (a)
原图                                                                               
    (b)预估的透射率图

     图片 139   
图片 140

  
  图片 141    图片 142

           (e)灰度图为导向图对应的去雾效果    
                       
  (f)景逸SUVGB图导向图对应的去雾效果

                      
(c)使用灰度图为导向图得到的透射率图                      
    (d)使用昂CoraGB图为导向图获得的透射率图

       以HavalGB图为导向图的估算中,涉及到三*三片段矩阵求逆的进程,纵然用非matlab语言写,可以先借助于matlab的符号计算功效,以及个中的符号总括命令simple,把计算结果算出来,然后再再其余高端语言中贯彻。

     图片 143    图片 144

       (陆)
按式(2二)实行无雾图像的卷土重来。

           (e)灰度图为导向图对应的去雾效果    
                       
  (f)福睿斯GB图导向图对应的去雾效果

 肆、别的一些去雾效果图

       以LANDGB图为导向图的计量中,涉及到三*3有些矩阵求逆的进度,如果用非matlab语言写,能够先借助于matlab的符号总计功效,以及中间的符号总计命令simple,把总计结果算出来,然后再再其余高等语言中贯彻。

 
图片 145 
图片 146 
图片 147

       (陆)
按式(22)举办无雾图像的过来。

   图片 148  
 图片 149  
图片 150

 4、别的一些去雾效果图

   图片 151   
图片 152  
图片 153

  图片 154  图片 155  图片 156

   图片 157  
 图片 158  
图片 159

   图片 160  
 图片 161   图片 162

                             
原图                                                
去雾效果图                                                     
透射率图

 
 图片 163    图片 164   图片 165

      上海体育地方中最终一副图笔者三番五次做了五回去雾的拍卖。 

   图片 166  
 图片 167   图片 168

      在原著中,有这般壹段话:

                             
原图                                                
去雾效果图                                                     
透射率图

  Since the scene radiance is usually
not as bright as the atmospheric light, the image after haze removal
looks dim. So we increase the exposure of J(x) for
display.

      上图中最终1副图小编连连做了两遍去雾的拍卖。 

     意思正是说直接去雾后的图像会比原来的暗,因而在管理完后须要进行一定的暴露加强,但小编未有注解其是什么样提升的,
由此,这里的图和她杂文的作用有所分化不常间正常的。一般在去雾处理后再用自动色剂之类的算法加强下会获得相比较满意的结果,如下图:

      在原来的文章中,有这么1段话:

     图片 169 
   图片 170  
 图片 171

  Since the scene radiance is usually not
as bright as the atmospheric light, the image after haze removal looks
dim. So we increase the exposure of J(x) for
display.

         
原图                
去雾后              +自动色阶

     意思正是说直接去雾后的图像会比原来的暗,由此在拍卖完后必要开始展览自然的暴露加强,但作者未有认证其是什么样巩固的,
因而,这里的图和她诗歌的意义有所不一样偶然间符合规律的。一般在去雾处理后再用自动色剂之类的算法加强下会获得相比满足的结果,如下图:

     
去雾算法这段时间也颇具众多其余的方法,然而作者所接触的,诸多都是以这几个为根基,由此,先弄会以此为斟酌别的的去雾算法能奠定抓牢的底子。

     图片 172 
   图片 173  
 图片 174

      互连网上有一点相比好的暗原色先验去雾的matlab代码:比方和本文基本对应的matlab能源:http://files.cnblogs.com/Imageshop/cvpr09defog%28matlab%29.rar

         
原图                
去雾后              +自动色阶

  后记:稍微有看了几篇去雾的稿子,基本上都以围绕着收获透视率图做小说,例如一些作品讲用联合双边滤波格局获得Mini的透射率,从本身个人浅薄的认知中,小编感觉去雾已多数跳不出暗原色那一个局面了。

     
去雾算法最近也会有所许多别的的章程,可是本身所接触的,繁多都以以那一个为底蕴,由此,先弄会以此为研商其余的去雾算法能奠定狠抓的功底。

     
小编对互相滤波算法那也做了试验,发现这一个的成效也勉强能够,正是速度慢了无尽,双边滤波的长足算法其实快不起来的,所以这些的实用性不高,笔者选择了有的图像做相比:

      网络上有一点点相比较好的暗原色先验去雾的matlab代码:比方和本文基本对应的matlab财富:http://files.cnblogs.com/Imageshop/cvpr09defog%28matlab%29.rar

     图片 175   
图片 176

  后记:稍微有看了几篇去雾的篇章,基本上皆以围绕着得到透视率图做文章,比方一些作品讲用联合双边滤波格局获得Mini的透射率,从本身个人浅薄的认识中,小编以为去雾已几近跳不出暗原色这几个层面了。

                                    (a)
原图                                                              
(b)   联合双边滤波去雾图

     
作者对双方滤波算法这也做了实验,发掘这些的效应也勉强能够,正是速度慢了广大,双边滤波的长足算法其实快不起来的,所以那几个的实用性不高,小编选用了部分图像做相比:

     图片 177   
图片 178

     图片 179    图片 180

                        (c)
导向滤波获得透射率图                                                  
(d)联合双边滤波透射率图(Sigmad=Sigma本田CR-V=拾0)

                                   
(a) 原图                                                              
(b)   联合双边滤波去雾图

       上海体育场合能够很刚强的见到联合双边滤波的透射率图没有导向滤波的精致,但比原来的粗糙的透射率图依旧好过多,过渡非常的细腻,由此,也能博取正确的视觉去雾效果。

     图片 181    图片 182

      
联合双边滤波器中的算法是参照了OpenCv中相关函数写的。

                        (c)
导向滤波获得透射率图                                                  
(d)联合双边滤波透射率图(Sigmad=Sigma陆风X8=拾0)

     和平平同样,提供2个可供咱们测试效果的程序:
依照暗原色先验的图像去雾演示程序

       上海体育场所能够很备受关注标见到联合双边滤波的透射率图未有导向滤波的Mini,但比原来的粗糙的透射率图照旧好过多,过渡异常的细腻,由此,也能获得精确的视觉去雾效果。

    图片 183

      
联合双边滤波器中的算法是参照了OpenCv中相关函数写的。

   
笔者分别用VB6和C#做了个程序,七个程序都早已由此独家的言语情势张开了优化,算法部分编码是同样的,C#运作速度大致是VB6的壹.8倍。

     和平凡一样,提供一个可供我们测试效果的次第: 依靠暗原色先验的图像去雾演示程序

     在管理速度上,比
matalb的快了多好几倍,在I叁的台式机Computer上,1副十二四*76八的图像去雾时间大约在150ms内(以灰度图为导向图)。

    图片 184

 

   
作者分别用VB陆和C#做了个程序,八个程序都早已由此独家的言语格局展开了优化,算法部分编码是同样的,C#运作速度大致是VB陆的一.8倍。

 5、算法的局限性

 

     
暗原色先验是一种总括的结果,是对大气户外无雾照片(outdoor haze-free
images)的总计结果,如果指标场景内在的就和大气光类似,比如雪地、深青莲背景墙、大海等,则是因为前提条件就不科学,因而一般不或然获得满意的成效,而对此一般的景象照片以此算法能管理的不错。

    

 

    2013.八.二三 后记补充改良:

     在雄起雌伏对该算法的青眼中,开采自个儿在头里做出了一个谬误的剖断,正是关于式(11)中/A的操作。笔者在眼下说那个除法会引起一些难点,由此,去除了这一步。可是后来的推行证明就是有了这一步,对于相比较度低的图像才方可博得很好的去雾高比较度图。

    前边说的/A操作恐怕会导致t的值小于0,这种情况就足以把t的值直接设置为0来缓慢解决。

   
还也有2个业务就是式(1一)严酷的来说是要对原来图像的各种通道举办归1化后,再取各类通道瑞虎/G/B值的纤维值获得中间图,然后对那一个个中图实行点名半径的矮小值滤波后,通过11式收获粗糙的透射率图,那么这么就必要多相当的多总结,笔者在实际上中窥见只要直白用前边的暗通道图/A举行操作,两个的功力差别不引人侧目,由此,可用这种便利的点子。

图片 185  
图片 186

 上图是1副卓越的测试图,即使赢得了相比好的效率,不过就如马路那一块的作用比不上部分别的人公开的结晶那么好。

图片 187  
图片 188

    
那也是壹副相比常见的测试图,该图也是紧用去雾获得结果,未做任何的后甩卖,同CSDN二个的案例库:图像去雾的算法研商中的效果相比较,在整幅图像的对待和和和睦性上都要好八个水准。

    
再如下图,也比CSDN那多少个案例库中的效果要好过多。

 
图片 189  
图片 190

     还有:

图片 191 
图片 192

图片 193  图片 194

   

   计算:笔者对这种去雾算法的功能依然很中意的, 效果和进程都还比较适中。

   附件的测试程序已经联合更新。

   20一三.十,⑩ 后记补充:

    一贯据他们说C的频率非常高,于是用C达成了该算法,并且编写制定了1个可供别的语言调用的dll文件,然后对小小值滤波算法又开展了特殊的优化,算法速度有了极大的滋长,特别是在用VS二零一零时,编写C的代码能够勾选下图中的SSE选项和高速(fp:fast),程序会调用SSE一些函数,实现指令级其他交互。而那么些C#的编写翻译器是力不从心兑现的。

图片 195

    
同样的算法,相对于原来的C#次第,程序的速度能增高1倍左右,对于800*600的图像,在自家的I3的CPU上平均能能达到20fps的进程(只占用了3个核的CPU财富),因而能够适用于不超过该限制内的实时图像管理。

    
同样笔者扩展了3个里头可调的参数供我们测试。

图片 196

     相应的DLL函数注解如下:

     c风格:

void HazeRemovalUseDarkChannelPrior(unsigned char * Src,unsigned char * Dest,int Width,int Height,int Stride, int Radius ,int GuideRadius, int MaxAtom, float Omega,float Epsilon,float T0 )

    c#调用:

 [DllImport("HazeRemoval.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true)]
  private static extern void HazeRemovalUseDarkChannelPrior(byte* Src, byte* Dest, int Width, int Height, int Stride, int Radius,int GuideRadius, int MaxAtom, float Omega, float Epsilon, float T0);

    VB6调用:

Private Declare Sub HazeRemovalUseDarkChannelPrior Lib "HazeRemoval.dll" (ByVal Src As Long, ByVal dest As Long, ByVal Width As Long, ByVal Height As Long, ByVal Stride As Long, ByVal Radius As Long, ByVal GuideRadius As Long, ByVal MaxAtom As Long, ByVal Omega As Single, ByVal Epsilon As Single, ByVal T0 As Single)

     

    
调用实例源代码下载:http://files.cnblogs.com/Imageshop/HazeRemovalTest.rar

 2013.11,22修正: 

  通过同步双边滤波求透射率图的遵守上面包车型大巴不正确的,进最新的钻研结果申明,双边滤波确实也能获得Mini的投射图,比如如故那方面包车型客车测试图像,分化的SigmaS和SigmaRubicon下获得透射率效果如下:

  
图片 197   
 图片 198

          SigmaS=50,SigmaR=30                          
SigmaS=100,SigmaR=30

 

 贰零一肆.一.1二重大更新(可达成实时效果):

   
 何的算法效果以及广大的实用性都比别的的去雾算法要好,而珍视的标题就是其速度照旧非常不足快,有着太多的浮点总计。鉴于此,小编也再3试着对代码举行深档次的优化,包蕴SSE管理、并行运维等,但鉴于算法本人的相继施行,比不大概全程并行,有时1个小函数能够互相,但由于其自己实施就特意快,举例不要5ms,你去用并行算法大概源消耗费时间还有大概会大一些。由此,一贯尚未什么样大的开发进取,对于一副10二四*76八的彩图实行去雾需求90ms,那早晚不也许满意供给。

   
 近期,在揣摩,既然暗通道去雾的透射率图比别的的算法都来的Mini,假使适度的骤降一丝丝其精度,其去雾的效率理论上应有不会有太大的分别,于是自身想开了一种艺术,即求取透射率的时候不是对原图举行求取,而是先对原图进行下采集样品,举个例子缩短为原图的四分一,计算出小图的透射率,之后在经过插值的措施的收获原图大约的透射率,则应该也得以拿走效益。经超过实际行,这种方法大大的升高了进行进程,而且功能和原来的方案基本1致,对于10贰四*76捌的图像差非常少只必要(I3CPU)30ms了,借使越来越取九分之一的缩放,则只须求大概20ms,完全能够满意工业实时性须要高的场子。

   
当然,假使您的裁减周全不是特别大的话,比方减少为本来的0.四分寸,也许一次缩放所用的耗费时间还抵消了总结小图的透射率图所换到的赚钱,由此必须合理合法接纳那个下采集样品率。

   
要促成那样的速度,当然依旧须要异常高的优化技艺的,那个东西依旧具有保存相比好。 

   
作者做了三个先后,集成了本博客中陆种图像去雾的算法: 图像去雾综合版本

图片 199

     

   
用暗通道的算法对1段录制举行了拍卖,大家能够在此地看看成效:http://video.sina.com.cn/v/b/124538950-1254492273.html

 
  图片 200

****************************作者:
laviewpbt   时间: 20壹3.八.二3    联系QQ:  3318477柒 转发请保留本行音讯********************

 

 

 写博不易,土豪请打赏,土冒一分也是爱(非强制供给):

 

     在管理速度上,比
matalb的快了点不清倍,在I叁的笔记本计算机上,1副10二四*76八的图像去雾时间概略在150ms内(以灰度图为导向图)。

 

 5、算法的局限性

 

     
暗原色先验是一种总括的结果,是对大气露天无雾照片(outdoor haze-free
images)的总括结果,如若目的场景内在的就和大气光类似,比方雪地、藤黄背景墙、大海等,则是因为前提条件就不科学,因而一般无法得到满意的效应,而对此一般的风景照片以此算法能管理的不利。

    

 

    2013.八.二三 后记补充纠正:

     在持续对该算法的关爱中,开掘本人在日前做出了二个不当的论断,就是关于式(11)中/A的操作。笔者在前边说这一个除法会引起部分主题材料,由此,去除了这一步。可是后来的奉行评释便是有了这一步,对于比较度低的图像才方可赢得很好的去雾高比较度图。

    前边说的/A操作也许会导致t的值小于0,这种景况就可以把t的值直接设置为0来解决。

   
还会有3个作业就是式(1一)严谨的来讲是要对原始图像的各种通道进行归一化后,再取各个通道PRADO/G/B值的蝇头值获得中间图,然后对这些个中图进行点名半径的小不点儿值滤波后,通过1一式收获粗糙的透射率图,那么如此就须求多非常多总计,笔者在其实中发觉只要一贯用后边的暗通道图/A实行操作,两个的功效区别不肯定,由此,可用这种便利的秘诀。

图片 201   图片 202

 上海体育场面是一副卓越的测试图,即便赢得了相比好的功力,不过就如马路那1块的效劳不及部分其余人公开的名堂那么好。

图片 203   图片 204

     那也是一副相比较宽泛的测试图,该图也是紧用去雾获得结果,未做其它的后甩卖,同CSDN一个的案例库:图像去雾的算法商量中的效果比较,在整幅图像的自己检查自纠和和和睦性上都要好二个水准。

    
再如下图,也比CSDN那么些案例库中的效果要好过多。

  图片 205   图片 206

     还有:

图片 207  图片 208

图片 209  图片 210

   

   计算:作者对这种去雾算法的效益依然很中意的, 效果和进程都还相比较合适。

   附属类小部件的测试程序已经联手更新。

   20一三.拾,10 后记补充:

    一贯听别人讲C的频率非常高,于是用C达成了该算法,并且编写制定了2个可供其余语言调用的dll文件,然后对小小值滤波算法又拓展了特其他优化,算法速度有了相当的大的增加,特别是在用VS20十时,编写C的代码能够勾选下图中的SSE选项和急忙(fp:fast),程序会调用SSE一些函数,达成指令等第的相互。而那么些C#的编写翻译器是力不从心落到实处的。

图片 211

     同样的算法,绝对于原始的C#程序,程序的快慢能增进一倍左右,对于800*600的图像,在自笔者的I3的CPU上平均能能落得20fps的快慢(只占用了3个核的CPU能源),由此得以适用于不高于该限量内的实时图像管理。

    
同样笔者扩充了三个里面可调的参数供大家测试。

图片 212

     相应的DLL函数评释如下:

     c风格:

void HazeRemovalUseDarkChannelPrior(unsigned char * Src,unsigned char * Dest,int Width,int Height,int Stride, int Radius ,int GuideRadius, int MaxAtom, float Omega,float Epsilon,float T0 )

    c#调用:

 [DllImport("HazeRemoval.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true)]
  private static extern void HazeRemovalUseDarkChannelPrior(byte* Src, byte* Dest, int Width, int Height, int Stride, int Radius,int GuideRadius, int MaxAtom, float Omega, float Epsilon, float T0);

    VB6调用:

Private Declare Sub HazeRemovalUseDarkChannelPrior Lib "HazeRemoval.dll" (ByVal Src As Long, ByVal dest As Long, ByVal Width As Long, ByVal Height As Long, ByVal Stride As Long, ByVal Radius As Long, ByVal GuideRadius As Long, ByVal MaxAtom As Long, ByVal Omega As Single, ByVal Epsilon As Single, ByVal T0 As Single)

     

    
调用实例源代码下载:http://files.cnblogs.com/Imageshop/HazeRemovalTest.rar

 2013.11,22修正: 

  通过共同双边滤波求透射率图的意义上面包车型大巴不得法的,进最新的钻探结果申明,双边滤波确实也能博取Mini的投射图,比方依然那上边的测试图像,差异的SigmaS和Sigma奥迪Q5下获得透射率效果如下:

   图片 213   
 图片 214

          SigmaS=50,SigmaR=30                          
SigmaS=100,SigmaR=30

 

 2014.一.1二重大创新(可完成实时效应):

   
 何的算法效果以及相近的实用性都比别的的去雾算法要好,而根本的难题正是其速度照旧远远不足快,有着太多的浮点总结。鉴于此,笔者也往往试着对代码举行深等级次序的优化,包涵SSE管理、并行运转等,但出于算法本人的依次实施,不可能全程并行,有的时候1个小函数能够相互,但鉴于其自我实行就极度快,例如不要伍ms,你去用并行算法可能源消耗费时间还或者会大片段。由此,一向未有怎么大的腾飞,对于一副10二四*76八的彩图举行去雾要求90ms,那必将不能够满意须要。

   
 近些日子,在图谋,既然暗通道去雾的透射率图比别的的算法都来的独具匠心,假如方便的降落一小点其精度,其去雾的成效理论上相应不会有太大的界别,于是笔者想到了1种方式,即求取透射率的时候不是对原图举行求取,而是先对原图进行下采集样品,比如收缩为原图的百分之二10伍,计算出小图的透射率,之后在通过插值的秘诀的拿走原图大约的透射率,则应当也足以赢得效果。经过施行,这种格局大大的提升了执行进程,而且效果和原有的方案基本一致,对于十贰4*768的图像大概只供给(I3CPU)30ms了,若是进一步取九分一的缩放,则只要求大约20ms,完全能够满意工业实时性须求高的场地。

   
当然,借使您的紧缩周详不是特意大的话,比方收缩为本来的0.5轻重缓急,或然五次缩放所用的耗时还抵消了总计小图的透射率图所换到的盈余,由此必须合理选择这些下采集样品率。

   
要促成如此的快慢,当然照旧须要相当高的优化技巧的,这么些东西照旧具备保留比较好。 

   
我做了三个主次,集成了本博客中六种图像去雾的算法: 图像去雾综合版本

图片 215

用暗通道的算法对1段录制张开了管理,我们可以在那边看到效果:http://video.sina.com.cn/v/b/124538950-1254492273.html



相关文章