或者因天部位多是未吻合暗通道去雾先验这个前决条件的。视频去雾效果。视频去雾效果。

     
在藏的几乎栽去雾算法中,包括何凯明的暗通道去雾、Tarel的依据中值滤波的去雾以及一些冲其他边缘保留的点子吃,都起一个普遍存在的题目:即针对空部分处理的不得了,天空往往会起比较生的面积的纹路及分块现象。究其重大因,还是坐天部位多是不吻合暗通道去雾先验这个前决条件的。目前,针对这等同题材,我摸到之机要有以下几首稿子展开了处理:

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

1、 改善之依据暗原色先验的图像去雾算法
作者: 蒋建国\侯天峰\齐美彬  
合肥工业大学 2011。

     
可处理视频的以身作则:视频去雾效果

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

      2、Single image dehazing Algorithms
based on sky region segmentation, 2013  王广义
 哈尔滨工业大学(这首文章似乎要交全校里才会下载);

   
 在图像去雾是小圈子,几乎从来不人不亮堂《Single Image Haze Removal Using
Dark Channel
Prior》这篇稿子,该文是2009年CVPR最佳论文。作者何凯明博士,2007年清华大学毕业,2011年香港中文大学博士毕业,可谓是功夫深厚,感叹于国内一些所谓博士之品位,何这样的博士才得以真正称之为Doctor。

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

      第一首文章增加了一个可控参数K,
用来调节每个像素处的透射率:

    
关于何博士之局部材料和论文,大家好看这里:http://research.microsoft.com/en-us/um/people/kahe/

 
 
 可处理视频的言传身教:视频去雾效果

 

    
最初步接触何的立刻首论文是于2011年,说其实的酷时段,只是凭浏览了下,看到中的soft
matting过程比较复杂,并且实施进度颇缓慢,就从未呀特别之志趣。最近又奇迹拾从,仔细研读,觉得论文的演绎步骤特别清楚,讲解很成功。恰好适逢浏览到其另外一篇稿子《Guided
Image
Filtering》 ,其中涉嫌了足为此导向滤波来替代soft
matting的进程,且速度迅猛,因此,我对去雾的志趣算法又大大提高了。
 

   
在图像去雾是世界,几乎没有丁未知情《Single Image Haze Removal Using
Dark Channel
Prior》这首文章,该文是2009年CVPR最佳论文。作者何凯明博士,2007年清华大学毕业,2011年香港中文大学博士毕业,可谓是功力深厚,感叹于国内有所谓博士的程度,何这样的博士才得真正叫Doctor。

         
 图片 1

     本文主要及是针对《Single Image Haze
Removal Using Dark Channel
Prior》的翻、整理、及一些解释。如果你的英文水准好,建议看原稿可能来的更爽些。

    
关于何博士的片资料和论文,大家好看这里:http://research.microsoft.com/en-us/um/people/kahe/

 

    一、论文思想的简短描述 

    
最开头接触何的立首论文是于2011年,说实在的不胜时刻,只是随便浏览了产,看到中的soft
matting过程比较复杂,并且实施进度杀缓慢,就没有啊异常的兴味。最近而奇迹拾打,仔细研读,觉得论文的推理步骤特别明晰,讲解很到位。恰好适逢浏览到其另外一首稿子《Guided
Image
Filtering》 ,其中涉及了可据此导向滤波来取代soft
matting的长河,且速度很快,因此,我本着去雾的兴味算法又大大提高了。
 

     
当|I(x)-A|<k时,认为是区域或是天,重新计算透射率(增加透射率),|I(x)-A|>k处,则以为是抱暗通道先验的区域,透射率不变换。

     首先看暗通道先验是呀:

     本文主要及是指向《Single Image Haze
Removal Using Dark Channel
Prior》的翻、整理、及部分解释。如果你的英文水准好,建议看原稿可能来的双重爽些。

     
如果K取值为0,则相当给原之透射率公式。

      
在大部非天空的片区域里,某部分像素总会发出至少一个颜色通道有很没有的价。换言之,该区域只有强度的无限小值是单非常有点之再三。

    一、论文思想的简短描述 

     
上面的做法是较合理的,因为相似情况下好气光A的取值和天幕部分该是蛮类似的,而那些符合暗通道的地方虽然离家天空,关于这算法的功用,我以自我之《Single
Image Haze Removal Using Dark Channel
Prior》一温柔被图像去雾算法的原理、实现、效果(速度只是实时)一样软的实例工程被都提供了测试程序。

  我们被暗通道一个数学概念,对于自由的输入图像J,其暗通道可以据此下式表达:

     首先看望暗通道先验是啊:

     
 第二篇稿子的笔触则是进展天空分割。对分后底个别部分透射率做不同的拍卖,那么是的要害就在皇上特征的取。作者原文是经过以下几个步骤来贯彻的。

                                   图片 2 

      
在大部非天空的部分区域里,某部分像素总会产生至少一个颜料通道有十分没有之价。换言之,该区域只有强度的极小值是个要命有点之屡屡。

   
 图片 3

      式中Jc意味着彩色图像的每个通道 ,Ω(x)表示为像素X为着力的一个窗口。 

  我们深受暗通道一个数学概念,对于自由的输入图像J,其暗通道可以为此下式表达:

   
 图片 4

   
