当前位置: 首页 > news >正文

高端网站设计企业网站建设潍坊网站推广

高端网站设计企业网站建设,潍坊网站推广,打开2345网址大全,营销顾问最新的效果见 #xff1a;http://video.sina.com.cn/v/b/124538950-1254492273.html 可处理视频的示例#xff1a;视频去雾效果 在图像去雾这个领域#xff0c;几乎没有人不知道《Single Image Haze Removal Using Dark Channel Prior》这篇文章#xff0c;该文是2009年C…      最新的效果见 http://video.sina.com.cn/v/b/124538950-1254492273.html         可处理视频的示例视频去雾效果      在图像去雾这个领域几乎没有人不知道《Single Image Haze Removal Using Dark Channel Prior》这篇文章该文是2009年CVPR最佳论文。作者何凯明博士2007年清华大学毕业2011年香港中文大学博士毕业可谓是功力深厚感叹于国内一些所谓博士的水平何这样的博士才可以真正叫做Doctor。      关于何博士的一些资料和论文大家可以访问这里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》的翻译、整理、及部分解释。如果您的英文水平好建议看原文可能来的更爽些。     一、论文思想的简单描述       首先看看暗通道先验是什么        在绝大多数非天空的局部区域里某一些像素总会有至少一个颜色通道具有很低的值。换言之该区域光强度的最小值是个很小的数。   我们给暗通道一个数学定义对于任意的输入图像J其暗通道可以用下式表达                                            式中Jc表示彩色图像的每个通道 Ω(x)表示以像素X为中心的一个窗口。      式5的意义用代码表达也很简单首先求出每个像素RGB分量中的最小值存入一副和原始图像大小相同的灰度图中然后再对这幅灰度图进行最小值滤波滤波的半径由窗口大小决定一般有WindowSize 2 * Radius 1;                 暗通道先验的理论指出                                                                              实际生活中造成暗原色中低通道值主要有三个因素a)汽车、建筑物和城市中玻璃窗户的阴影或者是树叶、树与岩石等自然景观的投影b)色彩鲜艳的物体或表面在RGB的三个通道中有些通道的值很低比如绿色的草地树植物红色或黄色的花朵叶子或者蓝色的水面c)颜色较暗的物体或者表面例如灰暗色的树干和石头。总之自然景物中到处都是阴影或者彩色这些景物的图像的暗原色总是很灰暗的。       我们抛开论文中列举的那些例子自己从网上找几幅没有雾的风景照看看结果如下                                               一些无雾的图片                                                                                  其暗通道 在看看一些有雾的图的暗通道                       一些有雾的图片                                                                                  其暗通道   上述暗通道图像均使用的窗口大小为15*15即最小值滤波的半径为7像素。       由上述几幅图像可以明显的看到暗通道先验理论的普遍性。在作者的论文中统计了5000多副图像的特征也都基本符合这个先验因此我们可以认为其实一条定理。       有了这个先验接着就需要进行一些数学方面的推导来最终解决问题。   首先在计算机视觉和计算机图形中下述方程所描述的雾图形成模型被广泛使用                                                       其中I(X)就是我们现在已经有的图像待去雾的图像J(x)是我们要恢复的无雾的图像A是全球大气光成分 t(x)为透射率。现在的已知条件就是I(X)要求目标值J(x),显然这是个有无数解的方程因此就需要一些先验了。   将式1稍作处理变形为下式                                                         如上所述上标C表示R/G/B三个通道的意思。     首先假设在每一个窗口内透射率t(x)为常数定义他为并且A值已经给定然后对式7两边求两次最小值运算得到下式                                       上式中J是待求的无雾的图像根据前述的暗原色先验理论有                                                     因此可推导出                                                              把式10带入式8中得到                                                       这就是透射率的预估值。     在现实生活中即使是晴天白云空气中也存在着一些颗粒因此看远处的物体还是能感觉到雾的影响另外雾的存在让人类感到景深的存在因此有必要在去雾的时候保留一定程度的雾这可以通过在式11中引入一个在[0,1] 之间的因子则式11修正为                                                     本文中所有的测试结果依赖于  ω0.95。      上述推论中都是假设全球达气光A值时已知的在实际中我们可以借助于暗通道图来从有雾图像中获取该值。具体步骤如下       1 从暗通道图中按照亮度的大小取前0.1%的像素。           2 在这些位置中在原始有雾图像I中寻找对应的具有最高亮度的点的值作为A值。      到这一步我们就可以进行无雾图像的恢复了。由式1可知  J  ( I - A)/t A        现在I,A,t都已经求得了因此完全可以进行J的计算。      当投射图t 的值很小时会导致J的值偏大从而使淂图像整体向白场过度因此一般可设置一阈值T0当t值小于T0时令tT0本文中所有效果图均以T00.1为标准计算。      因此最终的恢复公式如下                                       当直接用上述理论进行恢复时去雾的效果其实也是很明显的比如下面一些例子                                 有雾图                                             去雾图       注意到第一幅图的原图两个字的周围明显有一块不协调的地方而第二图顶部水平方向似乎有一块没有进行去雾处理这些都是由于我们的透射率图过于粗糙了。       要获得更为精细的透射率图何博士在文章中提出了了soft matting方法能得到非常细腻的结果。但是他的一个致命的弱点就是速度特慢不使用于实际使用。在2011年何博士又除了一片论文其中提到了导向滤波的方式来获得较好的透射率图。该方法的主要过程集中于简单的方框模糊而方框模糊有多重和半径无关的快速算法。因此算法的实用性特强关于这个导向滤波算法大家在何博士的网站可以自己去研习下除了在去雾方面外还有着其他多方面的应用这部分本文不多述。      使用了导向滤波后的去雾效果                         使用原始的预估透射率图                                 使用导向滤波后的透射率图                      (a) 原图                                  (b)  去雾结果图                        c    暗通道图                          d 导向图 原始图像的灰度图                        e)   预估透射率图                       (f)   使用导向滤波后的透射率图   二、各参数对去雾结果的影响   第一窗口的大小。这个对结果来说是个关键的参数窗口越大其包含暗通道的概率越大暗通道也就越黑。我们不去从理论角度分析从实践的效果来看似乎窗口越大去雾的效果越不明显如下图所示                                        (a) 原始图像                            (b) 窗口大小11                     (c) 窗口大小21                         (d) 窗口大小101    我的建议是窗口大小在11-51之间即半径在5-25之间。      式12中的ω具有着明显的意义其值越小去雾效果越不明显举例如下                                            (a) 原始图像                                   (b)    ω0.5                                                            (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)的。       2按文中所描述的算法自动获得全球大气光的值。      这里说明一点原始论文中的A最终是取原始像素中的某一个点的像素我实际上是取的符合条件的所有点的平均值作为A的值我这样做是因为如果是取一个点则各通道的A值很有可能全部很接近255这样的话会造成处理后的图像偏色和出现大量色斑。原文作者说这个算法对天空部分不需特备处理我实际发现该算法对有天空的图像的效果一般都不好。天空会出现明显的过渡区域。作为解决方案我增加了一个参数最大全球大气光值当计算的值大于该值时则就取该值。                                       原图                                                         未对A值做限定                  最大A值限定为220        3 按式12计算预估的透射率图。   在式12中每个通道的数据都需要除以对应的A值即归一化这样做还存在一个问题由于A的选取过程并不能保证每个像素分量值除以A值后都小于1从而导致t的值可能小于0而这是不容许的原文作者并没有交代这一点是如何处理的。我在实际的编码中发现如果真的这样做了其效果也并不是很理想 因此我最后的办法是在式12中不考虑A的计算。         4计算导向滤波图。    这里可以直接用原始的图像做导向图当然也可以用其灰度图但是用RGB导向图在下一步的计算中会占用比较大的时间。         5按照《Guided Image Filtering》论文中的公式5、6、8编码计算获得精细的透射率图。     网络上有这个算法的 matlab代码可下载的这里贴部分代码   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(2r1)^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        由上面的代码可见主要的工作量在均值模糊上而均值模糊是个很快速的算法关于均值模糊的优化可参考我以前的文章彩色图像高速模糊之懒惰算法。       还有一点就是上述计算需要在[0,1]范围内进行也就是说导向图和预估的透射率图都必须从[0,255]先映射到[0,1]在进行计算。       关于guidedfilter中的半径r值因为在前面进行最小值后暗通道的图像成一块一块的为了使透射率图更加精细建议这个r的取值不小于进行最小值滤波的半径的4倍如下图所示                    a)  r最小值滤波半径的2倍                        (b) r最小值滤波半径的8倍       可以看到当r比较小的时候在透射率图中基本看不到什么细节信息因此恢复处的图像边缘处不明显。       参数eps的取值也有所讲究他主要是为了防止计算中除以0的错误以及为了使得某些计算结果不至于过大一般建议取值0.001或者更小。       如果使用的彩色RGB图做导向图计算时间上会增加不少所的到的透射率图的边缘会比灰度图所处理的保留了更多的细节效果上略微比灰度图好如下所示                         (a) 原图                                                                                    (b)预估的透射率图                                 (c)使用灰度图为导向图得到的透射率图                           (d)使用RGB图为导向图得到的透射率图                     (e)灰度图为导向图对应的去雾效果                               fRGB图导向图对应的去雾效果        以RGB图为导向图的计算中涉及到3*3部分矩阵求逆的过程如果用非matlab语言写可以先借助于matlab的符号计算功能以及其中的符号计算命令simple把计算结果算出来然后再再其他高级语言中实现。        (6) 按式22进行无雾图像的恢复。  四、其他一些去雾效果图                                                                   原图                                                 去雾效果图                                                      透射率图       上图中最后一副图我连续做了两次去雾的处理。        在原文中有这样一段话   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) fordisplay.      意思就是说直接去雾后的图像会比原始的暗因此在处理完后需要进行一定的曝光增强但作者没有说明其是如何增强的 因此这里的图和他论文的效果有所不同时正常的。一般在去雾处理后再用自动色剂之类的算法增强下会获得比较满意的结果如下图                          原图                 去雾后              自动色阶       去雾算法目前也有着众多其他的方式不过我所接触的很多都是以这个为基础因此先弄会这个为研究其他的去雾算法能奠定坚实的基础。       网络上有一些比较好的暗原色先验去雾的matlab代码比如和本文基本对应的matlab资源http://files.cnblogs.com/Imageshop/cvpr09defog%28matlab%29.rar   后记稍微有看了几篇去雾的文章基本上都是围绕着获得透视率图做文章比如一些文章讲用联合双边滤波方式获得精细的透射率从我个人浅薄的认识中我觉得去雾已基本上跳不出暗原色这个范畴了。       我对双边滤波算法那也做了实验发现这个的效果也还行就是速度慢了很多双边滤波的快速算法其实快不起来的所以这个的实用性不高我选择了一些图像做比较                                              (a) 原图                                                               b)   联合双边滤波去雾图                                  c 导向滤波获得透射率图                                                   (d)联合双边滤波透射率图(SigmadSigmaR100)        上图可以很明显的看出联合双边滤波的透射率图没有导向滤波的精细但比原始的粗糙的透射率图还是好很多过渡很光滑因此也能获得不错的视觉去雾效果。        联合双边滤波器中的算法是参考了OpenCv中相关函数写的。      和平常一样提供一个可供大家测试效果的程序 基于暗原色先验的图像去雾演示程序         我分别用VB6和C#做了个程序两个程序都已经通过各自的语言方式进行了优化算法部分编码是一样的C#运行速度大约是VB6的1.8倍。      在处理速度上比 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进行操作两者的效果区别不明显因此可用这种简便的方式。     上图是一副经典的测试图虽然取得了比较好的效果不过似乎马路那一块的效果不如一些其他人公开的成果那么好。         这也是一副比较常见的测试图该图也是紧用去雾获得结果未做任何的后处理同CSDN一个的案例库图像去雾的算法研究中的效果相比在整幅图像的对比和和协调性上都要好一个档次。      再如下图也比CSDN那个案例库中的效果要好很多。           还有             总结我对这种去雾算法的效果还是很满意的 效果和速度都还比较合适。    附件的测试程序已经同步更新。    2013.10,10 后记补充:     一直听说C的效率很高于是用C实现了该算法并且编制了一个可供其他语言调用的dll文件然后对最小值滤波算法又进行了特殊的优化算法速度有了很大的提高特别是在用VS2010时编写C的代码可以勾选下图中的SSE选项和快速fp:fast程序会调用SSE一些函数实现指令级别的并行。而这些C#的编译器是无法实现的。      同样的算法相对于原始的C#程序程序的速度能提高一倍左右对于800*600的图像在我的I3的CPU上平均能能达到20fps的速度只占用了一个核的CPU资源因此可以适用于不大于该范围内的实时图像处理。      同样我增加了3个内部可调的参数供大家测试。      相应的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下获得透射率效果如下                    SigmaS50,SigmaR30                           SigmaS100,SigmaR30    2014.1.12 重大更新可实现实时效果      何的算法效果以及普遍的实用性都比其他的去雾算法要好而主要的问题就是其速度还是不够快有着太多的浮点计算。鉴于此作者也多次试着对代码进行深层次的优化包括SSE处理、并行运行等但由于算法本身的顺序执行无法全程并行偶尔一个小函数可以并行但由于其本身执行就特别快比如不要5ms你去用并行算法可能耗时还会大一些。因此一直没有什么大的进步对于一副1024*768的彩图进行去雾需要90ms这肯定无法满足需求。      最近在思考既然暗通道去雾的透射率图比其他的算法都来的精细如果适当的降低一点点其精度其去雾的效果理论上应该不会有太大的区别于是我想到了一种方式即求取透射率的时候不是对原图进行求取而是先对原图进行下采样比如缩小为原图的1/4计算出小图的透射率之后在通过插值的方式的获取原图大概的透射率则应该也可以获得效果。经过实践这种方式大大的提高了执行速度而且效果和原始的方案基本一致对于1024*768的图像大约只需要I3CPU30ms了如果进一步取1/9的缩放则只需要大约20ms完全可以满足工业实时性要求高的场合。     当然如果你的缩小系数不是特别大的话比如缩小为原来的0.5大小可能两次缩放所用的耗时还抵消了计算小图的透射率图所换来的盈利因此必须合理选择这个下采样率。     要实现这样的速度当然还是需要很高的优化技巧的这些东西还是有所保留比较好。      我做了一个程序集成了本博客中6种图像去雾的算法 图像去雾综合版本           用暗通道的算法对一段视频进行了处理大家可以在这里看到效果http://video.sina.com.cn/v/b/124538950-1254492273.html      ****************************作者 laviewpbt   时间 2013.8.23    联系QQ:  33184777  转载请保留本行信息********************      写博不易土豪请打赏屌丝一分也是爱(非强制要求):
http://www.zqtcl.cn/news/703479/

