計算機視覺-入門(一):計算機視覺入門前的信息採集和了解

以前一直以爲本身學的雜而不專,在以後的學習和幹活歷程中也不斷髮現本身確實須要靜下心來鑽研,讓本身像身邊的師兄同樣能有一技之長,能在社會上有本身的立錐之地。git

講真在計算機這個龐大的體系下挑選出一個方向來確實蠻難,本身挑來挑去,有種亂花漸欲迷人眼的感受,不過就目前本身的興趣、性格和學習能力,遠景規劃來看,計算機視覺這個方向目前來看對我本身來講確實是一個十分不錯的選擇。算法

經過這篇文章但願能夠在整理本身蒐集的信息的同時,理清本身的思路,搞清楚計算機視覺大體是個什麼東西,入坑後要學,要作些什麼東西,它的前(錢)景怎麼樣?(這個說明一下啊,作任何事沒有錢是萬萬不能的,錢表明了它的價值,若是研究出來的東西一文不值,那.....)編程

目錄:  網絡

1、計算機視覺是什麼
2、計算機視覺裏的一些應用方向如今認識有限之後遇到了再添加
        2-1. 物體識別和檢測
        2-2. 語義分割
        2-3. 運動和跟蹤
        2-4. 視覺問答
        2-5. 三維重建
3、圖像處理和計算機視覺的分類
4、圖像處理與計算機視覺涉及的知識和相關的書籍太深刻的就不說了這裏只淺顯的介紹一下歡迎批評指正
        4-1. 數學知識
        4-2. 信號處理
        4-3. 模式識別
        4-4.  圖像處理與計算機視覺的書籍推薦
        4-5. 小結
5、圖像處理繞不開的工具--OpenCV
6、結語

app

1、計算機視覺是什麼:

        計算機視覺(Computer Vision)又稱爲機器視覺(Machine Vision),顧名思義是一門「教」會計算機如何去「看」世界的學科。在機器學習大熱的前景之下,計算機視覺與天然語言處理(Natural Language Process, NLP)及語音識別(Speech Recognition)並列爲機器學習方向的三大熱點方向。而計算機視覺也由諸如梯度方向直方圖(Histogram of Gradient, HOG)以及尺度不變特徵變換(Scale-Invariant Feature Transform, SIFT)等傳統的手辦特徵(Hand-Crafted Feature)與淺層模型的組合逐漸轉向了以卷積神經網絡(Convolutional Neural Network, CNN)爲表明的深度學習模型。計算機視覺的理念其實與不少概念有部分重疊,包括:人工智能、數字圖像處理、機器學習、深度學習、模式識別、機率圖模型、科學計算以及一系列的數學計算等。機器學習

                                                

2、計算機視覺裏的一些應用方向(如今認識有限,之後遇到了再添加):

(一)、物體識別和檢測:

                物體檢測一直是計算機視覺中很是基礎且重要的一個研究方向,物體識別和檢測,顧名思義,即給定一張輸入圖片,算法可以自動找出圖片中的常見物體,並將其所屬類別及位置輸出出來。固然也就衍生出了諸如人臉檢測(Face Detection),車輛檢測(Viechle Detection)等細分類的檢測算法。 函數

(二)語義分割:工具

                圖像語義分割(semantic segmentation),從字面意思上理解就是讓計算機根據圖像的語義來進行分割,語義在語音識別中指的是語音的意思,在圖像領域,語義指的是圖像的內容,對圖片意思的理解。學習

                                                               

目前語義分割的應用領域主要有:地理信息系統、無人車駕駛、醫療影像分析、機器人等領域,詳細見:計算機視覺之語義分割優化

 

(三)運動和跟蹤:

                跟蹤也屬於計算機視覺領域內的基礎問題之一,在近年來也獲得了很是充足的發展,方法也由過去的非深度算法跨越向了深度學習算法,精度也愈來愈高,不過實時的深度學習跟蹤算法精度一直難以提高,而精度很是高的跟蹤算法的速度又十分之慢,所以在實際應用中也很難派上用場。 視覺跟蹤是指對圖像序列中的運動目標進行檢測、提取、識別和跟蹤,得到運動目標的運動參數,如位置、速度、加速度和運動軌跡等,從而進行下一步的處理與分析,實現對運動目標的行爲理解,以完成更高一級的檢測任務。跟蹤算法須要從視頻中去尋找到被跟蹤物體的位置,並適應各種光照變換,運動模糊以及表觀的變化等。但實際上跟蹤是一個不適定問題(ill posed problem),好比跟蹤一輛車,若是從車的尾部開始跟蹤,如果車輛在行進過程當中表觀發生了很是大的變化,如旋轉了180度變成了側面,那麼現有的跟蹤算法很大的可能性是跟蹤不到的,由於它們的模型大多基於第一幀的學習,雖然在隨後的跟蹤過程當中也會更新,但受限於訓練樣本過少,因此難以獲得一個良好的跟蹤模型,在被跟蹤物體的表觀發生巨大變化時,就難以適應了。因此,就目前而言,跟蹤算不上是計算機視覺內特別熱門的一個研究方向,不少算法都改進自檢測或識別算法。 

                                           

 