式(5)的意思用代码表达也充分简单,首先要来每个像素RGB分量中之顶小值,存入相同合乎和初图像大小相同之灰度图中,然后又对当下幅灰度图进行最小值滤波,滤波的半径由窗口大小决定,一般生WindowSize
= 2 * Radius + 1;          

                                   图片 5 

 

      暗通道先验的驳斥指出:

      式中Jc代表彩色图像的每个通道 ,Ω(x)表示为像素X为基本的一个窗口。 

   
 图片 6

                                                           
图片 7           

   
式(5)的意思用代码表达也坏简短,首先请来每个像素RGB分量中之顶小值,存入相同合和原始图像大小一样之灰度图中,然后重新指向这幅灰度图进行最小值滤波,滤波的半径由窗口大小决定,一般有WindowSize
= 2 * Radius + 1;          

  对当时几个步骤我进行了粗糙的点评吧。

     实际在面临造成暗原色中没有通道值主要发生三单因素:a)汽车、建筑物与市遭遇玻璃窗户的阴影,或者是树叶、树及岩等自风景的影;b)色彩鲜艳的体或外部,在RGB的老三独通道遭遇略通道的价老没有(比如绿色的草地/树/植物,红色或者黄色的花朵/叶子,或者蓝色之水面);c)颜色比较暗的体或表面,例如灰暗色的干与石。总之,自然风景中处处都是影子或者彩色,这些风景的图像的暗原色总是慌惨淡的。

      暗通道先验的辩护指出:

     
第一步我当最有价,直接在初数据判断天空不是生好做,作者考察到天上部分完全来说是比平缓的,也尽管是隔壁像素之间变不死,因此用梯度来表示虽然还便于辨认,梯度值更小则表明图像那同样块越滑。

     
我们抛开开论文中罗列的那些例子,自己从网上找几幅没有雾的风景照,看看结果如下:

                                                         
  图片 8           

     
第二步则设定一个阈值来初步判断某处是否属天空,这个阈值作者取的是0.02,量化到unsigned
char范围虽然基本对应5。

   图片 9    
图片 10

     实际在面临导致暗原色中没有通道值主要发生三只要素:a)汽车、建筑物和城被玻璃窗户的黑影,或者是叶、树及岩等当景色的阴影;b)色彩鲜艳的物体或外部,在RGB的老三单通道中稍微通道的价值好没有(比如绿色的草地/树/植物,红色或者黄色的繁花/叶子,或者蓝色之水面);c)颜色比较暗的体或表面,例如灰暗色的树干和石块。总之,自然山水中四处都是影子或者彩色,这些风景的图像的暗原色总是很惨淡的。

     
第三步对起来的疆界进行下小范围的扩张。

   图片 11    
图片 12

     
我们扔开论文被历数的那些例子,自己于网上搜索几幅没有雾的风景照,看看结果如下:

     
第四步对细分后的觊觎的每个联通区域统计其故图像在针对许位置的像素的平均亮度,如果过量阈值T则保留,T这里作者取0.81,对许整数205左右。

   图片 13    
图片 14

   图片 15 
   图片 16

     
第五步取符合第四步条件的绝酷的联通区域作为识别的苍穹区域。

                     
一些无雾的图样                                                                               
  其暗通道

   图片 17     图片 18

     
第六步是以防备部分漏检点,把在天空区域广的部分如从在越来越拓展辨认,符合条件的尽管加以到天区域受到。

于探有有雾的觊觎的暗通道:

   图片 19     图片 20

     
第七步是局部吃完整包含在空蒙尚不受当是天幕的微区域上加至天空蒙。

   图片 21  
图片 22

                     
一些无雾的图纸                                                                               
  其暗通道

   
 个人认为,除了第一步、第二步、第四步有必不可少他,其他的非欲这样处理。特别是第五步之拍卖会导致天空部位的漏检。比如下面的流程示意图的原图,如果用上述措施势必会促成左上角处小片段天空完全不见不见。另外一个题材即使,联通区域之盘算还是比较耗时的。

   图片 23  
图片 24

于探访有有雾的希冀的暗通道:

     我之做法是: 

          一些有雾的图形                                                                              
   其暗通道

   图片 25   图片 26

   
 1、将图像转换为灰度:这里吧保留更多之边缘信息,可以设想使用具有针对性比度保留功能或显著性保留功能的一些去色算法。

  上述暗通道图像俱使用的窗口大小为15*15,即无限小值滤波的半径为7像素。

   图片 27   图片 28

   
 2、求灰度图像的梯度信息(其实就是足以就此常用之片边缘检测算子实现);

     
由上述几帧图像,可以肯定的张暗通道先验理论的普遍性。在作者的舆论中,统计了5000大抵合乎图像的风味,也都基本吻合这先验,因此,我们可当实际一长达定律。

          一些有雾的图样                                                                              
   其暗通道

   
 3、对梯度信息进行适宜的去噪和滤波;

     
