1.圖像處理與計算機視覺:基礎,經典以及最近發展序

1. 爲什麼要寫這篇文章

從2002年到現在,接觸圖像快十年了。雖然沒有做出什麼很出色的工作,不過在這個領域摸爬滾打了十年之後,發現自己對圖像處理和計算機視覺的感情越來越深厚。下班之後看看相關的書籍和文獻是一件很愜意的事情。平常的一大業餘愛好就是收集一些相關的文章,尤其是經典的文章,到現在我的電腦裏面已經有了幾十G的文章。寫這個文檔的想法源於我前一段時間整理文獻時的一個突發奇想,既然有這個多文獻,何不整理出其中的經典,共享給大家呢。於是當時即興寫了一個《圖像處理與計算機視覺中的經典論文》。現在來看,那個文檔寫得及其拙劣,所共享的論文也非常之有限。就算如此,還是得到了一些網友的誇獎,心裏感激不盡。因此,一直想下定決心把這個文章給完善,力求做到儘量全面。


本文是對現有的圖像處理和計算機視覺的經典書籍(後面會有推薦)的一個補充。一般的圖像處理書籍都是介紹性的介紹某個方法,在每個領域內都會引用幾十上百篇參考文獻。有時候想深入研究這個領域的時候卻發現文獻太多,不知如何選擇。但實際上在每個領域都有那麼三五篇抑或更多是非讀不可的經典文獻。這些文獻除了提出了很經典的算法,同時他們的Introduction和Related work也是對所在的領域很好的總結。讀通了這幾篇文獻也就等於深入瞭解了這個領域,比單純的看書收穫要多很多。寫本文的目的就是想把自己所瞭解到的各個領域的經典文章整理出來,不用迷失在文獻的汪洋大海里。


2. 圖像處理和計算機視覺的分類

按照當前流行的分類方法,可以分爲以下三部分:


圖像處理:對輸入的圖像做某種變換,輸出仍然是圖像,基本不涉及或者很少涉及圖像內容的分析。比較典型的有圖像變換,圖像增強,圖像去噪,圖像壓縮,圖像恢復,二值圖像處理等等。基於閾值的圖像分割也屬於圖像處理的範疇。一般處理的是單幅圖像。

圖像分析:對圖像的內容進行分析,提取有意義的特徵,以便於後續的處理。處理的仍然是單幅圖像。

計算機視覺:對圖像分析得到的特徵進行分析,提取場景的語義表示,讓計算機具有人眼和人腦的能力。這時處理的是多幅圖像或者序列圖像,當然也包括部分單幅圖像。


關於圖像處理,圖像分析和計算機視覺的劃分並沒有一個很統一的標準。一般的來說,圖像處理的書籍總會或多或少的介紹一些圖像分析和計算機視覺的知識,比如岡薩雷斯的數字圖像處理。而計算機視覺的書籍基本上都會包括圖像處理和圖像分析,只是不會介紹的太詳細。其實圖像處理,圖像分析和計算機視覺都可以納入到計算機視覺的範疇:圖像處理->低層視覺(low level vision),圖像分析->中間層視覺(middle level vision),計算機視覺->高層視覺(high level vision)。這是一般的計算機視覺或者機器視覺的劃分方法。在本文中,仍然按照傳統的方法把這個領域劃分爲圖像處理,圖像分析和計算機視覺。


3. 圖像處理和計算機視覺開源庫以及編程語言選擇

目前在圖像處理中有兩種最重要的語言:c/c++和matlab。它們各有優點:c/c++比較適合大型的工程,效率較高,而且容易轉成硬件語言,是工業界的默認語言之一。而matlab實現起來比較方便,適用於算法的快速驗證,而且matlab有成熟的工具箱可以使用,比如圖像處理工具箱,信號處理工具箱。它們有一個共同的特點:開源的資源非常多。在學術界matlab使用的非常多,很多作者給出的源代碼都是matlab版本。最近由於OpenCV的興起和不斷完善,c/c++在圖像處理中的作用越來越大。總的來說,c/c++和matlab都必須掌握,最好是精通,當然側重在c/c++上對找工作會有很大幫助。


