如何學(xué)好圖像處理——從小白到大神?
什么是數(shù)字圖像處理?歷史、以及它所研究的內(nèi)容
本文引用地址:http://cafeforensic.com/article/201702/344072.htm說起圖像處理,你會想到什么?你是否真的了解這個領(lǐng)域所研究的內(nèi)容??v向來說,數(shù)字圖像處理研究的歷史相當悠久;橫向來說,數(shù)字圖像處理研究的話題相當廣泛。
數(shù)字圖像處理的歷史可以追溯到近百年以前,大約在1920年的時候,圖像首次通過海底電纜從英國倫敦傳送到美國紐約。圖像處理的首次應(yīng)用是為了改善倫敦和紐約之間海底電纜發(fā)送的圖片質(zhì)量,那時就應(yīng)用了圖像編碼,被編碼后的圖像通過海底電纜傳送至目的地,再通過特殊設(shè)備進行輸出。這是一次歷史性的進步,傳送一幅圖片的時間從原來的一個多星期減少到了3小時。
1950年,美國的麻省理工學(xué)院制造出了第一臺配有圖形顯示器的電子計算機——旋風I號(Whirlwind I)。旋風I號的顯示器使用一個類似于示波器的陰極射線管(Cathode Ray Tube,CRT)來顯示一些簡單的圖形。1958年美國Calcomp公司研制出了滾筒式繪圖儀,GerBer公司把數(shù)控機床發(fā)展成為平板式繪圖儀。在這一時期,電子計算機都主要應(yīng)用于科學(xué)計算,而為這些計算機配置的圖形設(shè)備也僅僅是作為一種簡單的輸出設(shè)備。
隨著計算機技術(shù)的進步,數(shù)字圖像處理技術(shù)也得到了很大的發(fā)展。1962年,當時還在麻省理工學(xué)院攻讀博士學(xué)位的伊凡·蘇澤蘭(Ivan Sutherland)成功開發(fā)了具有劃時代意義的“畫板”(Sketchpad)程式。而這正是有史以來第一個交互式繪圖系統(tǒng),同時這也是交互式電腦繪圖的開端。從此計算機和圖形圖像被更加緊密地聯(lián)系到了一起。鑒于伊凡·蘇澤蘭為計算機圖形學(xué)創(chuàng)立所做出的杰出貢獻,他于1988年被授予計算機領(lǐng)域最高獎——圖靈獎。
1964年,美國加利福尼亞的噴氣推進實驗室用計算機對“旅行者七號”太空船發(fā)回的大批月球照片進行處理,以校正航天器上攝影機中各種類型的圖像畸變,收到了明顯的效果。在后來的宇航空間技術(shù)中,數(shù)字圖像處理技術(shù)都發(fā)揮了巨大的作用。
到了20世紀60年代末期,數(shù)字圖像處理已經(jīng)形成了比較完善的學(xué)科體系,這套理論在20世紀70年代發(fā)展得十分迅速,并開始應(yīng)用于醫(yī)學(xué)影像和天文學(xué)等領(lǐng)域。1972年,美國物理學(xué)家阿倫·馬克利奧德·柯麥科(Allan MacLeodCormack)和英國電機工程師戈弗雷·紐博爾德·豪恩斯弗爾德(Godfrey Newbold Housfield)發(fā)明了軸向斷層術(shù),并將其用于頭顱診斷。世界第一臺X射線計算機軸向斷層攝影裝置由EMI公司研制成功,這也就是人們通常所說的CT(Computer Tomograph)。CT可通過一些算法用感知到的數(shù)據(jù)去重建通過物體的“切片”圖像。這些圖像組成了物體內(nèi)部的再現(xiàn)圖像,也就是根據(jù)人的頭部截面的投影,經(jīng)計算機處理來進行圖像重建。鑒于CT對于醫(yī)學(xué)診斷技術(shù)的發(fā)展所起到的巨大推動作用,柯麥科和豪恩斯弗爾德于1979年獲得了諾貝爾生理或醫(yī)學(xué)獎。
隨后在2003年,諾貝爾生理或醫(yī)學(xué)獎的殊榮再次授予了兩位在醫(yī)療影像設(shè)備研究方面做出杰出貢獻的科學(xué)家——美國化學(xué)家保羅·勞特伯爾(Paul Lauterbur)和英國物理學(xué)家彼得·曼斯菲爾(Peter Mansfield)。兩位獲獎?wù)咴诶么殴舱癯上?Magnetic Resonance Imaging,MRI)顯示不同結(jié)構(gòu)方面分別取得了開創(chuàng)性成就。瑞典卡羅林斯卡醫(yī)學(xué)院稱,這兩位科學(xué)家在MRI領(lǐng)域的開創(chuàng)性工作,代表了醫(yī)學(xué)診療和研究的重大突破。而事實上,核磁共振的成功同樣也離不開數(shù)字圖像處理方面的發(fā)展。即使在今天,諸如MRI圖像降噪等問題依然是數(shù)字圖像處理領(lǐng)域的熱門研究方向。
說到數(shù)字圖像的發(fā)展歷程,還有一項至關(guān)重要的成果不得不提,那就是電荷耦合元件(Charge-coupled Device,CCD)。CCD最初是由美國貝爾實驗室的科學(xué)家維拉德·波義耳(Willard Sterling Boyle)和喬治·史密斯(George Elwood Smith)于1969年發(fā)明的。CCD的作用就像膠片一樣,它能夠把光學(xué)影像轉(zhuǎn)化為數(shù)字信號。今天人們所廣泛使用的數(shù)碼照相機、數(shù)碼攝影機和掃描儀都是以CCD為基礎(chǔ)發(fā)展而來的。換句話說,我們現(xiàn)在所研究的數(shù)字圖像主要也都是通過CCD設(shè)備獲取的。由于波義耳和史密斯在CCD研發(fā)上所做出的巨大貢獻,他們兩人共同榮獲了2009年度的諾貝爾物理學(xué)獎。
數(shù)字圖像處理在今天是非常熱門的技術(shù)之一,生活中無處不存在著它的影子,可以說它是一種每時每刻都在改變著人類生活的技術(shù)。但長久以來,很多人對數(shù)字圖像處理存在著較大的曲解,人們總是不自覺地將圖像處理和Photoshop聯(lián)系在一起。大名鼎鼎的Photoshop無疑是當前使用最為廣泛的圖像處理工具。類似的軟件還有Corel公司生產(chǎn)的CorelDRAW等軟件。
盡管Photoshop是一款非常優(yōu)秀的圖像處理軟件,但它的存在并不代表數(shù)字圖像處理的全部理論與方法。它所具有的功能僅僅是數(shù)字圖像處理中的一部分??偟膩碚f,數(shù)字圖像處理研究的內(nèi)容主要包括如下幾個方面:
1)圖像獲取和輸出
2)圖像編碼和壓縮
3)圖像增強與復(fù)原
4)圖像的頻域變換
5)圖像的信息安全
6)圖像的區(qū)域分割
7)圖像目標的識別
8)圖像的幾何變換
但圖像處理的研究內(nèi)容,又不僅限于上述內(nèi)容!所以說圖像處理的研究話題是相當寬泛的。那現(xiàn)在圖像處理都應(yīng)用在哪些領(lǐng)域呢?或許我們可能熟知的例子有(當然,你應(yīng)該還能舉出更多例子):
1)一些專業(yè)圖像處理軟件:Photoshop、CorelDRAW……
2)一些手機APP應(yīng)用:美圖秀秀、玩圖……
3)一些醫(yī)學(xué)圖像處理應(yīng)用:MRI、彩超圖像處理……
4)一些制造業(yè)上的應(yīng)用:元器件檢測、瑕疵檢測……
5)一些攝像頭、相機上的應(yīng)用:夜間照片的質(zhì)量改善……
6)一些電影工業(yè)上是應(yīng)用:換背景、電影特技……
什么樣的人會去學(xué)(或者需要學(xué))圖像處理?
1)如果你是我上述那些應(yīng)用領(lǐng)域的從業(yè)者,你當然需要掌握圖像方面的理論和技術(shù);2)相關(guān)專業(yè)的研究人員、大專院校的博士生、研究生。
所謂相關(guān)專業(yè)又是指什么呢?這個答案也可能相當寬泛,例如(但不僅限于此):Computer Science, Software Engineering, Electronic Engineering,Biomedical Engineering, Automation, Control, Applied Mathematics……
如何學(xué)好圖像處理——我的一些諫言
1)對于初級入門者
一個扎實的基礎(chǔ)和對于圖像處理理論的完整的、系統(tǒng)的整體認識對于后續(xù)的深入研究和實踐應(yīng)用具有非常非常重要的意義。
我經(jīng)常喜歡拿武俠小說《天龍八部》中的一段情節(jié)來向讀者說明此中的道理,相信讀者對這部曾經(jīng)被多次搬上銀幕的金庸作品已經(jīng)耳熟能詳了。書中講到有個名叫鳩摩智的番僧一心想練就絕世武學(xué),而且他也算是個相當勤奮的人了。但是,他錯就錯在太過于急功近利,甚至使用道家的小無相功來催動少林絕技。看上去威力無比,而且可以在短時間內(nèi)“速成”,但實則后患無窮。最終鳩摩智走火入魔,前功盡廢,方才大徹大悟。這個故事其實就告訴我們打牢基礎(chǔ)是非常重要的,特別是要取得更長足的發(fā)展,就更是要對基本原理刨根問底,力求甚解,從而做到庖丁解牛,游刃有余。
一些看似高深的算法往往是許多基礎(chǔ)算法的組合提升。例如,令很多人望而卻步的SIFT特征構(gòu)建過程中,就用到了圖像金字塔、直方圖、高斯濾波這些非常非?;A(chǔ)的內(nèi)容。但是,它所涉及的基礎(chǔ)技術(shù)顯然有好幾個,如果缺乏對圖像處理理論的系統(tǒng)認識,你可能會感覺事倍功半。因為所有的地方好像都是溝溝坎坎。
關(guān)于課程——
在這個階段其實對于數(shù)學(xué)的要求并不高,你甚至可以從一些感性的角度去形象化的理解圖像處理中很多內(nèi)容(但不包括頻域處理方面的內(nèi)容)。具體到學(xué)習的建議,如果有條件(例如你還在高校里讀書)你最好能選一門圖像處理方面的課程,系統(tǒng)地完整的地去學(xué)習一下。這顯然是入門的最好辦法。如此一來,在建立一個完整的、系統(tǒng)的認知上相當有幫助。如果你沒辦法在學(xué)校里上一門這樣的課,網(wǎng)上的一些公開課也可以試試。但現(xiàn)在中文MOOC上還沒有這方面的優(yōu)質(zhì)課程推薦。英文的課程則有很多,例如美國加州倫斯勒理工學(xué)院Rich教授的數(shù)字圖像處理公開課——https://www.youtube.com/channel/UCaiJlKxXamoODQtlx486qJA?spfreload=10。
關(guān)于教材——
顯然,只聽課其實還不太夠,如果能一并讀一本書就最好了。其實不用參考很多書,只要一本,你能從頭讀到尾就很好了。如果你沒有條件去上一門課,那讀一本來完整的自學(xué)一下就更有必要了。這個階段,去網(wǎng)上到處找博客、看帖子是不行的。因為你特別需要在這個階段對這門學(xué)問建立一個系統(tǒng)的完整的知識體系。東一塊、西一塊的胡拼亂湊無疑是坑你自己,你的知識體系就像一個氣泡,可能看起來很大,但是又脆弱的不堪一擊。
現(xiàn)在很多學(xué)校采用岡薩雷斯的《數(shù)字圖像處理》一書作為教材。這是一本非常非常經(jīng)典的著作。但是我必須要提醒讀者:
1)這是一本專門為Electronic Engineering專業(yè)學(xué)生所寫的書。它需要有信號與系統(tǒng)、數(shù)字信號處理這兩門課作為基礎(chǔ)。如果你沒有這兩門課的基礎(chǔ),你讀這本書要么是看熱鬧,要么就是看不懂。
下面是岡書中的一張插圖。對于EE的學(xué)生來說,這當然不是問題。但是如果沒有我說的那兩門課的基礎(chǔ),其實你很難把握其中的精髓。H和h,一個大小一個小寫,岡書中有的地方用H,有的地方用h,這都是有很深刻用意的。原作者并沒有特別說明它們二者的區(qū)別,因為他已經(jīng)默認你應(yīng)該知道二者是不同的。事實上,它們一個表示頻域信號,一個表示時域信號,這也導(dǎo)致有時候運算是卷積,有時候運算是乘法(當然這跟卷積定理有關(guān))。所以我并不太建議那些沒有這方面基礎(chǔ)的學(xué)生在自學(xué)的時候讀這本書。
2)岡薩雷斯教授的《數(shù)字圖像處理》第一版是在1977年出版的,到現(xiàn)在已經(jīng)快40年了;現(xiàn)在國內(nèi)廣泛使用的第二版是2002年出版的(第三版是2007年但是其實二者差異并不大),到現(xiàn)在也有20年左右的時間了。事實上,岡薩雷斯教授退休也有快30年了。所以這本書的內(nèi)容已經(jīng)偏于陳舊。數(shù)字圖像處理這個領(lǐng)域的發(fā)展絕對是日新月異,突飛猛進的。特別在最近二三十年里,很多新思路,新方法不斷涌現(xiàn)。如果你看了我前面推薦的Rich教授的公開課(這也是當前美國大學(xué)正在教學(xué)的內(nèi)容),你一下子就會發(fā)現(xiàn),原來我們的教育還停留在改革開放之前外國的水平上。這其實特別可怕。所以我覺得岡薩雷斯教授的《數(shù)字圖像處理》作為學(xué)習過程中的一個補充還是不錯的,但是如果把它作為主參考,那真的就是:國外都洋槍洋炮了,我們還在大刀長矛。
2)對于中級水平者
紙上得來終覺淺,絕知此事要躬行。對于一個具有一定基礎(chǔ)的,想更進一步的中級水平的人來說,這個階段最重要的就是增強動手實踐的能力。
還是說《天龍八部》里面的一個角色——口述武功、嘆為觀止的王語嫣。王語嫣的腦袋里都是武功秘籍,但問題是她從來都沒練過一招一式。結(jié)果是,然并卵。所以光說不練肯定不靈啊。特別是,如果你將來想從事這個行業(yè),結(jié)果一點代碼都不會寫,那幾乎是不可想象的。學(xué)習階段,最常被用來進行算法開發(fā)的工具是Matlab和OpenCV。你可以把這兩個東西都理解為一個相當完善的庫。當然,在工業(yè)中C++用得更多,所以Matlab的應(yīng)用還是很有限的。前面我們講到,圖像處理研究內(nèi)容其實包括:圖像的獲取和編解碼,但使用Matlab和OpenCV就會掩蓋這部分內(nèi)容的細節(jié)。你當然永遠不會知道,JPEG文件到底是如何被解碼的。
如果你的應(yīng)用永遠都不會涉及這些話題,那么你一直用Matlab和OpenCV當然無所謂。例如你的研究領(lǐng)域是SIFT、SURF這種特征匹配,可以不必理會編解碼方面的內(nèi)容。但是如果你的研究話題是降噪或者壓縮,可能你就繞不開這些內(nèi)容。最開始學(xué)的時候,如果能把這部分內(nèi)容也自己寫寫,可能會加深你的理解。以后做高級應(yīng)用開發(fā)時,再調(diào)用那些庫。所以具體用什么,要不要自己寫,是要視你所處的階段和自己的實際情況而定的。以我個人的經(jīng)驗,在我自學(xué)的時候,我就動手寫了Magic House,我覺得這個過程為我奠定了一個非常夯實的基礎(chǔ),對于我后續(xù)的深入研究很有幫助。
下面這個文中,我給出了一些這方面的資源,代碼多多,很值得參考學(xué)習:圖像處理與機器視覺網(wǎng)絡(luò)資源收羅http://blog.csdn.NET/baimafujinji/article/details/32332079
3)對于高級進階者
到了這個程度的讀者,編程實現(xiàn)之類的基本功應(yīng)該不在話下。但是要往深,往高去學(xué)習、研究和開發(fā)圖像處理應(yīng)用,你最需要的內(nèi)容就變成了數(shù)學(xué)。這個是攔在很多處于這個階段的人面前的一大難題。如果你的專業(yè)是應(yīng)用數(shù)學(xué),當然你不會感覺有問題。但如果是其他專業(yè)背景的人就會越發(fā)感覺痛苦。
如果你的圖像處理是不涉及機器學(xué)習內(nèi)容的,例如用Poisson方程來做圖像融合,那你就要有PDE數(shù)值解方面的知識;如果你要研究KAZE特征,你就必須要知道AOS方面的內(nèi)容。如果你研究TV降噪,你又要知道泛函分析中的BV空間內(nèi)容……這些詞你可能很多都沒聽過??偟膩碚f,這塊需要的內(nèi)容包括:復(fù)變函數(shù)、泛函分析、偏微分方程、變分法、數(shù)學(xué)物理方法……
如果你要涉足機器視覺方法的內(nèi)容,一些機器學(xué)習和數(shù)據(jù)挖掘方法的內(nèi)容就不可或缺。而這部分內(nèi)容同樣需要很強大的數(shù)學(xué)基礎(chǔ),例如最大似然方法、梯度下降法、歐拉-拉格朗日方程、最小二乘估計、凸函數(shù)與詹森不等式……
當然,走到這一步,你也已經(jīng)脫胎換骨,從小白到大神啦!路漫漫其修遠兮,吾將上下而求索。
評論