有矣之先验,接着就是需要开展局部数学方面的演绎来最终化解问题。

  上述暗通道图像俱采用的窗口大小也15*15,即绝小值滤波的半径为7像素。

   
 4、按照设定梯度阈值和亮度阈值对梯度信息进行区分;

  首先,在计算机视觉及处理器图形中,下述方程所描述的雾图形成模型被普遍运用:

     
由上述几帧图像,可以显著的目暗通道先验理论的普遍性。在笔者的舆论中,统计了5000差不多抱图像的特点,也都基本吻合这先验,因此,我们可以认为实际一漫长定律。

   
 5、对分后底希冀进行高斯羽化处理(可选的)。

                                                  
图片 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表示R/G/B三单通道的意思。

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

            稍作去噪                                 初步天空识别                           
          进行羽化

   
首先假而于各一个窗口内透射率t(x)为常数,定义他啊图片 38,并且A值已经给定,然后对式(7)两度求少软顶小价运算,得到下式:

                                                 
  图片 39

     
作为比,我们于为来几幅图的天空的鉴别功能:

                                 
图片 40

   
如上所述,上标C表示R/G/B三单通道的意思。

 
 图片 41
  图片 42

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

   
首先假而于各级一个窗口内透射率t(x)为常数,定义他呢图片 43,并且A值已经给定,然后对式(7)两度求少坏极小价运算,得到下式:

 
 图片 44  图片 45

                                              
图片 46

                               
  图片 47

 对于那些基本不存天空之觊觎,检测的结果如下:

     因此,可推导出:

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

 
 图片 48  图片 49

                                                        
图片 50

                                               图片 51

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

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

     因此,可推导出:

     
得到天空区域后,原文作者以天区域之透射率图统一的装成了一个固定值,我认为这么不好,还是应当根据实际的价值做适合的修正。
在自身上述的操作中,得到的天去区域是千篇一律合蒙版图,某个点并不一定是一点一滴属于天空要全无属。因此,我就算得根据这个值来+
暗通道求得的价进行一下Alpha夹,如下所示:

                                                 图片 52

                                                     
   图片 53

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

    这即是透射率图片 54的预估值。

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

  其中SkyPresrve就恍如于论文的恒透射率值,是用户指定的,在上式中,若Sky[255],即完全属于天空,则改点的透射率即为固定值,若Sky[Y]=0,即完全不属天空,计算式的值未转移,不影响正常去雾。

   
在现实生活中,即使是晴白云,空气被吗存着有些豆子,因此,看天的物体或能够感到到雾的熏陶,另外,雾的有让人类感到景深的是,因此,有必不可少当去雾的当儿保留一定水准的雾,这可以通过在式(11)中引入一个于[0,1]
之间的因子,则式(11)修正为:

                                                 图片 55

     
另外关于大气光值A的测算,论文提出了为博取的天部位的像素的平均值作为A,这为是十分合理之,但是以事实上处理常,针对有些完全没空部分的图像,可能检测及之苍天区域大粗(明显属于误检,但是程序不清楚的),这个上因这也大气光值,也是免成立的。为这个,我的处理方式先算天空部位计算的A值,然后以检测天空像素占整个图像的比重,如果比例小于5%,则还是以何凯明那种计算A的方式展开。

                                              
图片 56

    这就算是透射率图片 57的预估值。

     
还有同步,论文呢涉了,就是这些校正的步子都必须在refine阶段前做,简单的说,就是索要在展开导向滤波前召开。这样用导向滤波的平整功能,可以拿天空及非天空分界部位的无平易现象自然水平达到弥补掉);

     本文中兼有的测试结果因让: 
ω=0.95。

   
在现实生活中,即使是晴天白云,空气被吗有着部分粒,因此,看天的体或能觉到雾的熏陶,另外,雾的留存于人类感到景深的存在,因此,有必不可少当去雾的时光保留一定程度的雾,这足以经在式(11)中引入一个当[0,1]
之间的因数,则式(11)修正为:

  为了增进速度,也得以用自在何那篇论文的分析的博文中之点子,进行下采样处理,然后于高达采样。

    
上述推论中都是一旦全球上气光A值经常一度领略的,在实质上中,我们可凭暗通道图来打发生雾图像中取该值。具体步骤如下:

                                          
    图片 58

     
作为对比,我们吃来直接用何的不二法门实现的效应以及用天空识别方式处理的对待效果:

      1)
从暗通道图备受按亮度的大大小小取前0.1%的像素。

     本文中具有的测试结果因让: 
ω=0.95。

  图片 59 图片 60  图片 61

          2)
在这些岗位被,在老有雾图像I中搜寻对应的具有高亮度的触发之价,作为A值。

    
上述推论中都是要是全球上气光A值经常曾经领略之,在事实上中,我们可以凭暗通道图来打产生雾图像中得该值。具体步骤如下:

   
  图片 62 图片 63 图片 64

    
到立刻无异步,我们即便可开展管雾图像的东山再起了。由式(1)可知:  J = ( I –
A)/t + A  

      1)
