圖像處理基本思想和算法研究
剛開(kāi)始想把這部分內(nèi)容命名為“基本算法”,意在介紹圖像處理中的一些基本算法,后來(lái)仔細(xì)想想決定不這么寫,因?yàn)閳D像處理是一個(gè)非常大的概念,圖像處理不等于人臉識(shí)別,也不等于模式識(shí)別,直接介紹諸如圖像處理基本算法之類的內(nèi)容很容易寫成空話,沒(méi)有什么實(shí)際意義。讀者有興趣的話可以直接搜索“圖像處理十大經(jīng)典算法”,適當(dāng)了解。
所謂圖像處理,就是用計(jì)算機(jī)對(duì)圖像進(jìn)行分析,以達(dá)到所需結(jié)果的技術(shù),又稱影像處理。圖像處理一般指數(shù)字圖像處理。數(shù)字圖像是指用工業(yè)相機(jī)、攝像機(jī)、掃描儀等設(shè)備經(jīng)過(guò)拍攝得到的一個(gè)大的二維數(shù)組,該數(shù)組的元素稱為像素,其值稱為灰度值。圖像處理技術(shù)一般包括圖像壓縮,增強(qiáng)和復(fù)原,匹配、描述和識(shí)別3個(gè)部分。
萬(wàn)變不離其宗,算法是死的,重在思想。舉個(gè)例子,在模式識(shí)別方向這個(gè)方向判斷一個(gè)學(xué)生是否入門有一個(gè)非常簡(jiǎn)單的方法,就是“如果你能把圖像很自然的想象成高維空間中的一個(gè)點(diǎn)”,那就說(shuō)明在模式識(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ì)介紹這些算法,說(shuō)多了就顯得抽象老套,但我要說(shuō)的是我們一定要把圖像本身理解好,它是一個(gè)圖像,是一個(gè)矩陣,是一個(gè)信息的容器,是一種數(shù)據(jù)的表現(xiàn)形式,圖像不一定都必須在視覺(jué)上有意義(比如頻域的圖像)。
總之圖像處理的基本思想還是要立足于圖像本身,要深度到圖像內(nèi)部結(jié)構(gòu)中,思維要靈活。打個(gè)比方說(shuō),圖像和高維空間中的點(diǎn)之間有什么對(duì)應(yīng)關(guān)系,這是所謂的量變產(chǎn)生質(zhì)變。總之一定要多想,多總結(jié),主動(dòng)去鉆研,才能夠真正領(lǐng)悟一些東西。最基本的東西往往蘊(yùn)藏著深?yuàn)W的道理,無(wú)論你現(xiàn)在多牛多厲害,都不能放掉最本源的東西。多想想圖像是什么,有什么本質(zhì)屬性,你可能無(wú)法得到準(zhǔn)確的答案,但肯定能得到一些有用的感悟(有點(diǎn)像哲學(xué)問(wèn)題了)。
算法研究
算法研究應(yīng)該是圖像處理的核心工作,尤其是各大高校的博士碩士。這里我并不談那些高大上的算法,我更想說(shuō)的是一些算法研究的一些基礎(chǔ)的東西,比如說(shuō)一些基礎(chǔ)課程,比如說(shuō)矩陣運(yùn)算。
研究圖像處理的算法,離不開(kāi)數(shù)學(xué)。在這里我建議圖像處理方面的碩士一定要上兩門課:《泛函分析》以及《最優(yōu)化算法》,有的學(xué)校已經(jīng)將這兩門課列為了研究生階段的必修課程。這兩門可可以說(shuō)是圖像處理(至少是模式識(shí)別)的基礎(chǔ)。我當(dāng)初沒(méi)上過(guò)最優(yōu)化算法,但后來(lái)也自己補(bǔ)上了,不然真的是寸步難行。至于泛函我當(dāng)時(shí)聽(tīng)課的時(shí)候也不是很懂,但是在之后的研究過(guò)程中發(fā)現(xiàn)很多圖像處理的基本知識(shí)基本理論都和泛函分析中枯燥的定理如出一轍,沒(méi)辦法,有的東西本身就是枯燥的干貨,學(xué)著費(fèi)力,缺它不行。
其次我想說(shuō)的是矩陣運(yùn)算。圖像就是矩陣,圖像處理就是矩陣運(yùn)算。大家為什么都喜歡用Matlab,就是因?yàn)樗木仃囘\(yùn)算能力實(shí)在是太強(qiáng)大,在Matlab的世界中任何變量都是矩陣。同樣OpenCv之所以能流行,不僅僅是因?yàn)樗己玫姆庋b性,也是因?yàn)樗木仃嚫袷?,它定義了Mat基礎(chǔ)類,允許你對(duì)矩陣進(jìn)行各種操作。Python也不例外,它的Numpy就是一個(gè)專門的線性代數(shù)庫(kù)。
真正在圖像編程過(guò)程中,那些看著高大上的API函數(shù)歸根到底都是工具,查查手冊(cè)就能找到,真正核心還是在算法,算法是由公式編寫的,公式的單元是變量,而圖像屆的變量就是矩陣。所以,熟練去操作矩陣,求秩、求逆、最小二乘,求協(xié)方差,都是家常便飯。所以,如果你有幸能上《矩陣分析》這門課,一定要把它看懂,那里面都是干貨。