(四)視覺問答:

               視覺問答也簡稱VQA(Visual Question Answering),是近年來很是熱門的一個方向,通常來講,VQA系統須要將圖片和問題做爲輸入,結合這兩部分信息,產生一條人類語言做爲輸出。針對一張特定的圖片,若是想要機器以天然語言處理(NLP)來回答關於該圖片的某一個特定問題,咱們須要讓機器對圖片的內容、問題的含義和意圖以及相關的常識有必定的理解。就其本性而言,這是一個多學科研究問題。

(五)三維重建:

           基於視覺的三維重建,指的是經過攝像機獲取場景物體的數據圖像,並對此圖像進行分析處理,再結合計算機視覺知識推導出現實環境中物體的三維信息。三維重建技術的重點在於如何獲取目標場景或物體的深度信息。在景物深度信息已知的條件下,只須要通過點雲數據[4]的配準及融合,便可實現景物的三維重建。基於三維重建模型的深層次應用研究也能夠隨即展開。學習圖像處理的人會接觸到更普遍更多元的技術,而三維重建背景的會很是專一於細分的算法,由於三維重建自己還有更細分的技術,因此在作研究生階段的學習的時候,會有很具體的專業方向,好比說就是作航拍地形的三維重建,或者是佛像的三維重建,這裏面由於場景的區別運用到的拍攝技術和重建技術都是不同的,並且有一些不一樣技術之間也沒有關係(固然三維重建自己的概念是相同的)。關於三維重建將來的熱點和難度,這個領域能夠作的很專,場景也有不少,每一個場景都有不一樣的挑戰,深刻的我也不懂就不說了。

                                 這裏寫圖片描述​ 

 

3、圖像處理和計算機視覺的分類:

按照當前流行的分類方法,能夠分爲如下三部分:

 

  • A.圖像處理:對輸入的圖像作某種變換,輸出仍然是圖像,基本不涉及或者不多涉及圖像內容的分析。比較典型的有圖像變換,圖像加強,圖像去噪,圖像壓      縮,圖像恢復,二值圖像處理等等。基於閾值的圖像分割也屬於圖像處理的範疇。通常處理的是單幅圖像。
  • B.圖像分析:對圖像的內容進行分析,提取有意義的特徵,以便於後續的處理。處理的仍然是單幅圖像。
  • C.計算機視覺:對圖像分析獲得的特徵進行分析,提取場景的語義表示,讓計算機具備人眼和人腦的能力。這時處理的是多幅圖像或者序列圖像,固然也包括部分單幅圖像。

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


4、圖像處理與計算機視覺涉及的知識和相關的書籍(太深刻的就不說了,這裏只淺顯的介紹一下(歡迎批評指正~)):

(一)、數學知識:

               咱們所說的圖像處理實際上就是數字圖像處理,是把真實世界中的連續三維隨機信號投影到傳感器的二維平面上,採樣並量化後獲得二維矩陣。數字圖像處理就是二維矩陣的處理,而從二維圖像中恢復出三維場景就是計算機視覺的主要任務之一。這裏面就涉及到了圖像處理所涉及到的三個重要屬性:連續性,二維矩陣,隨機性。所對應的數學知識是高等數學(微積分),線性代數(矩陣論),機率論和隨機過程。這三門課也是考研數學的三個組成部分,構成了圖像處理和計算機視覺最基礎的數學基礎。若是想要更進一步,就要到網上搜搜林達華推薦的數學書目了。

                CV是一個涉及面很是廣的學科,目前主流的依據視覺的學習,涉及到機率統計,各種優化方法,圖論;一些研究方向(好比涉及到物體運動的)還會涉及拓撲學,羣論,矩陣優化;一些圖像分割算法,好比level-set,會涉及到微分方程等等。這些也都不是絕對區分的,如今的state-of-art的問題各方面可能都會有所涉及,依據問題自己而已。涉及面太廣可是計算機的研究大多隻是涉及,並不必定須要像數學系那樣嚴密的推導。