从暗通道图备受仍亮度的大小取前0.1%的像素。

   
  图片 65 图片 66 图片 67

     现在I,A,t都已经求得了,因此,完全可进行J的计算。

          2)
在这些职务被,在本来有雾图像I中搜索对应的装有高亮度的接触之值,作为A值。

   
 图片 68  图片 69 图片 70

     当投射图t
的值好小时,会招致J的价值偏老,从而使淂图像整体往白场过度,因此一般但装同一阈值T0,当t值小于T0时,令t=T0,本文中有着力量图俱以T0=0.1呢规范测算。

    
到立刻无异步,我们就算可开展管雾图像的过来了。由式(1)可知:  J = ( I –
A)/t + A  

   
 图片 71  图片 72 图片 73

     因此,最终之恢复公式如下:

     现在I,A,t都已经求得了,因此,完全可以进行J的计算。

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

                              
 图片 74

     当投射图t
的值大小时,会导致J的价值偏大,从而使淂图像整体往白场过度,因此一般但装同一阈值T0,当t值小于T0时,令t=T0,本文中具有力量图俱以T0=0.1啊规范测算。

  有以上比较可见,在保障了昊之早晚,和天空交接的地方的去雾程度也正好的持有减弱。

    
当直接用上述辩解进行复原时,去雾的作用实在也是那个引人注目的,比如下面有事例:

     因此,最终之复原公式如下:

 
 在论文的最后,作者为涉了去雾的图像展示较昏暗,为这个,做了瞬间拍卖:

   图片 75   
图片 76

                              
 图片 77

     
  图片 78

   图片 79  
 图片 80

    
当直接用上述申辩进行还原时,去雾的效应其实为是殊明确的,比如下面有例证:

  即当HSV空间,对V分量进行CLAHE增强,然后在更换到RGB空间,这种方法对有些图像确实发生死显然的增高力量,但是有把图或以见面增强噪音,因此要冲实际情形选择性的拍卖吧。

                
有雾图                                           
 去雾图

   图片 81    图片 82

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

      注意到第一幅图的原图两单字之四周明显有同等块不和谐的地方,而第二图顶部水平方向似乎来同片没有进行去雾处理,这些都是出于我们的透射率图过于粗糙了。

   图片 83  
 图片 84

 
 图片 85

     
要博取越来越精细的透射率图,何博士在文章被提出了了soft
matting方法,能获取好细致的结果。但是他的一个沉重之老毛病就是是速度特慢,不利用被实际应用。在2011年,何博士而除了同切开论文,其中提到了导向滤波的方法来博取比好的透射率图。该办法的关键过程集中吃简单的方模糊,而方框模糊有差不多还以及半径无关之全速算法。因此,算法的实用性就高,关于这个导向滤波算法大家在哪里博士的网站可以团结去研习下,除了以夺雾方面他,还存有别样基本上面的采取,这有些本文不多述。

                
有雾图                                           
 去雾图

 

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

      注意到第一帧图的原图两只字的方圆明显发生平等片不谐和的地方,而第二贪图顶部水平方向似乎发生同块没有进展去雾处理,这些还是由于我们的透射率图过于粗糙了。

图片 86

  图片 87  
图片 88

     
要赢得进一步精致的透射率图,何博士当篇章中提出了了soft
matting方法,能取特别细致之结果。但是他的一个致命的症结就是是速度特慢,不采取让实际利用。在2011年,何博士而除了同切片论文,其中涉及了导向滤波的方来获得比好之透射率图。该措施的根本过程集中让简单的正方模糊,而方框模糊有多重新和半径无关的神速算法。因此,算法的实用性就高,关于这导向滤波算法大家以哪博士之网站可以协调失去研习下,除了当错过雾方面他,还怀有另外多点的用,这有本文不多述。

****************************作者:
laviewpbt   时间: 2014.8.12    联系QQ:  33184777
转载请保留本行信息**********************

  图片 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) 导向图
(原始图像的灰度图)

  二、各参数对失去雾结果的影响

  图片 105  
 图片 106

  第一:窗口的高低。这个对结果来说是独重点的参数,窗口更加充分,其蕴藉暗通道的几率越老,暗通道也即一发黑。我们无去打理论角度分析,从推行的功效来拘禁,似乎窗口更加怪,去雾的效力尤其不显,如下图所示:

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

   图片 107   
 图片 108

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

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

  第一:窗口的高低。这个对结果来说是独至关重要的参数,窗口更加充分,其蕴藉暗通道的几率越老,暗通道也就算更加黑。我们无去打理论角度分析,从推行的效益来拘禁,似乎窗口更加怪,去雾的法力更不肯定,如下图所示:

   图片 109  
图片 110

   图片 111   
 图片 112

              (c)
窗口大小=21                         (d)
窗口大小=101 

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

  我之提议是窗口大小在11-51中,即半径在5-25内。

   图片 113   图片 114

    
式(12)中之ω具有着明显的意义,其价更聊,去雾效果更加不明显,举例如下:

              (c)
