陆放翁诗云:“纸上得来终觉浅,绝知此事要躬行”,此乃亘古不变之真理也。
图画处理研讨的一个很大特色就在于,它是一种和实践使用紧密联系的实用型学科。一切的算法都是针对实践中遇到的问题而存在的。不管是咱们新提出了一个算法,仍是咱们新学习了一个算法,都能够直接写一个程序来查验它的处理效果。并且这种“效果”往往仍是一望而知的。由于图画处理的输入和输出都是图画,图画便是用来给人看的。这种直观性是其它研讨范畴所很难具有的。例如,当年何恺明博士向CVPR提交其关于图画去雾算法的论文时,审稿人就很惊奇于这么简略的办法居然有这么意外的效果。所以其间就有猎奇的审稿人直接着手编程完成了他的算法。正所谓,是骡子是马,拉出来溜溜。他算法的效果终究征服了审稿人,也征服了大会的评委会,终究那届的最佳论文奖就初次颁给了来自亚洲的研讨者。
而之于正在学习或研讨图画算法的同学而言,着手实践的含义就更大了。不要认为你听教师或他人讲了一些算法,或许自己看看冈萨雷斯书上的描绘,就觉得自己如同现已get了什么。除非你真的自己能把程序写出了,不然其实你什么都没懂,最多也便是似懂非懂。这一点我最有发言权。许多算法我感觉我也学得不错,但其实我在写Magic House的时分依然花了许多时刻去调试,由于在写的进程中,其实问题是层出不穷的。例如,我在写图画傅立叶逆改换的时分,我感觉这个算法我现已了解的很到位了,可是做逆改换的时分便是得不到原图,而是一片黑。问题究竟出在哪里我其实时断时续想了挺长时刻。有一天忽然开窍了,由于傅立叶改换的成果存在文件里,其实仅仅保存了实数的部分,虚数部分根本就没存。由于你在屏幕上看傅立叶改换成果图的时分,看到的也仅仅实数部分。虽然你或许遇到的问题跟我不一样,但遇到这样或那样的问题总是必定的。我总结了自己训练编写图画处理代码的几个原因:
1)一方面你会发现曩昔你的了解或许是有误差的,由于依照你那个主意去完成的代码效果或许并不抱负,那问题出在哪里就很值得你思索;
2)另一方面,你自己在完成的进程中很或许发现原作者算法的缺乏(比方我在完成暗通道算法时就发现这个算法处理大面积的天空时会有问题),然后你进一步研讨的方向就来了!这在我看来似乎是发paper最简单的办法。
3)我不得不告知你,许多paper是会哄人的!我国有学术腐败,国外也有学术造假。洛必达把他教师伯努利教给他的办法写进了自己的书里,所以便有了今日你所学到的洛必达规律。从这个视点来看,18世纪的欧洲就现已有学术腐败了。有些作者paper里的效果很或许是PS过的,所以你依照他的办法,不管怎样做也不或许得到他的效果,这一点假如你不试试,就很或许上圈套。
4)写代码自身便是一项身手或许根本功。你将来还很有或许要靠他生计。曲不离口、拳不离手。你现在不好好练,将来很或许作法自毙。
提到这儿我就不由要提一句。懒散既是推进人类立异的两大动力之一,但也或许是害得你“啥都不会,只会坐等靠要”、终究一事无成的害草。就像我国曩昔搞扶贫只会一味的输血,原本还有二亩薄田能够播种,现在政府有救济款,干脆连田也懒得种了,成果导致某些当地越扶越贫。现在许多人在网上一张嘴便是“有没有源代码下载”?或许买书看书也是挑那种“带光盘的”或许满篇满篇就只有代码的。抄来的进程当然轻松,可是常识、技能学会了是自己的,抄来的东西始终是他人的。不是说网上的代码、资源不能够参阅,可是你肯定不应该对此发生依靠心思,人仍是应该靠自己。假如你写不出来,只能阐明你还没真实学会,学懂。况且真实有技能含量的东西,你永久也抄不来。两弹一星咱们也曾想让苏联协助,但人家凭啥给你?成果怎样样,还不得靠我国人自己吗?要知道,这个技能堆集的进程自身也很重要。
说道实践编程,你要么用C/C++,要么用Matlab,或许还有其他小众的(比方我有时也用R做图画处理),但大体上总逃不过这两大阵营。有人说他用Java或许Python, Anyway这其实并不重要。我的评论仍是以C/C++和Matlab为主体来讲。Matlab当然比较好用,什么卷积、直方图、高斯滤波,一个函数搞定!C/C++假如结合OpenCV根本能够到达相同的效果。当这肯定是后话。假如你是初学,最好能踏踏实实一点一滴把最根本的图画处理算法完成一下。千里之行,始于足下。九层之台,起于累土。由于树立一个完好的系统思维和具有一个厚实的根底特别重要。一些看似巨大上的算法都是在这些不起眼的算法的堆砌组合下完成的。比方SIFT特征构建时,你会遇到直方图、高斯滤波和图画金字塔这些十分根底的原件。当你看到这些东西的时分,你就应该有立刻醒悟到它们的各种特性和效果的才能。这关于你了解SIFT很有协助。假如你具有了这种本质,具体我,你再在matlab里调那些函数来写SIFT就十分简单。假如说你学了一遍SIFT,可是仍是写不出来,定论便是由于最根本的高斯、金字塔、直方图你也没自己写过。跳过了训练根底的阶段,直接来巨大上的东西,比方会无福消受。就像《天龙八部》里的番僧鸠摩智为了速成,不吝用道教的小无相功来催动少林72绝技,成果走后入魔,前功尽废。前两天有网友给我博客留言:“假如仅仅把现成的算法完成一遍那也没什么意思,原创算法的话就有技能含量了。”我其时觉得或许这位网友水平比较高,看我这些虫篆之技天然不能入高眼。但我这两天又在想抛开我们水平凹凸不谈,这句话究竟对不对?我发现,这个说法仍是有缝隙。你小学时分每天语文课上学了十个新汉字,教师就让你在方格本上每个抄10遍,这种事当然没意思了,可是我们不都是这么没意思过来的吗?假如不这样,你怎样能在高考的时分40分钟写一篇800字命题作文呢?可见没意思的工作未必没含义!
最终,用荀老夫子的一句话同我们共勉:无冥冥之志者,无昭昭之明,无昏昏之事者,无赫赫之功。