(二)、信號處理

 

    圖像處理其實就是二維和三維信號處理,而處理的信號又有必定的隨機性,所以經典信號處理和隨機信號處理都是圖像處理和計算機視覺中必備的理論基礎。

 

2.1經典信號處理

 

信號與系統(第2版) Alan V.Oppenheim等著 劉樹棠譯

離散時間信號處理(第2版) A.V.奧本海姆等著 劉樹棠譯

數字信號處理:理論算法與實現 胡廣書 (編者)

 

2.2隨機信號處理

 

現代信號處理 張賢達著

統計信號處理基礎:估計與檢測理論 Steven M.Kay等著 羅鵬飛等譯

自適應濾波器原理(第4版) Simon Haykin著 鄭寶玉等譯

 

2.3 小波變換

 

信號處理的小波導引:稀疏方法(原書第3版) tephane Malla著, 戴道清等譯

 

2.4 信息論

 

信息論基礎(原書第2版) Thomas M.Cover等著 阮吉壽等譯

 

(三)、模式識別

 

 

Pattern Recognition and Machine Learning Bishop, Christopher M. Springer

模式識別(英文版)(第4版) 西奧多裏德斯著

Pattern Classification (2nd Edition) Richard O. Duda等著

Statistical Pattern Recognition, 3rd Edition Andrew R. Webb等著

模式識別(第3版) 張學工著

(四)、 圖像處理與計算機視覺的書籍推薦

圖像處理,分析與機器視覺 第三版 Sonka等著 艾海舟等譯

Image Processing, Analysis and Machine Vision

                ( 附:這本書是圖像處理與計算機視覺裏面比較全的一本書了,幾乎涵蓋了圖像視覺領域的各個方面。中文版的我的感受也還能夠,值得一看。)

數字圖像處理 第三版 岡薩雷斯等著

Digital Image Processing

(附:數字圖像處理永遠的經典,如今已經出到了第三版,至關給力。個人導師曾經說過,這本書寫的很優美,對寫英文論文也頗有幫助,建議購買英文版的。)

計算機視覺:理論與算法 Richard Szeliski著

Computer Vision: Theory and Algorithm

                (附:微軟的Szeliski寫的一本最新的計算機視覺著做。內容很是豐富,尤爲包括了做者的研究興趣,好比通常的書裏面都沒有的Image Stitching和                       Image Matting等。這也從另外一個側面說明這本書的通用性不如Sonka的那本。不過做者開放了這本書的電子版,能夠有選擇性的閱讀。
                  http://szeliski.org/Book/
                  Multiple View Geometry in Computer Vision 第二版Harley等著
                 引用達一萬屢次的經典書籍了。第二版處處都有電子版的。初版曾出過中文版的,後來絕版了。網上也能夠找到中英文版的電子版。)

計算機視覺:一種現代方法 DA Forsyth等著

Computer Vision: A Modern Approach

MIT的經典教材。雖然已通過去十年了,仍是值得一讀。期待第二版

Machine vision: theory, algorithms, practicalities 第三版 Davies著

(附:爲數很少的英國人寫的書,偏向於工業應用。)

數字圖像處理 第四版 Pratt著

Digital Image Processing

(附:寫做風格獨樹一幟,也是圖像處理領域很不錯的一本書。網上也能夠找到很是清晰的電子版。)

(五)、小結

 

羅嗦了這麼多,實際上就是幾個建議:
(1)基礎書千萬不能夠扔,也不能低價處理給同窗或者師弟師妹。否則到時候還得一本本從書店再買回來的。錢是一方面的問題,對着全新的書看徹底沒有看本身當年上過的課本有感受。
(2)遇到有相關的課,果斷選修或者蹭之,好比隨機過程,小波分析,模式識別,機器學習,數據挖掘,現代信號處理甚至泛函。多一些理論積累對未來科研和工做都有好處。
(3)資金容許的話能夠多囤一些經典的書,有的時候從牙縫裏面省一點均可以買一本好書。不過千萬不要像我同樣只囤不看。

 

