新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 牛人業(yè)話 > 實(shí)踐的意義——寫(xiě)給圖像處理算法愛(ài)好者的建議

實(shí)踐的意義——寫(xiě)給圖像處理算法愛(ài)好者的建議

作者: 時(shí)間:2017-02-21 來(lái)源:網(wǎng)絡(luò) 收藏

  陸放翁詩(shī)云:“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”,此乃亙古不變之真理也。

本文引用地址:http://m.butianyuan.cn/article/201702/344240.htm

  研究的一個(gè)很大特點(diǎn)就在于,它是一種和實(shí)際應(yīng)用緊密聯(lián)系的實(shí)用型學(xué)科。所有的算法都是針對(duì)實(shí)際中遇到的問(wèn)題而存在的。無(wú)論是我們新提出了一個(gè)算法,還是我們新學(xué)習(xí)了一個(gè)算法,都可以直接寫(xiě)一個(gè)程序來(lái)檢驗(yàn)它的處理效果。而且這種“效果”往往還是一目了然的。因?yàn)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/圖像處理">圖像處理的輸入和輸出都是圖像,圖像就是用來(lái)給人看的。這種直觀性是其它研究領(lǐng)域所很難具備的。例如,當(dāng)年何愷明博士向CVPR提交其關(guān)于圖像去霧算法的論文時(shí),審稿人就很驚訝于這么簡(jiǎn)單的方法居然有這么意外的效果。于是其中就有好奇的審稿人直接動(dòng)手編程實(shí)現(xiàn)了他的算法。正所謂,是騾子是馬,拉出來(lái)溜溜。他算法的效果最終征服了審稿人,也征服了大會(huì)的評(píng)委會(huì),最終那屆的最佳論文獎(jiǎng)就首次頒給了來(lái)自亞洲的研究者。

  而之于正在學(xué)習(xí)或研究圖像算法的同學(xué)而言,動(dòng)手實(shí)踐的意義就更大了。不要以為你聽(tīng)老師或別人講了一些算法,或者自己看看岡薩雷斯書(shū)上的描述,就覺(jué)得自己好像已經(jīng)get了什么。除非你真的自己能把程序?qū)懗隽耍駝t其實(shí)你什么都沒(méi)懂,最多也就是似懂非懂。這一點(diǎn)我最有發(fā)言權(quán)。很多算法我感覺(jué)我也學(xué)得不錯(cuò),但其實(shí)我在寫(xiě)Magic House的時(shí)候仍然花了很多時(shí)間去調(diào)試,因?yàn)樵趯?xiě)的過(guò)程中,其實(shí)問(wèn)題是層出不窮的。例如,我在寫(xiě)圖像傅立葉逆變換的時(shí)候,我感覺(jué)這個(gè)算法我已經(jīng)理解的很到位了,但是做逆變換的時(shí)候就是得不到原圖,而是一片黑。問(wèn)題到底出在哪里我其實(shí)斷斷續(xù)續(xù)想了挺長(zhǎng)時(shí)間。有一天突然開(kāi)竅了,因?yàn)楦盗⑷~變換的結(jié)果存在文件里,其實(shí)只是保存了實(shí)數(shù)的部分,虛數(shù)部分根本就沒(méi)存。因?yàn)槟阍谄聊簧峡锤盗⑷~變換結(jié)果圖的時(shí)候,看到的也只是實(shí)數(shù)部分。盡管你可能遇到的問(wèn)題跟我不一樣,但遇到這樣或那樣的問(wèn)題總是肯定的。我總結(jié)了自己鍛煉編寫(xiě)代碼的幾個(gè)原因:

  1)一方面你會(huì)發(fā)現(xiàn)過(guò)去你的理解可能是有偏差的,因?yàn)榘凑漳隳莻€(gè)想法去實(shí)現(xiàn)的代碼效果可能并不理想,那問(wèn)題出在哪里就很值得你思索;

  2)另一方面,你自己在實(shí)現(xiàn)的過(guò)程中很可能發(fā)現(xiàn)原作者算法的不足(比如我在實(shí)現(xiàn)暗通道算法時(shí)就發(fā)現(xiàn)這個(gè)算法處理大面積的天空時(shí)會(huì)有問(wèn)題),然后你進(jìn)一步研究的方向就來(lái)了!這在我看來(lái)似乎是發(fā)paper最容易的方法。

  3)我不得不告訴你,很多paper是會(huì)騙人的!中國(guó)有學(xué)術(shù)腐敗,國(guó)外也有學(xué)術(shù)造假。洛必達(dá)把他老師伯努利教給他的方法寫(xiě)進(jìn)了自己的書(shū)里,于是便有了今天你所學(xué)到的洛必達(dá)法則。從這個(gè)角度來(lái)看,18世紀(jì)的歐洲就已經(jīng)有學(xué)術(shù)腐敗了。有些作者paper里的效果很可能是PS過(guò)的,所以你按照他的方法,無(wú)論怎么做也不可能得到他的效果,這一點(diǎn)如果你不試試,就很可能被騙。

  4)寫(xiě)代碼本身就是一項(xiàng)本領(lǐng)或者基本功。你將來(lái)還很有可能要靠他生存。曲不離口、拳不離手。你現(xiàn)在不好好練,將來(lái)很可能作繭自縛。

  說(shuō)到這里我就不禁要提一句。懶惰既是推動(dòng)人類(lèi)創(chuàng)新的兩大動(dòng)力之一,但也可能是害得你“啥都不會(huì),只會(huì)坐等靠要”、最終一事無(wú)成的毒草。就像中國(guó)過(guò)去搞扶貧只會(huì)一味的輸血,本來(lái)還有二畝薄田可以耕種,現(xiàn)在政府有救濟(jì)款,索性連田也懶得種了,結(jié)果導(dǎo)致某些地方越扶越貧。現(xiàn)在很多人在網(wǎng)上一張嘴就是“有沒(méi)有源代碼下載”?或者買(mǎi)書(shū)看書(shū)也是挑那種“帶光盤(pán)的”或者滿篇滿篇就只有代碼的。抄來(lái)的過(guò)程當(dāng)然輕松,但是知識(shí)、技術(shù)學(xué)會(huì)了是自己的,抄來(lái)的東西始終是別人的。不是說(shuō)網(wǎng)上的代碼、資源不可以參考,但是你絕對(duì)不應(yīng)該對(duì)此產(chǎn)生依賴(lài)心理,人還是應(yīng)該靠自己。如果你寫(xiě)不出來(lái),只能說(shuō)明你還沒(méi)真正學(xué)會(huì),學(xué)懂。何況真正有技術(shù)含量的東西,你永遠(yuǎn)也抄不來(lái)。兩彈一星我們也曾想讓蘇聯(lián)幫忙,但人家憑啥給你?結(jié)果怎么樣,還不得靠中國(guó)人自己?jiǎn)?要知道,這個(gè)技術(shù)積累的過(guò)程本身也很重要。

  說(shuō)道實(shí)踐編程,你要么用C/C++,要么用,可能還有其他小眾的(比如我有時(shí)也用R做圖像處理),但大體上總逃不過(guò)這兩大陣營(yíng)。有人說(shuō)他用Java或者Python, Anyway這其實(shí)并不重要。我的討論還是以C/C++和為主體來(lái)講。當(dāng)然比較好用,什么卷積、直方圖、高斯濾波,一個(gè)函數(shù)搞定!C/C++如果結(jié)合OpenCV基本可以達(dá)到同樣的效果。當(dāng)這絕對(duì)是后話。如果你是初學(xué),最好能踏踏實(shí)實(shí)一點(diǎn)一滴把最基本的圖像處理算法實(shí)現(xiàn)一下。千里之行,始于足下。九層之臺(tái),起于累土。因?yàn)榻⒁粋€(gè)完整的體系思維和擁有一個(gè)扎實(shí)的基礎(chǔ)特別重要。一些看似高大上的算法都是在這些不起眼的算法的堆砌組合下實(shí)現(xiàn)的。比如SIFT特征構(gòu)建時(shí),你會(huì)遇到直方圖、高斯濾波和圖像金字塔這些非?;A(chǔ)的原件。當(dāng)你看到這些東西的時(shí)候,你就應(yīng)該有馬上覺(jué)悟到它們的各種特性和作用的能力。這對(duì)于你理解SIFT很有幫助。如果你具備了這種素質(zhì),詳細(xì)我,你再在matlab里調(diào)那些函數(shù)來(lái)寫(xiě)SIFT就非常容易。如果說(shuō)你學(xué)了一遍SIFT,但是還是寫(xiě)不出來(lái),結(jié)論就是因?yàn)樽罨镜母咚?、金字塔、直方圖你也沒(méi)自己寫(xiě)過(guò)。跳過(guò)了鍛煉基礎(chǔ)的階段,直接來(lái)高大上的東西,比如會(huì)無(wú)福消受。就像《天龍八部》里的番僧鳩摩智為了速成,不惜用道教的小無(wú)相功來(lái)催動(dòng)少林72絕技,結(jié)果走后入魔,前功盡廢。前兩天有網(wǎng)友給我博客留言:“如果只是把現(xiàn)成的算法實(shí)現(xiàn)一遍那也沒(méi)什么意思,原創(chuàng)算法的話就有技術(shù)含量了。”我當(dāng)時(shí)覺(jué)得可能這位網(wǎng)友水平比較高,看我這些雕蟲(chóng)小技自然不能入法眼。但我這兩天又在想拋開(kāi)大家水平高低不談,這句話到底對(duì)不對(duì)?我發(fā)現(xiàn),這個(gè)說(shuō)法還是有漏洞。你小學(xué)時(shí)候每天語(yǔ)文課上學(xué)了十個(gè)新漢字,老師就讓你在方格本上每個(gè)抄10遍,這種事當(dāng)然沒(méi)意思了,但是大家不都是這么沒(méi)意思過(guò)來(lái)的嗎?如果不這樣,你怎么能在高考的時(shí)候40分鐘寫(xiě)一篇800字命題作文呢?可見(jiàn)沒(méi)意思的事情未必沒(méi)意義!

  最后,用荀老夫子的一句話同大家共勉:無(wú)冥冥之志者,無(wú)昭昭之明,無(wú)昏昏之事者,無(wú)赫赫之功。

 



關(guān)鍵詞: 圖像處理 Matlab

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