相关文章:

  • 网站怎么做访问量统计百度百科怎么创建自己
  • 泉州开发网站的公司有哪些网站页面相似度查询工具
  • 卖文章的网站源码咸阳做网站的公司电话
  • 网站建设案例百度云怎么在手机上传百度云wordpress
  • 传媒公司取名seo网站推广怎么收费
  • 网站建设具体详细过程WordPress usdt收款
  • 网站标题应怎设置生产备案号怎么查询网站
  • 怎样建立网站目录结构网站 项目方案
  • jsp做网站还响应式科技公司网站模板
  • 杭州网站建设设计公司做阀门网站
  • 用模板建站青岛企业网站制作公司
  • 网站建设经费预算表辽宁工程建设招标网
  • sql数据库查询网站模板谷歌浏览器网页版入口
  • 成都h5建站市场监督管理局举报电话
  • 百度推广弄个网站头像要钱吗?最新新闻热点素材
  • 江苏做网站找谁wordpress主题设置插件
  • 郑州微信网站开发建筑网招工平台
  • 给网站挂黑链普工招聘最新招聘信息
  • 重庆推广网站排名价格上海房产信息网官网
  • 深圳网站公司制作网络公司排名
  • 郑州高端做网站网页制作与网站建设实战大全光盘
  • 科技网站制作公司免费模板建站网站
  • 网页排版精美的中文网站单页设计软件
  • 图书馆网站建设情况会员卡管理系统价格
  • 网站建设的通知沈阳品牌设计公司
  • html5网站框架宝安网站建设深圳信科
  • 做网站单页分销电商平台开发
  • 吉林网站备案南京网站开发选南京乐识好
  • 某网站建设方案纯文本网站连接
  • 怎样做网页游戏网站智通人才网东莞最新招聘信息官网