至於開源庫,個人非常推薦OpenCV,主要有以下原因:

(1)簡單易入手。opencv進入opencv2.x的時代後,使用起來越來越簡單,接口越來越傻瓜化,越來越matlab化。只要會imread,imwrite,imshow和了解Mat的基本操作就可以開始入手了。

(2)Opencv有一堆圖像處理和計算機視覺的大牛在維護,bug在逐步減少,每個新的版本都會帶來不同的驚喜。而且它已經或者逐步在移植到不同的平臺,並提供了對Python的很好的支持。

(3)在Opencv上可以嘗試各種最新以及成熟的技術,而不需要自己從頭去寫,比如人臉檢測(Harr,LBP),DPM(Latent SVM),高斯背景模型,特徵檢測,聚類,hough變換等等。而且它還支持各種機器學習方法(SVM,NN,KNN,決策樹,Boosting等),使用起來很簡單。

(4)文檔內容豐富,並且給出了很多示例程序。當然也有一些地方文檔描述不清楚,不過看看代碼就很清楚了。

(5)完全開源。可以從中間摳出任何需要的算法。

(6)從學校出來後,除極少數會繼續在學術圈裏,大部分還是要進入工業界。現在在工業界,c/c++仍是主流,很多公司都會優先考慮熟悉或者精通opencv的。事實上,在學術界,現在opencv也大有取代matlab之勢。以前的demo或者source code,很多作者都願意給出matlab版本的,然後別人再呼哧呼哧改成c版本的。現在作者乾脆給出c/c++版本,或者自己集成到opencv中去,這樣能快速提升自己的影響力。


如果想在圖像處理和計算機視覺界有比較深入的研究,並且以後打算進入這個領域工作的話,建議把OpenCV作爲自己的主攻方向。如果找工作的時候敢號稱自己精通OpenCV的話,肯定可以找到一份滿意的工作。


4. 本文的特點和結構,以及適合的對象

本文面向的對象是即將進入或者剛剛進入圖像處理和計算機視覺領域的童鞋,可以在閱讀書籍的同時參閱這些文獻,能對書中提到的算法有比較深刻的理解。由於本文涉及到的範圍比較廣,如果能對計算機視覺的資深從業者也有一定的幫助,我將倍感欣慰。爲了不至太誤人子弟,每一篇文章都或多或少的看了一下,最不濟也看了摘要(這句話實在整理之前寫的,實際上由於精力有限,好多文獻都只是大概掃了一眼,然後看了看google的引用數,一般在1000以上就放上來了,把這些文章細細品味一遍也是我近一兩年之內的目標)。在成文的過程中,我本人也受益匪淺,希望能對大家也有所幫助。


由於個人精力和視野的關係,有一些我未涉足過的領域不敢斗膽推薦,只是列出了一些引用率比較高的文章,比如攝像機標定和立體視覺。不過將來,由於工作或者其他原因,這些領域也會接觸到,我會逐步增減這些領域的文章。同時文章的挑選也夾帶了一些個人的喜好,比如我個人比較喜歡low level方向的,尤其是IJCV和PAMI上面的文章,因此這方面也稍微多點,希望不要引起您的反感。如果有什麼意見或者建議,歡迎mail我。文章和資源我都會在我的csdn blog和sina ishare同步更新。在此申明:這些論文的版權歸作者及其出版社所有,請勿用於商業目的。


個人blog:

http://blog.csdn.net/dcraw

新浪iask地址:

http://iask.sina.com.cn/u/2252291285/ish?folderid=868438


本文的安排如下。第一部分是緒論。第二部分是圖像處理中所需要用到的理論基礎,主要是這個領域所涉及到的一些比較好的參考書籍。第三部分是計算機視覺中所涉及到的信號處理和模式識別文章。由於圖像處理與圖像分析太難區分了,第四部分集中討論了它們。第五部分是計算機視覺部分。最後是小結。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章