5、圖像處理繞不開的工具--OpenCV:

        OpenCV的全稱,是Open source Computer Vision Library,開放源代碼計算機視覺庫。也就是說,它是一套關於計算機視覺的開放源代碼的API函數庫。這也就意味着,(1)無論是科學研究,仍是商業應用,均可以利用它來做開發;(2)全部API函數的源代碼都是公開的,你能夠看到其內部實現的程序步驟;(3)你能夠修改OpenCV的源代碼,編譯生成你須要的特定API函數。可是,做爲一個庫,它所提供的,僅僅是一些經常使用的,經典的,大衆化的算法的API。一個典型的計算機視覺算法,應該包含如下一些步驟:(1)數據獲取(對OpenCV來講,就是圖片);(2)預處理;(3)特徵提取;(4)特徵選擇;(5)分類器設計與訓練;(6)分類判別;而OpenCV對這六個部分,分別(記住這個詞)提供了API。

        你能夠將它理解爲幼兒園小朋友過家家玩的積木,而OpenCV中的函數,則能夠理解爲一個一個的積木塊,利用全部或者部分積木塊,你能夠快速的搭建起來具體的計算機視覺方面的應用(好比,字符識別,車牌識別,遺留物檢測)。想必你也已經發現,在利用OpenCV這個積木來搭建具體的計算機視覺應用的時候,真正核心的,應該是這些積木塊,若是你明白了積木塊的工做原理,那麼,是否是就能夠不用這些積木塊了呢?徹底正確!不過,通常部分狀況下,咱們不須要這麼作,由於,OpenCV已經幫你作好了一些工做(已經幫你作好了一些積木塊,直接拿來用就是了)。可是,諸如前面提到的特徵提取模塊,不少狀況下,OpenCV就無能爲力了。這個時候,你就須要翻閱計算機視覺、模式識別、機器學習領域頂級會議、期刊、雜誌上面發表的文章了。而後,根據這些文章中闡述的原理和方法,來編程實現你要的東西。實際上,也就等於搭建一個屬於你私有的積木塊。其實,OpenCV中的每個API函數,也就是這麼來的。

         現在,來自世界各地的各大公司、科研機構的研究人員,共同維護支持着opencv的開源庫開發。這些公司和機構包括:微軟,IBM,索尼、西門子、google、intel、斯坦福、MIT、CMU、劍橋........

6、結語:

        隨着深度學習的大舉侵入,如今幾乎全部人工智能方向的研究論文幾乎都被深度學習佔領了,傳統方法已經很難見到了。有時候在深度網絡上改進一個很是小的地方,就能夠發一篇還不錯的論文。而且,隨着深度學習的發展,不少領域的現有數據集內的記錄都在不斷刷新,已經向人類記錄步步緊逼,有的方面甚至已經超越了人類的識別能力。

        目前來看計算機視覺的研究處在一個很是好的時期,有不少咱們原來解不了的問題如今可以解得比較好了,像人臉識別,儘管咱們其實尚未從真正意義上達到人類視覺系統對人臉識別的魯棒程度。但咱們離真正讓計算機可以像人看和感知這個世界還有很遠的距離。在咱們達到這個目標以前,深度學習的方法多是這個過程當中一個重要的墊腳石,同時咱們還要將更多的新的方法和工具帶入這個領域來進一步推進這個領域的發展。

        人的精力是有限的,這就意味着咱們不可能把不少事情同時作好,因此在你選好方向以後,就要把咱們的精力集中在你感興趣的一個問題上, 努力成爲這個方面的專家。研究是一項長跑,不少時候,咱們在一個方向上比別人堅持久一點, 就有機會超越他而成爲某個方面的專家。

圖像處理就是一個典型的門檻低、廳堂深的領域。不須要太多基礎,學過線性代數,會一點編程就夠了;可是那些算法卻深不可測,是個消耗功夫的活兒。不只僅針對圖像處理,對於其餘新技術的入門學習也是同樣,儘快邁出第一步,儘快去創建自信和成就感,讓本身有勇氣走下去,而後缺什麼補什麼就好了。我以爲真正讓人望而卻步的每每不是技術自己,而是咱們對自身的不自信。惟有果斷開工,才能打敗心魔。(http://www.javashuo.com/article/p-kruyvabo-me.html)

參考文檔:

        https://www.zhihu.com/question/26836846

        https://blog.csdn.net/carson2005/article/details/6979806

        https://blog.csdn.net/wangss9566/article/details/54618507

        https://blog.csdn.net/qq_26499769/article/details/78989088

        http://blog.csdn.net/dcraw  

附:計算機視覺領域的一些牛人博客,超有實力的研究機構等的網站連接

相關文章
相關標籤/搜索