paper 100:何恺明经典去雾算法
一:由简至美的最佳论文(作者:何恺明 视觉计算组)
【视觉机器人:个人感觉学习他的经典算法固然很重要,但是他的解决问题的思路也是非常值得我们学习的】
那是2009年4月24日的早上,我收到了一封不同寻常的email。发信人是CVPR 2009的主席们,他们说我的文章获得了CVPR 2009的最佳论文奖(Best Paper Award)。我反复阅读这封邮件以确认我没有理解错误。这真是一件令人难以置信的事情。
北京灰霾照片的去雾结果
CVPR的中文名是计算机视觉与模式识别会议,是计算机视觉领域最顶尖的国际会议之一。今年的CVPR共收到约1450篇投稿,其中393篇文章被接收,接收率为26%。只有一篇文章被选为今年的最佳论文。这是CVPR创立25年以来首次由中国人获得这个奖项。这篇文章是我在微软亚洲研究院形象计算组实习的时候完成的,也是我个人真正意义上写的第一篇论文。
简单有效的图像去雾技术
这篇论文研究的问题是图像的去雾技术,它可以还原图像的颜色和能见度,同时也能利用雾的浓度来估计物体的距离,这些在计算机视觉上都有重要应用(例如三维重建,物体识别)。但是之前人们还没找到简单有效的方法来达到这个目的。在这篇论文里,我们找到了一个非常简单的,甚至说令人惊讶统计规律,并提出了有效的去雾方法。
与之前的方法不同,我们把注意力放到了无雾图像的统计特征上。我们发现,在无雾图像中,每一个局部区域都很有可能会有阴影,或者是纯颜色的东西,又或者是黑色的东西。因此,每一个局部区域都很有可能有至少一个颜色通道会有很低的值。我们把这个统计规律叫做Dark Channel Prior。直观来说,Dark Channel Prior认为每一个局部区域都总有一些很暗的东西。这个规律很简单,但在我们研究的去雾问题上却是本质的基本规律。
由于雾总是灰白色的,因此一旦图像受到雾的影响,那么这些本来应该很暗的东西就会变得灰白。不仅如此,根据物理上雾的形成公式,我们还能根据这些东西的灰白程度来判断雾的浓度。因此,我们提出的Dark Channel Prior能很有效地去除雾的影响,同时利用物的浓度来估算物体的距离。
电脑游戏带来的灵感
这个想法的产生来自于两个偶然的观察。
第一个观察来自一个3D游戏。这个游戏有很多带有雾的场景,但这些场景都是虚构的不实在的东西。计算机生成的3D图像会与自然图像的统计规律有很大区别,但人的视觉系统却仍然能感觉到虚拟图像中存在的雾。这让我相信,人的视觉系统一定有一种有效的机制来感知有雾的图像,而且这种机制一定与现存的去雾方法不一样。前人提出的去雾方法都把重点放在图像的对比度上,但虚拟场景和现实场景在对比度上的统计规律会很不一样。人的视觉系统仍然能够感知虚拟场景中的雾,说明除了对比度以外,人眼一定还在利用别的东西来感知雾。所以我觉得,这个问题里一定有人们未曾发现的更接近本质的东西。
第二个观察来自对前人的去雾方法的研究。之前最有效的去雾方法是Fattal在2008年的Siggraph文章《Single Image Dehazing》中提出来的,这篇文章是我们首要超越的目标。这篇文章里给出的比较结果中,我发现一种叫做Dark Object Subtraction的方法有时候会有更好的效果。这种方法利用了全图最暗的点来去除全局均匀的雾。如果雾的确是均匀的,这种方法就会更有效。其缺点在于它无法处理不均匀的雾,而这却正是去雾问题中的难点。因此自然的想法就是局部利用Dark Object Subtraction处理图像。而恰巧这样做并不需要利用对比度,说明它与之前的方法有了本质的区别。让人吃惊的是,在大量的实验中,我发现这么简单的想法,其效果却非常好。
但我们论文中最重要的观点却形成在我动笔写文章之后。在文章的前几稿中,我在形象计算组的mentor孙剑一直追问我,我们的方法能成功的本质原因是什么,背后有什么我们没有充分理解透彻的“真知灼见”。尽管我们有很简单的方法,也有很漂亮的实验结果,但我们却无法让人对这种方法的有效性感到信服。这是因为我们还讲不出个道理来。带着这个问题,我又回到了实验和观察之中。我发现,既然大量实验结果证实局部做Dark Object Subtraction的做法是成功的,那么就说明去雾之后的图像的每个局部的确是有暗的物体存在的。也就是说,在这个方法成功的背后,其实有一个关于无雾图像的统计规律。我的mentor孙剑让我去先去研究一个无雾图像的数据库。通过大量的实验,我们发现这个统计规律是客观存在的。这就是我们所提出的Dark Channel Prior。
这是我写的第一篇论文
2007年,我从清华大学基础科学班本科毕业,之后就读于香港中文大学。在基础科学班的主修课程是数学和物理,因此在本科阶段,我并没有系统地学习过计算机方面的相关知识。出于兴趣,我选修了计算机图形和图像方面的一些相关课程。但是在进入微软亚洲研究院实习的初期,这些基础课程远远不足以应付我面对的研究工作。背景知识的缺乏使我在入门的路上举步维艰。在阅读文章的时候,我常常都不知道哪些是大家都在用的方法,哪些才是作者的贡献。对我来说,我看见的每一样东西都是新的。
在面试的时候,我的导师汤晓鸥就跟我说过,他并不在意我没有相关的背景知识,因为所有相关的东西都是可以学的。在进入微软亚洲研究院实习的头一年里,我在mentor孙剑的指导下做过几个不同的课题,虽然都没有成功,但从中学习了不少知识。其中我花了大量时间研究的image matting问题 (半透明物体边界提取),就对这次的文章有很大帮助。在刚开始研究去雾的时候,我就发现雾的方程和matting的方程非常相似,而我之前所研究的matting框架可以给去雾带来帮助。利用这个框架,我只需要寻找一个能局部估算雾的浓度的方法就行了。这个框架使得我能专心的寻找这样的方法并且最后提出了Dark Channel Prior。
纽约、北京灰霾照片的去雾结果
即使有了想法和实验结果,第一次写文章也使我觉得非常困难。我经常陷入自己和自己吵架的角色当中。在每一段话写好之后,我常常会质问自己事情到底是不是这样的,这其中有没有漏洞。我也会问自己,如果我是评委,或者是读者,那么我能看懂这篇文章吗,我怎么写才能让思路更加流畅。就在这样的挣扎中,一稿通常要写好几天。而即使是这样,起初的几稿也远没能让孙剑满意。一开始,他只在文章的结构、思路和观点的提出上给我建议,而不去具体修改我的文章。于是我又回去继续和自己吵架。但每当我把自己说服了,孙剑还是总能提出新的质疑。就在这样的循环中,终于有一天孙剑说文章已经写得不错了,他才开始具体的修改。正是这样的苛刻要求,才会有后来高质量的文章。
大道之行在于简
我们这篇文章的三个审稿人都给出了最高的评分。他们认为我们的方法简单而有效。其中一位评委说,Dark Channel Prior的想法听起来很不可思议,但我们却证明了其真实性。另一位评委认为很少有文章能够用如此简单的方法使实验结果获得如此大的提升。还有一位评委甚至亲自实现了我们的方法并确认其可行。孙剑说阅读这样的评审结果是一件让人快乐的事情。而汤老师认为,这篇文章的成功在于三个方面。第一,方法非常简单;第二,对于一个很困难的问题,给出了很好的结果;第三,发现了一个基本的自然规律并且应用在实际的问题中。在迈阿密的演讲结束后,观众也给予了很高的评价。他们跟我说,这是这次CVPR上最有趣的一个演讲。
一位与会的研究员说,最好的idea,往往就是那些看起来很简单,但说出来大家都会觉得怎么没有人想到过的idea。而我们的idea正好就符合了这一点。我们论文摘要的第一句话是这么说的,“我们提出了一个简单而有效的方法”。或许,这就是对我们这次工作最好的概括——简单的,就是美的。
作者介绍
何恺明:微软亚洲研究院视觉计算组实习生,现就读于香港中文大学讯息工程多媒体实验室,本科毕业于清华大学基础科学班。他是2006年微软小学者奖学金获得者之一,同时也是2003年广东省高考状元。
二:高级图像去雾算法的快速实现
http://blog.csdn.net/huixingshao/article/details/42834939
这是一篇详细的介绍何恺明去雾算法的博文,并且给出了实现程序,似乎源码没有
三:Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper
http://blog.csdn.net/abcjennifer/article/details/6662706
CSDN名博Rachel-Zhang给出的Matlab和Opencv代码以及详细介绍
四: 何恺明博客
http://research.microsoft.com/en-us/um/people/kahe/
经典:CVPR best paper award in 2009 经典去雾算法Single Image Haze Removal Using Dark Channel Prior。CVPR创立25年以来首次由中国人获得这个奖项
他的有关去雾的论文和持续到2013年的改进在:http://research.microsoft.com/en-us/um/people/kahe/cvpr09/index.html
方向:deep learning for visual recognition, including image classification, object detection, and semantic segmentation.;
资源:Paper、code
更新:2015
paper 100:何恺明经典去雾算法的更多相关文章
- paper 105: 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果及其他
在图像去雾这个领域,几乎没有人不知道<Single Image Haze Removal Using Dark Channel Prior>这篇文章,该文是2009年CVPR最佳论文.作者 ...
- 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果(速度可实时)
最新的效果见 :http://video.sina.com.cn/v/b/124538950-1254492273.html 可处理视频的示例:视频去雾效果 在图像去雾这个领域,几乎没有人不知道< ...
- 纯C++去雾算法
去雾算法 前言:经过不断的改进研究,该算法最终稳定,高效的问世了. 经过研究使该算法适应大雾环境,对该算法的内存优化,可以实时的高效的执行. 一.实时视频: watermark/2/text/aHR0 ...
- 暗通道去雾算法的python实现
何凯明博士的去雾文章和算法实现已经漫天飞了,我今天也就不啰里啰唆,直接给出自己python实现的完整版本,全部才60多行代码,简单易懂,并有简要注释,去雾效果也很不错. 在这个python版本中,计算 ...
- 基于暗通道优先算法的去雾应用(Matlab/C++)
基于暗通道优先的单幅图像去雾算法(Matlab/C++) 算法原理: 参见论文:Single Image Haze Removal Using Dark Channel Pri ...
- OpenCV导向滤波(引导滤波)实现(Guided Filter)代码,以及使用颜色先验算法去雾
论文下载地址:http://research.microsoft.com/en-us/um/people/jiansun/papers/GuidedFilter_ECCV10.pdf 本文主要介绍导向 ...
- 一种可实时处理 O(1)复杂度图像去雾算法的实现。
在我博文的一系列的文章,有不少算法都于去雾有关,比如限制对比度自适应直方图均衡化算法原理.实现及效果.局部自适应自动色阶/对比度算法在图像增强上的应用这两个增强算法都有一定的去雾能力,而最直接的就是& ...
- 谷歌2019 学术指标发榜:CVPR首次进入Top 10,何恺明论文引用最高!
[导读]今天,谷歌发布了2019最新版学术指标,对收录的会议和期刊的影响力进行排名.AI类的多个顶会进入榜单Top 100,CVPR更是进入前10,而何恺明的"深度残差网络"单篇引 ...
- 100道MySQL数据库经典面试题解析(收藏版)
前言 100道MySQL数据库经典面试题解析,已经上传github啦 https://github.com/whx123/JavaHome/tree/master/Java面试题集结号 公众号:捡田螺 ...
随机推荐
- CSS3+HTML5实现块阴影与文字阴影
CSS 3 + HTML 5 是未来的 Web,它们都还没有正式到来,虽然不少浏览器已经开始对它们提供部分支持.本教程分5节介绍了 5 个 CSS3 技巧,可以帮你实现未来的 Web,不过,这些技术不 ...
- [zt]Singleton和Double-Checked Locking设计模式—UML图及代码实现
Singleton和Double-Checked Locking设计模式,分别指的是单例模式和双重检查锁模式,它们都可以用于确保某个类只有一个对象实例化. 两个模式的区别在于:Singleton模式用 ...
- if分支练习
1.输入三个整数,xyz,最终以从小到大的方式输出.利用嵌套. 方法一: 方法二: 2.输入一个小于等于100的整数,判断: //是小于10的 //两位数 //是100 3.//输入学生姓名,输入 ...
- hdu Dragon Balls
这题是一道简单的并查集的运用.龙珠所在的城市.该城市龙珠数目都是很简单的问题,稍微麻烦一点的就是龙珠被移动的次数,因为每一次要移动的是一个城市中所有的龙珠,所以每次移动该城市中所有龙珠的移动次数都要加 ...
- 概率论与数理统计ppt链接
http://e-learning.ecust.edu.cn/G2S/Template/View.aspx?courseId=26835&topMenuId=72352&action= ...
- centos install zookeeper cluster
1.apache官方下载, 2.新版本需要jdk环境,然后配置好jdk环境 3.解压zookeeper,进入解压后的conf,新建zoo.cfg (删掉自带的cfg)内容如下 tickTime=200 ...
- DateUtils
package com.vcredit.ddcash.batch.util; import java.text.SimpleDateFormat;import java.util.Calendar;i ...
- el 表达式 和 ognl表达式
el (expression language) el 基础操作符 el 能够隐含对象(就是可以直接访问的) el 的两种使用方式,第二种好像在jsp中没有什么用,主要用于jsf el能够访问的对象( ...
- 用session实现简单的购物
package cn.itcast.shopping; import java.io.IOException; import java.io.PrintWriter; import java.util ...
- 400 Bad Request(angluarJs)
今天做一个编辑的功能的时候,像后台传递一个实体,结果报400 Bad Request的错误....找了好久也没发现错误,老是报(不支持GET方式提交),检查好多遍我都是用的POST...不知道问题出在 ...