窗口大小=21                         (d)
窗口大小=101 

  
图片 115   图片 116

  我之提议是窗口大小在11-51间,即半径在5-25中。

                                    (a)
原始图像                                  
(b)    ω=0.5         

    
式(12)中之ω具有着显著的意义,其价值更聊,去雾效果尤其不显,举例如下:

  
图片 117   图片 118    

   图片 119   图片 120

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

                                    (a)
原始图像                                  
(b)    ω=0.5         

    三:编码的步骤

   图片 121   图片 122    

  如果你细心的剖析了初稿的细路,加上适量的参照,编码其实并无是可怜窘迫。

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

  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算法的快捷实现,提供平等首论文供有需要的情人学习:STREAMING
MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER
ELEMENT 。这个算法的时复杂度是O(1)的。

  1)根据旧图像求暗通道,参考代码如下:

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

    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值大有或全怪类似255,这样的话会促成处理后底图像偏色和出现大量色斑。原文作者说这算法对空部分无欲特备处理,我实际发现该算法对发天空之图像的效益一般还不好。天空会现出明显的接入区域。作为解决方案,我加了一个参数,最特别环球大气光值,当计算的价超出该值时,则就得到该值。
 

    这里需要专注的凡MinFilter算法的霎时实现,提供平等篇论文供有需要之恋人学习:STREAMING
MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER
ELEMENT 。这个算法的日子复杂度是O(1)的。

    图片 123  
图片 124  
 图片 125

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

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

     这里说明一些,原始论文中之A最终是取原始像素中之某某一个接触的像素,我实际是沾之符合条件的所有点的平均值作为A的价,我这么做是为,如果是得到一个沾,则各通道的A值好有或整个百般接近255,这样的话会造成处理后的图像偏色和产出大量色斑。原文作者说此算法对天空部分无待特备处理,我骨子里发现该算法对发生天的图像的功能一般都非好。天空会冒出鲜明的连结区域。作为化解方案,我加了一个参数,最深环球大气光值,当计算的值超出该值时,则就是得该值。  

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

    图片 126   图片 127  
 图片 128

  在式(12)中,每个通道的数量还急需除以对应之A值,即由一化,这样做,还在一个题材,由于A的选项过程,并无克保证每个像素分量值除以A值后都自愧不如1,从而导致t的价可能小于0,而就是未可能的,原文作者并无供这一点凡是怎样处理的。我于实际的编码中窥见,如果的确这么做了,其功效呢并无是颇理想 ,因此,我最后之办法是在式(12)中,不考虑A的精打细算。

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

        4)计算导向滤波图。

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

  
这里可以直接用原来之图像做导向图,当然也足以用该灰度图,但是就此RGB导向图于产同样步之精打细算中见面占比较大之光阴。

  在式(12)中,每个通道的多少都亟待除以对应之A值,即由一化,这样做,还留存一个题目,由于A的精选过程,并无可知保证每个像素分量值除以A值后都自愧不如1,从而导致t的价可能小于0,而这是勿可能的,原文作者并不曾供这一点凡怎么处理的。我于实际上的编码中窥见,如果真如此做了,其作用啊并无是蛮理想 ,因此,我最终之法是在式(12)中,不考虑A的算计。

        5)按照《Guided Image
Filtering》论文被的公式(5)、(6)、(8)编码计算获得迷你的透射率图。

        4)计算导向滤波图。

    网络达到产生之算法的
matlab代码可下载的,这里贴有代码:

  
这里可以直接用原来之图像做导向图,当然为可以为此那灰度图,但是之所以RGB导向图于产一样步的计算中见面占有比较特别之年月。

  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)、(6)、(8)编码计算获得迷你的透射率图。

      
由地方的代码,可见,主要的工作量在均值模糊上,而均值模糊是只好便捷的算法,关于均值模糊的优化可参照我先的文章:彩色图像高速模糊的懒惰算法。

    网络及闹夫算法的
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=最小值滤波半径的8倍增

     
关于guidedfilter中之半径r值,因为在前进行最小值后迷迷糊糊通道的图像成为一片一样片的,为了使透射率图更加精致,建议这r的取值不低于进行极端小值滤波的半径的4倍增,如下图所示:

      可以望,当r比较小之早晚,在透射率图备受着力看不到什么细节信息,因此恢复处之图像边缘处不显。

    图片 131  
  图片 132

     
参数eps的取值也有侧重,他根本是为了以防万一计算中除以0的错误和以使一些计算结果未必过十分,一般建议取值0.001还是重新小。

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

     
如果使用的花RGB图做导向图,计算时及会增加很多,所的及的透射率图的边缘会比灰度图所处理的保留了重多的细节,效果及稍微比灰度图好,如下所示:

      可以看来,当r比较粗的下,在透射率图被基本看不到什么细节信息,因此恢复处的图像边缘处不引人注目。

    
图片 133  
 图片 134

     
参数eps的取值也具备青睐,他重点是为了防范计算着除了以0的荒唐和以使一些计算结果未必过大,一般提议取值0.001还是再次有些。

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

     
如果采取的彩色RGB图做导向图,计算时达会见追加多,所的届之透射率图的边缘会比灰度图所处理的保存了再次多的底细,效果上稍稍微比灰度图好,如下所示:

    
图片 135   
图片 136

     图片 137  
 图片 138

                      
