王宏偉
(東南大學(xué)成賢學(xué)院電子與計(jì)算機(jī)工程系)
【摘要】MATLAB 是目前流行的數(shù)字計(jì)算軟件,其具有強(qiáng)大的圖像處理能力,并且界面簡單,易于操作,是設(shè)計(jì)圖像處理系統(tǒng)的理想工具。 本文將以MATLAB的圖形用戶界面(即GUI)平臺對圖像處理系統(tǒng)進(jìn)行設(shè)計(jì)。 其中大部分的圖像處理算法都可以通過 MATLAB 的圖像處理工具箱進(jìn)行實(shí)現(xiàn),這大大節(jié)省了研究成本和時(shí)間。[1]該系統(tǒng)支持索引圖像、灰度圖像、RGB 圖像等圖像類型的文件格式的讀,寫和處理。這些功能在生活中有很多的運(yùn)用價(jià)值,同樣的,對于運(yùn)算量大、過程復(fù)雜的功能,利用 MATLAB也可以快速得到所需結(jié)果。因?yàn)槠邢?,本文將著重闡述圖像邊緣檢測以及對比度增強(qiáng)的實(shí)現(xiàn)。
【關(guān)鍵詞】MATLAB 數(shù)字圖像處理 GUI 邊緣檢測
圖像處理的絕大部分操作都是基于圖形用戶界面(GUI)進(jìn)行的,GUI的作用是為用戶提供一個(gè)直觀的可編輯的界面,并可以通過該界面實(shí)現(xiàn)自己設(shè)定的功能,這大大降低了程序員的編輯工作。同樣我們也不必了解每一步的程序語句,只需建立簡單的內(nèi)在聯(lián)系的程序語言即可。
1、圖像的邊緣檢測
邊緣檢測技術(shù)作用于圖像的局部線性結(jié)構(gòu)。目前多數(shù)的檢測技術(shù)都是應(yīng)用一些已有形式的梯度算子或者直接歸一化閾值分割。邊緣檢測廣泛應(yīng)用于圖像的分割、分類、配準(zhǔn)等,實(shí)際生活中,邊緣檢測主要被用作一個(gè)局部濾波運(yùn)算完成的。
1.1閾值分割
灰度閾值的目的是把圖像的灰度分成不同的等級,然后自己設(shè)定一個(gè)灰度閾值來確定需要得到的區(qū)域或想要分割開的邊界,該方法最常用的處理辦法是二值化的閾值分割。程序中先通過函數(shù)rgb2gray即將所有類型圖像轉(zhuǎn)換為灰度圖像,再通過循環(huán)語句for讀取每個(gè)點(diǎn)的灰度值,然后基于已設(shè)定的閾值將圖像轉(zhuǎn)化為二值圖像。
1.2梯度分割
梯度分割即利用某些算子對圖像進(jìn)行邊緣檢測,邊緣勾畫出物體的邊緣部分,使我們能夠看清物體的輪廓。同時(shí)邊緣所攜帶的大量信息,是圖像識別中抽取圖像特征的重要屬性。梯度分割常用的幾個(gè)邊緣檢測算子有Robert,Sobel以及Canny。這些算子都是基于函數(shù)的導(dǎo)數(shù)進(jìn)行分類的。函數(shù)的導(dǎo)數(shù)可以反映圖像的灰度變化幅度,一階導(dǎo)的極大極小值或者二階導(dǎo)的零點(diǎn)值都是圖像灰度變化最明顯的地方,因此把這些地方作為圖像的邊緣有其合理的依據(jù)。
1.2.1 Robert交叉算子
Robert算子是一種利用局部差分算子尋找邊緣的算子,兩個(gè)卷積為x=[1,0;0,-1],y=[0,1;-1,0],x和y線性相加得到其灰度的衡量標(biāo)準(zhǔn),在程序中,我們同樣需要rgb2gray函數(shù)對圖像進(jìn)行灰度轉(zhuǎn)換,再通過函數(shù)edge( ,'Robert') 直接調(diào)用Robert算子即可,因?yàn)楣ぞ呦渥詭Я嗽摵瘮?shù),所有操作起來相當(dāng)簡單。
1.2.2 Sobel算子
與Robert類似,兩個(gè)卷積為x=[-1,0,1;-2,0,2;-1,0,1],y=[1,2,1;0,0,0;-1,-2,-1],程序操作也相同,其中sobel算子對灰度漸變和噪點(diǎn)多的圖像處理效果更為優(yōu)秀。
1.2.3 Canny算子
Canny算子的方法是利用高斯濾波器計(jì)算導(dǎo)數(shù),然后利用導(dǎo)數(shù)極大值和極小值來尋找圖像的梯度。該算子使用兩個(gè)閾值來分別檢測圖像的強(qiáng)邊緣和弱邊緣。這種方法對于噪聲較多的圖像處理效果較為出色。程序中通過函數(shù)edge( ,'Canny') 直接調(diào)用Canny算子即可。
2、圖像的對比度增強(qiáng)
對比度的增強(qiáng)在圖像處理也是很重要的一種技術(shù),該技術(shù)也是基于點(diǎn)的逐個(gè)處理,修改圖像的每一個(gè)像素的灰度值,依次達(dá)到癌變圖像的動態(tài)范圍。
2.1線性變換
線性變換的方法是將原圖像的灰度值線性的壓縮或者拉伸,比如原來的灰度范圍是[a,A],改變后的灰度范圍是[b,B],但在實(shí)際生活中,單純的線性變換并不能得到較好的效果,我們可以設(shè)計(jì)多段的分段變換對不同區(qū)間的灰度值分別進(jìn)行處理,從而利用線性變換最大限度的提高圖像的對比度。
2.2非線性變換
在有些情況下,線性變換并不能滿足處理的要求,此時(shí)我們可以利用非線性變換來處理圖像,通常使用的是對數(shù)變換和Gamma校正。
對數(shù)變換的公式如下:g(x,y)=Clog(f(x,y)+1),這段函數(shù)可以拓寬灰度低值,同時(shí)降低高值灰度。
Gamma校正的公式如下:g=kr=k(f/c)^(1/r),其中k為常數(shù),默認(rèn)為1,1/r取值范圍通常在0.4~0.8。
MATLAB中,線性變換和非線性變換都可以用imadjust實(shí)現(xiàn),只不過調(diào)用格式略有不同,若為線性變換,函數(shù)為T=imadjust(I),若為非線性變換,則為T=imadjust(I,gamma)。
除了上述的功能,MATLAB還具備很多其他的圖像處理能力,例如圖像的變換,旋轉(zhuǎn),圖像銳化,平滑,編碼壓縮及恢復(fù)。還有更多的功能等待開發(fā),篇幅有限,在這就不再累述了。
參考文獻(xiàn):
[1]周品.MATLAB 圖像處理與圖形用戶界面設(shè)計(jì)[M].清華大學(xué)出版社.2031.
[2]陳超.MATLAB應(yīng)用實(shí)例精講[M].北京:電子工業(yè)出版社.2011.