? ? ? ? 最近有人問我圖像處理怎么研究乐横,怎么入門喂分,怎么應(yīng)用,我竟一時(shí)語塞肋乍。仔細(xì)想想俊马,自己也搞了兩年圖像方面的研究丁存,做個(gè)兩個(gè)創(chuàng)新項(xiàng)目,發(fā)過兩篇論文柴我,也算是有點(diǎn)心得解寝,于是總結(jié)總結(jié)和大家分享,希望能對(duì)大家有所幫助艘儒。在寫這篇教程之前我本想多弄點(diǎn)插圖聋伦,讓文章看起來花哨一點(diǎn)夫偶,后來我覺得沒必要這樣做,大家花時(shí)間沉下心來讀讀文字沒什么不好嘉抓,況且學(xué)術(shù)和技術(shù)本身也不是多么花哨的東西索守。
一晕窑、圖像處理的應(yīng)用
這個(gè)其實(shí)沒什么好說的抑片,一種技術(shù)的應(yīng)用價(jià)值不是靠嘴上說,而是要看有多少人去搞杨赤,很簡(jiǎn)單的道理敞斋。其實(shí)我覺得判斷一項(xiàng)技術(shù)有沒有價(jià)值、有多大價(jià)值的最簡(jiǎn)單最有效的方法就是看有多少人在研究它疾牲。如果大家都在研究植捎,那必然說明它很火,至少目前很火阳柔,以后的幾年里依然還會(huì)火焰枢。因此,如果你不確定圖像處理是不是有價(jià)值舌剂,那就查查全國(guó)圖像處理工程師的數(shù)量就行了济锄。
當(dāng)然這里還是簡(jiǎn)單提一下。如果你真的只想問“圖像處理有什么用霍转?”荐绝,相信百度會(huì)給出比我更專業(yè)的答案。不過作為圖像處理的行內(nèi)人避消,我還是從幾個(gè)基本的點(diǎn)來具體說一下低滩。
1、身份認(rèn)證
21世紀(jì)是刷臉的時(shí)代岩喷,這一點(diǎn)無可厚非恕沫。首先是銀行,據(jù)說重慶的銀行已經(jīng)使用了人臉識(shí)別的驗(yàn)證系統(tǒng)來進(jìn)行輔助的認(rèn)證纱意。其次是門禁系統(tǒng)婶溯,以前是指紋,虹膜妇穴,現(xiàn)在就是人臉爬虱。指紋、虹膜的識(shí)別雖然準(zhǔn)確腾它,但是有侵犯性跑筝,采集的過程中有侵犯性,驗(yàn)證的過程中也有侵犯性瞒滴,反正讓誰天天錄指紋(采集指紋信息)曲梗,用眼睛瞪攝像頭(采集虹膜信息)赞警,誰都會(huì)覺得不舒服的,況且手還會(huì)脫皮虏两。相比之下愧旦,人臉的識(shí)別就方便多了,拍張照片(采集人臉信息)誰都不會(huì)介意定罢。最后是監(jiān)控笤虫,一個(gè)攝像頭所拍的監(jiān)控能從不同的角度記錄成百上千的人(比如車站等密集場(chǎng)所的監(jiān)控),讓警察去辨認(rèn)將是一個(gè)浩大的工程祖凫,要是系統(tǒng)能夠自動(dòng)判別人員信息琼蚯,無疑會(huì)給辦案帶來極大方便。
2惠况、監(jiān)控安防
安防監(jiān)控可以說是圖像處理領(lǐng)域最有潛力的應(yīng)用領(lǐng)域遭庶。如今各個(gè)城市都在瘋狂的安裝監(jiān)控?cái)z像頭,全國(guó)時(shí)刻都有無數(shù)的攝像頭在錄監(jiān)控稠屠,但是安防監(jiān)控的后端處理卻沒跟上峦睡。什么是后端處理,簡(jiǎn)單的說就是監(jiān)控錄像的視頻處理权埠。注意這里的視頻處理可就不止包含人臉識(shí)別了榨了,還有行人檢測(cè)、異常檢測(cè)弊知、顯著性檢測(cè)阻逮、協(xié)同跟蹤等。人臉識(shí)別之前說了秩彤,這里簡(jiǎn)單說說行人異常檢測(cè)叔扼。圖像處理中的行人異常檢測(cè)在外行人眼中是一個(gè)非常有魔力的東西。畢竟讓攝像頭通過監(jiān)控視頻就能判斷出當(dāng)前畫面中誰是好人誰是壞人(當(dāng)然直接分為好人和壞人還是太武斷了)漫雷,在一般思維中貌似是不可能的瓜富。但是請(qǐng)不要忽略這樣一個(gè)事實(shí),就是目前大部分監(jiān)控視頻的分析處理都是由人工來完成的降盹,警察破案時(shí)經(jīng)常動(dòng)不動(dòng)就調(diào)出最近幾天的監(jiān)控視頻与柑,然后從頭看到尾,其工程量之大可想而知蓄坏。也正是這樣才催生了人們對(duì)智能監(jiān)控方面的研究价捧,因?yàn)橛羞@方面的實(shí)際需求。當(dāng)然我們的視頻分析程序不會(huì)直接給出諸如“好人or壞人”這樣的武斷而片面的判斷結(jié)果涡戳。就當(dāng)前的技術(shù)水平而言结蟋,能夠統(tǒng)計(jì)當(dāng)下監(jiān)控畫面中的人數(shù)(行人檢測(cè))、定位他們的人臉(人臉檢測(cè))渔彰、識(shí)別他們的身份(人臉識(shí)別)嵌屎、判別他們的表情(表情識(shí)別)推正、檢測(cè)他們的動(dòng)作(異常檢測(cè)),這就已經(jīng)夠了宝惰。這樣以后人們就不會(huì)再面對(duì)長(zhǎng)達(dá)幾十甚至上百個(gè)小時(shí)的監(jiān)控視頻發(fā)呆植榕,而是直接分析計(jì)算機(jī)給出的數(shù)據(jù),當(dāng)前畫面中有多少人尼夺、都是誰尊残、誰的動(dòng)作可疑等」總之夜郁,接下來智能監(jiān)控發(fā)展會(huì)很迅速什燕,因?yàn)樾枨蠛芷惹小?/p>
3粘勒、深度學(xué)習(xí)(Deep?Learning)
通俗的說一句,“圖像處理是深度學(xué)習(xí)應(yīng)用的天堂”屎即。深度學(xué)習(xí)這個(gè)概念可能有人不太熟悉庙睡,大家可以自行百度,我這里給出一個(gè)相對(duì)通俗的解釋:“如果你不知道什么叫深度學(xué)習(xí)技俐,就想想《終結(jié)者》中的T-800”乘陪。當(dāng)然這句話不是我說的,是出自業(yè)界的一位大牛之口雕擂。當(dāng)然這可能有點(diǎn)小片面啡邑,不過深度學(xué)習(xí)確實(shí)是公認(rèn)的新一代人工智能的基礎(chǔ)。
這里舉兩個(gè)例子井赌。一是谷歌的人工大腦項(xiàng)目谤逼。谷歌公司可以說是深度學(xué)習(xí)方面的牽頭企業(yè)了,其在2012年公布的谷歌大腦項(xiàng)目仇穗,動(dòng)用了1.6萬個(gè)計(jì)算節(jié)點(diǎn)流部,訓(xùn)練數(shù)周,得到的人工智能模型能夠自主識(shí)別貓臉圖像纹坐,為新一代人工智能開辟了道路枝冀,之后微軟深度學(xué)習(xí)研究院、百度深度學(xué)習(xí)研究院等機(jī)構(gòu)都開始大量投入耘子,各個(gè)高校也搞得風(fēng)聲水起果漾,原因很簡(jiǎn)單,大家都知道它會(huì)火谷誓。
第二就是圖像識(shí)別方面的競(jìng)賽绒障。最有權(quán)威的就是ImageNet競(jìng)賽。大家在一個(gè)擁有上千萬張片林,上千類別的圖像數(shù)據(jù)庫(kù)上訓(xùn)練和測(cè)試自己的算法端盆,比拼識(shí)別率怀骤。近幾年來,摘得桂冠的一直都是深度學(xué)習(xí)模型焕妙,確切的說是卷積神經(jīng)網(wǎng)絡(luò)蒋伦。更多有關(guān)ImageNet歷年的競(jìng)賽信息大家可以自行百度。
說道深度學(xué)習(xí)在圖像處理的應(yīng)用焚鹊,不得不提中國(guó)的湯曉鷗教授痕届,說他是國(guó)內(nèi)深度學(xué)習(xí)的領(lǐng)頭羊也不為過。他提出的DeepID人臉識(shí)別算法(一共分為三代)末患,在一些大規(guī)模人臉數(shù)據(jù)庫(kù)上的正確率(若LFW庫(kù))已經(jīng)達(dá)到了99.75%研叫,單純從數(shù)字上講的話可以說已經(jīng)超越了人類的識(shí)別率,為此湯教授還開辦了公司璧针,開發(fā)FaceSDK(雖然還沒有公布)嚷炉。不過拿計(jì)算機(jī)和人腦相比本身就是不合理的,各有所長(zhǎng)嘛探橱。不過可見DeepLearning在圖像識(shí)別領(lǐng)域的強(qiáng)大威力申屹。至于深度學(xué)習(xí)與圖像處理的關(guān)系這里就不用多說了,谷歌大腦識(shí)別的是圖像隧膏,深度學(xué)習(xí)競(jìng)賽用的是圖像哗讥,DeepID識(shí)別的還是圖像人臉,雖然深度學(xué)習(xí)在其他方面諸如語音識(shí)別等也有應(yīng)用胞枕,在圖像處理依然是其主要的應(yīng)用領(lǐng)域杆煞。
二、圖像處理研究工具
圖像處理的研究分為算法研究和應(yīng)用兩個(gè)部分腐泻。用到的主要編程語言有Matlab决乎、C/C++、Python等贫悄,原因很簡(jiǎn)單瑞驱,它們都有很多相應(yīng)的第三方庫(kù),不用我們從零開始編程窄坦。
1唤反、Matlab
MathWork公司的Matlab軟件可以說是算法研究的利器,它的強(qiáng)大之處在于其方便快捷的矩陣運(yùn)算能力和圖形仿真能力鸭津,單從簡(jiǎn)潔性和封裝性來說彤侍,確實(shí)完爆其他語言。但高度封裝必然會(huì)相應(yīng)的損失一部分靈活性逆趋,況且Matlab嚴(yán)格的講更像是一個(gè)工具盏阶,而非一門編程語言。順便提一句闻书,它在2015年編程語言排行榜中位于第20名名斟,僅次于iOS開發(fā)的Objective-C脑慧。
對(duì)于算法研究人員(尤其是高校的碩士博士),首選工具自然是matlab砰盐,因?yàn)樗?jiǎn)便快捷闷袒,封裝性好,更重要的是全世界幾乎所有的算法大牛岩梳、精英教授都會(huì)首先公布對(duì)應(yīng)的Matlab源碼囊骤,然后在逐步改寫成其他語言進(jìn)行實(shí)際應(yīng)用。所以冀值,如果你想做圖像處理方面的研究也物,Matlab是必須掌握的,而且是熟練掌握列疗。當(dāng)你有一些想法需要驗(yàn)證時(shí)滑蚯,最好明智的先用matlab編寫出來測(cè)試。如果你上來就用看似高大上的C++來實(shí)驗(yàn)作彤,不僅錯(cuò)誤BUG一大堆膘魄,到頭來可能效果還不佳,就算效果好竭讳,時(shí)間也會(huì)耽擱不少,畢竟算法開發(fā)還是要快的浙踢,這樣才能趕在別人之前發(fā)論文绢慢。總之洛波,只要是接觸圖像算法胰舆,終究逃不過Matlab,就算你是軟件開發(fā)的蹬挤,不研發(fā)算法缚窿,但總得能看懂別人的Matlab算法吧。
對(duì)于之前沒怎么接觸過Matlab與圖像處理的人焰扳,在這里推薦一本相關(guān)的書籍《MATLAB圖像處理實(shí)例詳解(附光盤)》倦零。這本書對(duì)于Matlab圖像處理入門還是很有幫助的。記得我當(dāng)時(shí)剛上研究生時(shí)就靠?jī)杀緯腴T的吨悍,一是岡薩雷斯的《數(shù)字圖像處理》扫茅,二是這本《MATLAB圖像處理實(shí)例詳解》。不過這里友情提示育瓜,在看這類教程(不僅僅是Matlab)時(shí)千萬不要試圖去記憶所有的工具函數(shù)葫隙,這種做法是十分愚蠢的。正確的做法是根據(jù)自己的情況快速翻閱這類工具書躏仇,可以找出里面的有實(shí)際意義的源碼來敲一敲練練手感恋脚,至于具體的工具函數(shù)腺办,只需要知道Matlab提供了這方面的功能就行了,以后用到了再回來查糟描,或者谷歌百度菇晃。我覺得在入門階段,最重要的不是看了多少書蚓挤,聽了多少課磺送,而是盡快自己敲出一段代碼,運(yùn)行出結(jié)果灿意,來建立自信和成就感估灿,這才是支持我們走下去的最實(shí)在的動(dòng)力。記得我當(dāng)時(shí)看了沒多久就自己敲了一個(gè)蹩腳的車牌檢測(cè)的Matlab程序缤剧,現(xiàn)在看來真是漏洞百出馅袁,不過當(dāng)時(shí)我真的很興奮,很有成就感荒辕,覺得自己能干這行汗销,對(duì)于初學(xué)者來說,這種感受彌足珍貴抵窒。
2弛针、OpenCV
Opencv是Intel公司開發(fā)的C++圖像處理工具包,形象的理解為就是C++版的Matlab李皇。當(dāng)初Intel公司開發(fā)這個(gè)工具包的初衷也是方便大家共享削茁,希望大家能夠在一個(gè)共同架構(gòu)的基礎(chǔ)上共同建造摩天大樓,而不是各自在自己的地基上蓋平房掉房。與Matlab不同茧跋,Opencv是面向開發(fā)的,穩(wěn)定性好卓囚,異常處理機(jī)制周全瘾杭,但有一點(diǎn)需要注意,由于Opencv是開源的哪亿,那么如果你在項(xiàng)目中直接調(diào)用了它的API粥烁,那就意味著你的項(xiàng)目也必須開源。因此在真正的產(chǎn)品開發(fā)過程中锣夹,往往需要從Opencv庫(kù)里面挖代碼页徐,而不是直接調(diào)用,幸好Intel公司允許我們看源碼银萍,自己編譯一把就可以了变勇。
說道C++和Opencv,有一個(gè)問題不得不提,那就是深度學(xué)習(xí)領(lǐng)域大名鼎鼎的Caffe框架搀绣。這是一個(gè)典型的基于C++和OpenCv的深度學(xué)習(xí)框架飞袋,由谷歌深度學(xué)習(xí)團(tuán)隊(duì)、“谷歌大腦”負(fù)責(zé)人之一賈揚(yáng)清學(xué)者編寫链患,并公布了源碼巧鸭。如今各個(gè)深度學(xué)習(xí)機(jī)構(gòu)都在大量使用這個(gè)框架進(jìn)行研究。
這里同樣對(duì)推薦兩本關(guān)于Opencv方面的教程麻捻。一本是CSDN博客大牛毛星云寫的《OpenCV3編程入門》纲仍,這是它根據(jù)自己多年的博客整理成的書,很詳細(xì)贸毕,很典型的一本教程郑叠,介紹了OpenCv中相對(duì)前沿的知識(shí)。我翻看過這本教程明棍,中規(guī)中矩乡革,里面的代碼通俗易懂,尤其適合初學(xué)者摊腋。當(dāng)然大家同樣要注意不要犯了死讀書的毛病沸版,只看它的功能,敲代碼練手感即可兴蒸,不要試圖記憶API函數(shù)视粮。重要的工具用多了自然會(huì)記住,不重要的工具記住了也沒用类咧。
這里推薦的第二本書是《圖像識(shí)別與項(xiàng)目實(shí)踐――VC++馒铃、MATLAB技術(shù)實(shí)現(xiàn)》,這本書是一本偏向于工程應(yīng)用的書痕惋,我之所以推薦它是因?yàn)樗o出了很多有新意、能運(yùn)行的代碼娃殖。其中里面有一個(gè)項(xiàng)目讓我印象很深值戳,是一個(gè)車牌檢測(cè)的實(shí)例。簡(jiǎn)單描述一下:由于車牌中的字符數(shù)是固定的炉爆,因此它通過判斷橫向區(qū)域筆畫的跳變數(shù)以及筆畫寬度來定位車牌區(qū)域堕虹。這個(gè)想法讓人耳目一新,并且它還給出了詳細(xì)代碼芬首,我也親身試驗(yàn)過赴捞,效果還不錯(cuò)。
這里同樣再?gòu)?qiáng)調(diào)一下郁稍,就是一定要盡早入手寫程序赦政,建立自信和成就感。我當(dāng)時(shí)學(xué)OpenCv正好用它開發(fā)了一個(gè)人臉性別識(shí)別的系統(tǒng),是一個(gè)本科大學(xué)生創(chuàng)新計(jì)劃的需求恢着,效果還可以桐愉。
3、Python
Python在今年12月份的編程語言排行榜中名列第5掰派,增長(zhǎng)迅速从诲。可以說Python已經(jīng)逐漸成為當(dāng)下腳本語言的新標(biāo)準(zhǔn)靡羡。Python在圖像處理算法方面除了其自身簡(jiǎn)潔的編程優(yōu)勢(shì)外系洛,還得益于兩個(gè)重要的Python類庫(kù)——Numpy和Theano。
Numpy是Python的線性代數(shù)庫(kù)略步,對(duì)于矩陣運(yùn)算能提供很好的支持描扯,并且能夠在此基礎(chǔ)上進(jìn)行很多機(jī)器學(xué)習(xí)相關(guān)算法的開發(fā)仿真,這里推薦一本受到大家廣泛認(rèn)可的書《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》纳像,我最近也正在看這本書荆烈,里面對(duì)好多機(jī)器學(xué)習(xí)領(lǐng)域的經(jīng)典算法,小到KNN竟趾,大到SVM憔购,都給出了詳細(xì)的介紹以及代碼實(shí)現(xiàn)(Python版)岔帽。Theano是Python的機(jī)器學(xué)習(xí)庫(kù),能夠方便的實(shí)現(xiàn)深度學(xué)習(xí)(例如卷積神經(jīng)網(wǎng)絡(luò)CNN)算法犀勒,網(wǎng)上很多對(duì)于DeepID算法的復(fù)現(xiàn)都是用的這個(gè)庫(kù)。
人覺得單從圖像處理的角度評(píng)價(jià)的話贾费,Python并沒有前面兩個(gè)工具(Matlab和OpenCv)應(yīng)用廣泛钦购,不過作為通用的腳本語言褂萧,我覺得每個(gè)程序員都應(yīng)該去了解了解它押桃,畢竟俗話說沒有爛的編程語言导犹,只有爛程序員唱凯。我在學(xué)Python時(shí)第一個(gè)自己寫的程序就是微信打飛機(jī)的小程序,在我的博客中有詳細(xì)的教程谎痢,雖然是參照小甲魚的《零基礎(chǔ)入門學(xué)習(xí)Python》視頻教程寫的,但還是蠻有成就感的节猿。
三、圖像處理研究方法
我覺得纫骑,圖像處理研究主要可以分為三個(gè)部分:基礎(chǔ)概念、基本思想先馆、算法研究。
1煤墙、基礎(chǔ)概念
所謂基礎(chǔ)概念,就是圖像處理里最基本的知識(shí)铣减,比如什么是圖像脚作?什么是像素?什么是彩色圖像等等球涛。沒有一個(gè)明確的界限來劃定什么是基礎(chǔ)概念什么是高級(jí)知識(shí),因人而異捺典。了解圖像處理的基礎(chǔ)知識(shí)从祝,有一本書是必讀的,就是岡薩雷斯編寫的牍陌、阮秋琦翻譯的《數(shù)字圖像處理》。這本書已經(jīng)作為圖像處理領(lǐng)域的經(jīng)典教材使用了三十多年退客,我自己也把這本書看了好幾遍链嘀,每一遍都會(huì)有新的體會(huì)档玻。我覺得每一個(gè)搞圖像的都應(yīng)該熟讀這本書。書中除了有幾章內(nèi)容在講小波變換误趴、模式識(shí)別等相對(duì)抽象的內(nèi)容外,其他內(nèi)容相對(duì)都是很基礎(chǔ)的枣申,本科生水平就能看懂售葡。而且我建議要盡早看這本書,如果是研究生盡量在進(jìn)入課題之前就看一遍忠藤,因?yàn)檫@樣一本經(jīng)典的書在進(jìn)入課題之后可能就沒時(shí)間看了挟伙,以后也頂多是查閱而已。我當(dāng)初就是在大四的寒假看完了這本書尖阔,以后在圖像入門的過程中就顯得輕松很多榨咐。看完這本書齿坷,哪怕是只看前幾章数焊,明白了什么是圖像(二維或者三維矩陣)、什么是像素昌跌、彩色圖和灰度圖、顏色空間答恶、圖像濾波萍诱、圖像噪聲、圖像頻域變換等概念包竹,將來在進(jìn)行更深一步的研究的話就會(huì)方便很多了籍凝。
2、基本思想
剛開始想把這部分內(nèi)容命名為“基本算法”声诸,意在介紹圖像處理中的一些基本算法退盯,后來仔細(xì)想想決定不這么寫泻肯,因?yàn)閳D像處理是一個(gè)非常大的概念慰照,圖像處理不等于人臉識(shí)別,也不等于模式識(shí)別稚铣,直接介紹諸如圖像處理基本算法之類的內(nèi)容很容易寫成空話蝌衔,沒有什么實(shí)際意義。讀者有興趣的話可以直接谷歌百度“圖像處理十大經(jīng)典算法”曹锨,上面有我想說的內(nèi)容剃允。
萬變不離其宗,算法是死的斥废,重在思想牡肉。舉個(gè)例子,我個(gè)人是主攻模式識(shí)別方向统锤,在這個(gè)方向判斷一個(gè)學(xué)生是否入門有一個(gè)非常簡(jiǎn)單的方法,就是“如果你能把圖像很自然的想象成高維空間中的一個(gè)點(diǎn)”煌寇,那就說明在模式識(shí)別方面入門了逾雄,可以對(duì)圖像進(jìn)行分類了。當(dāng)然標(biāo)準(zhǔn)不是唯一银锻,在其他領(lǐng)域如目標(biāo)檢測(cè)也會(huì)有其他的判斷標(biāo)準(zhǔn)做鹰,總之我們要對(duì)圖像進(jìn)行處理,那么圖像就不再只是圖像掉弛,它可能會(huì)演變成各種不同形式的概念喂走,可能是點(diǎn),可能是面乎芳,還可能是一個(gè)坐標(biāo)空間帖池。在目標(biāo)跟蹤的經(jīng)典算法粒子濾波中,將一個(gè)個(gè)的小圖像塊看做一個(gè)個(gè)粒子肴甸;在子空間理論中囚巴,將一系列圖像放在一起構(gòu)建一個(gè)成分主空間(例如主成分分析PCA算法等等。彤叉,我不會(huì)詳細(xì)介紹這些算法秽浇,說多了就顯得抽象老套,但我要說的是我們一定要把圖像本身理解好柬焕,它是一個(gè)圖像击喂,是一個(gè)矩陣,是一個(gè)信息的容器懂昂,是一種數(shù)據(jù)的表現(xiàn)形式,圖像不一定都必須在視覺上有意義(比如頻域的圖像)凌彬。
總之圖像處理的基本思想還是要立足于圖像本身,要深度到圖像內(nèi)部結(jié)構(gòu)中褐澎,思維要靈活伐蒋。我當(dāng)時(shí)做本科畢設(shè)時(shí)迁酸,怎么也不知道圖像和高維空間中的點(diǎn)之間有什么對(duì)應(yīng)關(guān)系俭正,后來總算有一天,突然就明白了串远,這也就是所謂的量變產(chǎn)生質(zhì)變儿惫。總之一定要多想留搔,多總結(jié)筐喳,主動(dòng)去鉆研,才能夠真正領(lǐng)悟一些東西荣月。最基本的東西往往蘊(yùn)藏著深?yuàn)W的道理梳毙,無論你現(xiàn)在多牛多厲害,都不能放掉最本源的東西萌业。多想想圖像是什么奸柬,有什么本質(zhì)屬性,你可能無法得到準(zhǔn)確的答案抱婉,但肯定能得到一些有用的感悟(有點(diǎn)像哲學(xué)問題了)桌粉。
3、算法研究
算法研究應(yīng)該是圖像處理的核心工作患亿,尤其是各大高校的博士碩士押逼。這里我并不想談那些高大上的算法惦界,我更想說的是一些算法研究的一些基礎(chǔ)的東西漱抓,比如說一些基礎(chǔ)課程乞娄,比如說矩陣運(yùn)算显歧。
研究圖像處理的算法,離不開數(shù)學(xué)士骤。在這里我建議圖像處理方面的碩士一定要上兩門課:《泛函分析》以及《最優(yōu)化算法》拷肌,有的學(xué)校已經(jīng)將這兩門課列為了研究生階段的必修課程。這兩門可可以說是圖像處理(至少是模式識(shí)別)的基礎(chǔ)巨缘。我當(dāng)初沒上過最優(yōu)化算法若锁,但后來也自己補(bǔ)上了,不然真的是寸步難行又固。至于泛函我當(dāng)時(shí)聽課的時(shí)候也不是很懂仰冠,但是在之后的研究過程中發(fā)現(xiàn)很多圖像處理的基本知識(shí)基本理論都和泛函分析中枯燥的定理如出一轍,沒辦法洋只,有的東西本身就是枯燥的干貨木张,學(xué)著費(fèi)力,缺它不行舷礼。
其次我想說的是矩陣運(yùn)算妻献。圖像就是矩陣团赁,圖像處理就是矩陣運(yùn)算谨履。大家為什么都喜歡用Matlab,就是因?yàn)樗木仃囘\(yùn)算能力實(shí)在是太強(qiáng)大怀挠,在Matlab的世界中任何變量都是矩陣害捕。同樣OpenCv之所以能流行,不僅僅是因?yàn)樗己玫姆庋b性吞滞,也是因?yàn)樗木仃嚫袷蕉苣x了Mat基礎(chǔ)類,允許你對(duì)矩陣進(jìn)行各種操作佩捞。Python也不例外祖娘,它的Numpy就是一個(gè)專門的線性代數(shù)庫(kù)。
真正在圖像編程過程中掀潮,那些看著高大上的API函數(shù)歸根到底都是工具琼富,查查手冊(cè)就能找到,真正核心還是在算法薯鼠,算法是由公式編寫的械蹋,公式的單元是變量,而圖像屆的變量就是矩陣郊艘。所以,熟練去操作矩陣畏浆,求秩狞贱、求逆、最小二乘蝎毡,求協(xié)方差氧枣,都是家常便飯。所以,如果你有幸能上《矩陣分析》這門課宰闰,一定要把它看懂移袍,那里面都是干貨。
四葡盗、小結(jié)
總之觅够,圖像處理就是一個(gè)典型的門檻低、廳堂深的領(lǐng)域钳吟。不需要太多基礎(chǔ)窘拯,學(xué)過線性代數(shù),會(huì)一點(diǎn)編程就夠了暇番;但是那些算法卻深不可測(cè)思喊,是個(gè)消耗功夫的活兒。在寫這篇教程時(shí)我說的很直白厨喂,就像和大家對(duì)話一樣,想到什么說什么派阱。在最后我想說兩句題外話斜纪,就是不僅僅針對(duì)圖像處理,對(duì)于其他新技術(shù)的入門學(xué)習(xí)也是一樣腺劣,盡快邁出第一步因块,盡快去建立自信和成就感,讓自己有勇氣走下去趾断,然后缺什么補(bǔ)什么就行了吩愧。我覺得真正讓人望而卻步的往往不是技術(shù)本身雁佳,而是我們對(duì)自身的不自信。唯有果斷開工糖权,才能戰(zhàn)勝心魔温兼。