(c)使用灰度图也导向图取的透射率图                      
    (d)使用RGB图也导向图取的透射率图

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

     图片 139   
图片 140

  
  图片 141    图片 142

           (e)灰度图也导向图对应之去雾效果    
                       
  (f)RGB图导向图对应之去雾效果

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

       以RGB图也导向图的盘算着,涉及到3*3局部矩阵求逆的历程,如果就此非matlab语言写,可以优先凭matlab的符号计算功能,以及其中的符号计算命令simple,把计算结果算出来,然后还还其他高级语言中实现。

     图片 143    图片 144

       (6)
按式(22)进行管雾图像的复原。

           (e)灰度图也导向图对应的去雾效果    
                       
  (f)RGB图导向图对应之去雾效果

 四、其他部分失雾效果图

       以RGB图也导向图的计量着,涉及到3*3片段矩阵求逆的进程,如果用非matlab语言写,可以先行凭matlab的符号计算功能,以及其中的符号计算命令simple,把计算结果算出来,然后又还其他高级语言中落实。

 
图片 145 
图片 146 
图片 147

       (6)
按式(22)进行任雾图像的复原。

   图片 148  
 图片 149  
图片 150

 四、其他一些错过雾效果图

   图片 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.

      上图被最终一相符图自连续举行了点滴不良错过雾的处理。 

     意思就是说直接去雾后的图像会较老的暗,因此当处理了晚待进行自然的曝光增强,但笔者没有证明该是怎么样提高的,
因此,这里的希冀跟外论文的力量有所不同时正常的。一般在去雾处理后更就此自动色剂之类的算法增强下会获得比较满意的结果,如下图:

      在原文中,有如此同样段话:

     图片 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

         
原图                
去雾后              +自动色阶

  后记:稍微有看了几乎首去雾的稿子,基本上都是环绕着获得透视率图做文章,比如有的篇章讲用联合双边滤波方式得到迷你的透射率,从自个人浅薄的认识中,我以为去雾已基本上跳不发暗原色这个范围了。

     
去雾算法目前吗兼具许多其他的计,不过我所接触的,很多且是为之邪底蕴,因此,先将会这为研究其他的去雾算法能奠定坚实的底蕴。

     
我对彼此滤波算法那呢召开了实验,发现这的效力啊还行,就是快放缓了广大,双边滤波的霎时算法其实抢不起来的,所以这的实用性不愈,我选择了有些图像做比较:

      网络达到发出一些比较好之暗原色先验去雾的matlab代码:比如和本文基本对应之matlab资源:http://files.cnblogs.com/Imageshop/cvpr09defog%28matlab%29.rar

     图片 175   
图片 176

  后记:稍微有看了几篇去雾的文章,基本上还是环在收获透视率图做文章,比如一些文章讲用联合双边滤波方式获得迷你的透射率,从自己个人浅薄的认识中,我以为去雾已多跳不生暗原色这个层面了。

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

     
我对彼此滤波算法那呢做了试,发现这个的职能啊还行,就是快放缓了许多,双边滤波的神速算法其实抢不起的,所以这的实用性不赛,我选择了有图像做比较:

     图片 177   
图片 178

     图片 179    图片 180

                        (c)
导向滤波获得透射率图                                                  
(d)联合双边滤波透射率图(Sigmad=SigmaR=100)

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

       上图可以死肯定的顾联合双边滤波的透射率图无导向滤波的小巧,但比较原的粗的透射率图要好过多,过渡很细腻,因此,也能够获取正确的视觉去雾效果。

     图片 181    图片 182

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

                        (c)
导向滤波获得透射率图                                                  
(d)联合双边滤波透射率图(Sigmad=SigmaR=100)

     和凡一样,提供一个而供应大家测试效果的次第:
据悉暗原色先验的图像去雾演示程序

       上图可以很明朗的收看联合双边滤波的透射率图无导向滤波的精工细作,但较原之粗的透射率图或吓广大,过渡很细腻,因此,也能获取是的视觉去雾效果。

    图片 183

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

   
我分别就此VB6和C#举行了单次,两只次还已经过各自的语言方式展开了优化,算法有编码是一致的,C#运行速度约是VB6的1.8倍。

     和凡一样,提供一个而供应大家测试效果的次: 据悉暗原色先验的图像去雾演示程序

     在处理速度上,比
matalb的赶快了多倍增,在I3的笔记本电脑上,一抱1024*768底图像去雾时间约于150ms内(以灰度图为导向图)。

    图片 184

 

   
我分别就此VB6和C#做了单次,两单程序还已经过各自的言语方式展开了优化,算法有编码是一模一样的,C#运行速度约是VB6的1.8倍。

 五、算法的局限性

 

     
