文档章节

关于《半反去雾算法》一文的四宗罪。

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:40
字数 1628
阅读 8
收藏 0

  最近在看一篇关于去雾的算法的文章:A Fast Semi-Inverse Approach to Detect and Remove the Haze from a Single Image,即我们中文常说的半反去雾算法,国内很多人引用这篇论文的主要的原因是论文提到了两点:第一,从论文中贴出的图片中看效果似乎去雾效果很不错;第二,论文号称可以实时。通过我自己的阅读和分析,我认为这篇论文水分很大,其效果和速度都值得怀疑,下面是我的一些分析,为方便,我们先简单的说下其半反的概念。

  对于一副RGB图像,其半反图像可以通过以下公式获得:

  for each Pixel in Image

    do:      

      NewRed = Max ( Red , 255 - Red ) ;

      NewGreen = Max (Green , 255 - Green );

      NewBlue = Max (Blue , 255 - Blue);

  这样进行操作后,图像的像素值肯定都大于127了,因此有必要重新拉升一下,论文中叫做renormalization操作,这个操作具体人如何论文没提,我们可以认为是自动对比度之类的算法。

  对于不会编程的朋友,要想获得这个半反图像,也可以借助PS实现,第一步:调用PS 滤镜-- 风格化-- 曝光过度菜单;第二部: 点调整--反色;第三步:调整--自动对比度。

  那么接着指出论文的几大问题:

   第一宗罪: 论文的原理首先不太占的住脚。

  论文首先也是提出了一种先验,即时通过对 daily light conditions 条件下对多副图像进行统计,获知在有雾图像中,有雾区域的半反图像和原始图像基本没什么变化。这个的主要原因作者说是有雾的区域或者天空其RGB分量各元素的值都比较亮,而无雾的地方符合暗通道原理,即总有一个分量的值比较小。

      首先,假如说上述条件成立,那么这篇论文的算法也就只适合于在光照条件比较亮的气候下拍摄的图片的去雾了,这就大大限制其应用范围,而论文没有在任何地方对这一点进行强调,有掩盖的嫌疑。

      其次,这个先验是否合理呢,因为是先验,我们当然不要求其100%都正确,有个80%就差不多了,可我对去雾相关论文里的一些常用图片进行测试,很多都无法获得理想的结果。

    

    

    

                           原图                                         半反图

     第一、第二图结果还算行,我们看第三副图,应该说也是在 daily light conditions 条件下拍摄的吧,看其半反图,按照作者的说法应该基本就是没有雾的区域了,那么后面的所谓的去雾算法就无法进行下去了,而这种结果对于我这里很多有雾图都是存在的。

     第二宗罪:大气光A的计算

   在求大气光的过程中,作者有这句话:In order to mask the most haze-opaque areas, we perform the same procedure,but with the intensity of the semi-inverse increased by a factor ξ (with a default value of ξ =0.3)。为什么这里要把intensity 的值增加一点,然后何为intensity(要知道这个有N多种定义方法),我实在搞不明白增加这个有何目的。然后真正在求半反图中未被mask的部分搜索最大的intensity值时,也存在诸多疑问,因为最大的intensity值有可能不出现在一处,此时你取和原始图对应的那个地方的intensity 作为最终的A呢,每个地方的可能不同啊,论文未明确指出。

     第三宗罪:计算无雾图像时的过程很不清晰

     在计算无雾图像时,其主要公式为6和7,对于公式6,我们看到论文中对Ci的取值分别为0.2,0.4,0.6,0.8,1,我认为,这个取值明显不合理,当Ci取值较大时,Ci*A的值也就越大,此时公式获得层图像整体就越来越偏暗,如果求得的大气光A接近白色,那么对层图像进行所谓的半反求取有雾区域就变得毫无意义了。而且对论文的图5中的几个结果,根据我自己的编程结果表明,只可能是在Ci=0,0.1,0.2,0.3附近获得的,这说明作者是对这些系数做有意的隐瞒。

    对于公式7,论文根本没讲清楚公式中系数的计算方式,并且这种累加对于重叠的有雾区域很容易理解,而那些在每层都判断为无雾的区域进行叠加的后的效果应该是没有任何变化啊,为什么在论文的图5中,这部分的颜色明显有变化呢。

    第四宗罪:计算用时绝对作假

    原文对计算用时这样描述的:Our method implemented on CPU (Intel 2 Duo 2.00GHz) processes an 600×800 image in approximately 0.013 seconds being suitable for real-time outdoor applications。 这话绝对造假,我们不说别的,就其中的两个过程就使得整个算法不会有这么快,第一:计算半反图和原图的h的差异的时候,论文中说是在CIE LCH空间的H值进行计算的,诸位可以去看看LCH空间中H分量的计算过程,有很多计算,其中不凡有除或者浮点运算,而这种比较在论文中所描述的算法过程中至少需要6次(一次用于计算大气光A,5次用于计算各层的数据)。第二:算法有5次600*800大小彩色图像的合成过程,而且过程涉及浮点运算(用定点运算优化也会有除法部分的),不谈实际中还含有其他的计算,就这两个过程在这个样档次的CPU上对600*800的图像绝对不是13ms能完成的,这个CPU是双核的,开双线程能达到这个速度,我不相信。

      因此,从各方面考虑,我认为这篇论文存在着严重的漏洞和不足,不应该在图像去雾领域推广。

     作者知识有限,肯定有分析不正确的地方,望各位博友谅解。

 

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

 

