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