暗原色先验是同一种统计的结果,是对大量窗外无雾照片(outdoor haze-free
images)的统计结果,如果目标场景内在的便和大气光类似,比如雪地、白色背景墙、大海等,则由于前提条件就无正确,因此一般无法得到满意的功效,而对于一般的景照以此算法能处理的正确性。

    

 

    2013.8.23 后记补充修正:

     在继承对拖欠算法的眷顾中,发现自己在前做出了一个荒唐的论断,就是关于式(11)中/A的操作。我以前头说之除法会引起局部题目,因此,去除了这同一步。但是后来的实践证明正是有了立即无异步,对于针对比度低之图像才方可博酷好的去雾高对比度图。

    前面说的/A操作可能会见导致t的值小于0,这种状态便足以把t的价直接设置为0来缓解。

   
还有一个事务就是式(11)严格的吧是要针对性原本图像的每个通道进行归一化后,再取每个通道R/G/B值的绝小价得到中图,然后对这当中图进行点名半径的极其小值滤波后,通过11式赢得粗糙的透射率图,那么这么即使待多众多划算,我于事实上被发觉而直接用前的暗通道图/A进行操作,两者的效力区别不鲜明,因此,可用这种便利的道。

图片 185  
图片 186

 上图是同等合经典的测试图,虽然取得了比好之意义,不过像马路那同样片的法力不如部分其他人公开之结晶那么好。

图片 187  
图片 188

    
这也是相同符合比较广泛的测试图,该图也是紧用去雾获得结果,未做任何的晚甩卖,同CSDN一个的案例库:图像去雾的算法研究遭之功力比,在整幅图像的对立统一和及协调性及都要好一个水平。

    
再使下图,也较CSDN那个案例库中的效应使好广大。

 
图片 189  
图片 190

     还有:

图片 191 
图片 192

图片 193  图片 194

   

   总结:我对这种去雾算法的法力还是特别惬意的, 效果跟速度还还比适合。

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

   2013.10,10 后记补充:

    一直听说C的频率特别高,于是用C实现了拖欠算法,并且编制了一个只是供应其他语言调用的dll文件,然后对顶小值滤波算法又进行了不同寻常之优化,算法速度发出矣老非常的增强,特别是在用VS2010时,编写C的代码可以勾选下图备受之SSE选项和快(fp:fast),程序会调用SSE一些函数,实现指令级别的交互。而这些C#的编译器是力不从心兑现的。

图片 195

    
同样的算法,相对于原始的C#次,程序的速度会加强一加倍左右,对于800*600之图像,在我之I3的CPU上平均能会达到20fps的速度(只占了一个审的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修正: 

  通过共同双边滤波求透射率图的职能上面的莫正确的,进最新的钻研结果表明,双边滤波确实也会博取迷你的投射图,比如依旧那点的测试图像,不同之SigmaS和SigmaR下得到透射率效果如下:

  
图片 197   
 图片 198

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

 

 2014.1.12
重大创新(可实现实时效力):

   
 何的算法效果以及广泛的实用性还比其他的去雾算法要好,而首要的问题便是那速还是免敷快,有着最多的浮点计算。鉴于此,作者也往往跃跃欲试着对代码进行非常层次的优化,包括SSE处理、并行运行等,但出于算法本身的依次执行,无法全程并行,偶尔一个聊函数可以彼此,但由其本人执行就专门快,比如不要5ms,你失去用并行算法可能耗时还见面怪一部分。因此,一直未曾呀大的向上,对于同合乎1024*768之彩图进行去雾需要90ms,这自然无法满足需求。

   
 最近,在琢磨,既然暗通道去雾的透射率图于另外的算法都来之小巧,如果方便的减退一点点那个精度,其错过雾的效果理论及该不见面发生最老之界别,于是我想到了同等种植艺术,即求取透射率的时光不是对准原图进行求取,而是先对原图进行下采样,比如缩小为原图的1/4,计算产生小图的透射率,之后于经过插值的方式的拿走原图大概的透射率,则应该吗可以赢得力量。经过实践,这种办法大大的增长了行进度,而且意义跟原来之方案基本一致,对于1024*768底图像大约只有需要(I3CPU)30ms了,如果越来越获得1/9之缩放,则仅待盖20ms,完全可满足工业实时性要求强之场地。

   
当然,如果你的压缩系数不是专门好的言辞,比如缩小为本的0.5轻重缓急,可能有数潮缩放所用之耗时尚抵了匡小图的透射率图所更换来的得利,因此须合理合法选择这下采样率。

   
要兑现如此的快,当然还是用分外高之优化技术的,这些事物或有保存比较好。 

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

图片 199

     

   
用暗通道的算法对同段子视频展开了拍卖,大家可在此地看成效:http://video.sina.com.cn/v/b/124538950-1254492273.html

 
  图片 200

****************************作者:
laviewpbt   时间: 2013.8.23    联系QQ:  33184777
 转载请保留本行信息********************

 

 

 写博是,土豪请打赏,屌丝一瓜分也是容易(非强制要求):

 

     在处理速度上,比
matalb的尽快了众多倍增,在I3的笔记本电脑上,一契合1024*768底图像去雾时间大概在150ms内(以灰度图也导向图)。

 

 五、算法的局限性

 

     