本文转载自:http://www.cnblogs.com/Imageshop/p/3475223.html

共有 人打赏支持
abcijkxyz
粉丝 64
博文 6196
码字总数 1876
作品 0
深圳
项目经理
软件开发七宗罪

一起来看看世界各地的程序员们所共有的致命通病,从软件开发的地狱中拯救自己。这七宗罪你有几条? 想成为一名优秀的软件开发人员需要很长时间的培训和实践。但是如果不遵循合适的原则,即便...

二胡
2011/03/02
1K
5
开源软件,自由软件,免费软件三者的区别

一。好汉一问:什么是开源软件?什么是自由软件?他们就是免费软件? 很多人经常把开源软件和自由软件混为一谈,也常常会有人把开源软件和免费软件这两个概念混淆在一起,其实当我第一此站在...

微wx笑
2014/07/12
0
0
自由软件与开源软件的介绍

2016-03-17 老王 极客方式 一。好汉一问:什么是开源软件?什么是自由软件?他们就是免费软件? 很多人经常把开源软件和自由软件混为一谈,也常常会有人把开源软件和免费软件这两个概念混淆在...

大飞侠大虾
2017/11/03
0
0
致饱醉豚:子虚乌有的程序员六宗罪,这锅,我们不背!

现在的人呐,一旦有了点小名气,就喜欢乱说话,特别是乱说一些以偏概全、哗众取宠、博取眼球的瞎话。要知道,在互联网如此发达的今天,那传播速度,那影响范围,不可小觑。 而有些人偏要这么...

亦枫
2017/12/13
0
0
袁萌:国产Linux违反《计算机软件保护条例》

有人对Linux打假很不理解,认为国产Linux没有什么假要打。这种认识是完全错误的。 大家知道,《中华人民共和国计算机软件保护条例》(本文简称《保护条例》)第二十四条规定:“除《中华人民...

鉴客
2010/09/01
2.3K
17

没有更多内容

加载失败,请刷新页面

加载更多

RESTful架构详解

1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主...

kitty1116
34分钟前
1
0
精通Spring Boot——第十篇:Quartz动态配置定时任务

定时任务简述 定时任务,在企业开发中尤其重要,很多业务都是需要定时任务去做的。比如说10点开售某件东西,凌晨0点统计注册人数,统计其他各种等等。这个时候不可能说让人为的去开启某个开关...

developlee的潇洒人生
36分钟前
1
0
将一些内容输出到文件中

看到一个面试题,如下: 第八题: 一个字符串将其输入到一个文件中,代码如下: <?php$a = '[{"teamId": "43", "serial": "1"},{"teamId": "1", "serial": "2"},{"teamId": "14", "serial":...

vinci321
45分钟前
1
0
nginx的简单使用:负载均衡

nginx:反向代理的服务器;用户发送请求到nginx,nginx把请求发送给真正的服务器,等待服务器处理完数据并返回,再把数据发送给用户。 nginx作为一个反向代理服务器,能缓存我们项目的静态文...

osliang
今天
2
0
网站title标题被改并被百度网址安全中心提醒的解决办法

国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且很明显的一个特征就是在百...

网站安全
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部