暗原色先验是如出一辙栽统计的结果,是本着大气室外无雾照片(outdoor haze-free
images)的统计结果,如果目标场景内在的哪怕与大气光类似,比如雪地、白色背景墙、大海等,则是因为前提条件就不科学,因此一般无法赢得满意的效力,而于一般的青山绿水照片以此算法能处理的不利。

    

 

    2013.8.23 后记补充修正:

     在持续对拖欠算法的关爱着,发现自己在眼前做出了一个左的判定,就是关于式(11)中/A的操作。我在前说这个除法会引起部分题材,因此,去除了就无异步。但是后来之实践证明正是有矣这无异于步,对于针对比度低的图像才堪得特别好之去雾高对比度图。

    前面说之/A操作可能会见导致t的值小于0,这种情况就算得把t的值直接装也0来解决。

   
还有一个事情就是式(11)严格的来说是若针对本来图像的每个通道进行归一化后,再取每个通道R/G/B值的极小值得到中图,然后对是当中图进行点名半径的太小值滤波后,通过11式收获粗糙的透射率图,那么这样便需差不多多测算,我以实际上被窥见如直白用前的暗通道图/A进行操作,两者的成效区别不明显,因此,可用这种便当的法门。

图片 201   图片 202

 上图是同一相符经典的测试图,虽然获得了较好之机能,不过像马路那同样片的效用不如部分其他人公开之收获那么好。

图片 203   图片 204

     这为是一模一样称比较普遍的测试图,该图也是紧用去雾获得结果,未开另外的后甩卖,同CSDN一个底案例库:图像去雾的算法研究受到之力量比,在整幅图像的对待及和协调性及还使好一个水准。

    
再要下图,也于CSDN那个案例库中的意义使好过多。

  图片 205   图片 206

     还有:

图片 207  图片 208

图片 209  图片 210

   

   总结:我对这种去雾算法的效用还是大中意的, 效果及快还还于适宜。

   附件的测试程序已经联名创新。

   2013.10,10 后记补充:

    一直听说C的效率特别高,于是用C实现了该算法,并且编制了一个可供应其他语言调用的dll文件,然后针对极度小值滤波算法又拓展了出格之优化,算法速度发出了挺酷之增进,特别是在用VS2010时,编写C的代码可以勾选下图备受的SSE选项和快(fp:fast),程序会调用SSE一些函数,实现指令级别之交互。而这些C#的编译器是心有余而力不足兑现之。

图片 211

     同样的算法,相对于旧之C#程序,程序的快能够增进一倍左右,对于800*600之图像,在自身的I3的CPU上平均能会及20fps的快(只占了一个核对的CPU资源),因此得以适用于未高于该限量外的实时图像处理。

    
同样我加了3单里头可调的参数供大家测试。

图片 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修正: 

  通过合双边滤波求透射率图的效力上面的无得法的,进最新的钻研结果表明,双边滤波确实为会获取迷你的投射图,比如依旧那点的测试图像,不同的SigmaS和SigmaR下取透射率效果如下:

   图片 213   
 图片 214

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

 

 2014.1.12
重大更新(可实现实时效果):

   
 何的算法效果跟广泛的实用性还比较另外的去雾算法要好,而重大的题材就是那个速还是勿足够快,有着最多的浮点计算。鉴于此,作者吧数跃跃欲试着对代码进行深层次的优化,包括SSE处理、并行运行相当,但由于算法本身的次第执行,无法全程并行,偶尔一个不怎么函数可以彼此,但由那个自我执行就特意快,比如不要5ms,你去用并行算法可能耗时尚会非常片段。因此,一直没什么特别之提高,对于同样合乎1024*768底彩图进行去雾需要90ms,这终将无法满足要求。

   
 最近,在揣摩,既然暗通道去雾的透射率图于其余的算法都来之细,如果合适的下降一点点夫精度,其错过雾的法力理论及应当不见面时有发生最老之分,于是我想开了千篇一律种艺术,即求取透射率的早晚不是指向原图进行求取,而是先对原图进行下采样,比如缩小为原图的1/4,计算出小图的透射率,之后以通过插值的艺术的获取原图大概的透射率,则应为堪博得效益。经过实践,这种方式大大的增进了实施进度,而且效果与原之方案基本一致,对于1024*768之图像大约只需要(I3CPU)30ms了,如果更取得1/9底缩放,则仅需要大约20ms,完全好满足工业实时性要求高的场子。

   
当然,如果您的紧缩系数不是特别好的言辞,比如缩小为本的0.5大小,可能有数赖缩放所用的耗时尚抵了匡小图的透射率图所换来之盈余,因此要合理合法选择这个下采样率。

   
要实现这样的速度,当然要要分外高之优化技术的,这些事物还是有所保存比较好。 

   
我举行了一个顺序,集成了本博客中6栽图像去雾的算法: 图像去雾综合版

图片 215

因此暗通道的算法对平段子视频进行了拍卖,大家可以在这边看到成效:http://video.sina.com.cn/v/b/124538950-1254492273.html



相关文章