李福沛 于文靜 蔡琪 劉宇豪
摘 要:設(shè)計(jì)了基于小波的多尺度圖像邊緣算法的實(shí)驗(yàn)。通過此實(shí)驗(yàn),在熟練掌握圖像邊緣提取的經(jīng)典算法基礎(chǔ)上,了解小波對于圖像多層提供可實(shí)現(xiàn)上述方法的matlab程序代碼,學(xué)生可利用相關(guān)程序?qū)D像進(jìn)行邊緣提取,比較邊緣提取利用不同方法獲得不同特征的邊緣。在數(shù)字圖像實(shí)驗(yàn)中首次引入小波的多尺度圖像邊緣算法。
關(guān)鍵詞:邊緣檢測;邊緣算子;小波變換
引言
目前的邊緣提取算法有傳統(tǒng)的利用微分算子的邊緣檢測算法,正在迅速發(fā)展的小波多尺度邊緣檢測算法,另外還有基于數(shù)學(xué)形態(tài)學(xué)的邊緣檢測算法等。本實(shí)驗(yàn)將引導(dǎo)學(xué)生學(xué)習(xí)傳統(tǒng)的邊緣檢測算法,體會小波邊緣檢測算法,并利用Matlab進(jìn)行編程實(shí)驗(yàn)觀察比較各算法的邊緣檢測效果。
1 經(jīng)典的圖像邊緣檢測算子的原理
將圖像邊緣定義為灰度變化比較劇烈的地方,可以具體為其周邊像素灰度有階躍變化或屋頂變化的像素的集合。一般邊緣檢測方法是考察圖像的每個(gè)像素在某個(gè)鄰域內(nèi)灰度的變化,利用邊緣一階或二階方向?qū)?shù)變化規(guī)律來檢測邊緣,這種方法通常稱為邊緣檢測局部算子法。幾種經(jīng)典的邊緣檢測算子:
(1)基于一階微分的邊緣檢測算子,包括Roberts算子,Sobel算子和Prewitt算子
Roberts邊緣算子是一種斜向差分的梯度計(jì)算方法,梯度的大小代表邊緣的強(qiáng)度,梯度的方向與邊緣走向垂直。其計(jì)算公式表示為:
式中,f(x,y)是具有整數(shù)像素坐標(biāo)的輸入圖像。
Roberts邊緣算子定位精度,在水平和垂直方向效果較好,但對噪聲敏感。
Sobel邊緣算子是一組方向算子,從不同的方向檢測邊緣。Sobel算子不是簡單求平均再差分,而是加強(qiáng)了中心像素上、下、左、右四個(gè)方向像素的權(quán)重,運(yùn)算結(jié)果是一副邊緣圖像。該算子通常由下列計(jì)算公式表示:
Prwitte邊緣算子是一種邊緣樣板算子,利用像素點(diǎn)上下、左右鄰點(diǎn)灰度差,在邊緣處達(dá)到極值檢測邊緣,對噪聲具有平滑作用。由于邊緣點(diǎn)像素的灰度值與其鄰域點(diǎn)像素的灰度值有顯著不同,在實(shí)際應(yīng)用中通常采用微分算子和模板匹配方法檢測圖像邊緣。該算子通常由下列計(jì)算公式表示:
Prewitt算子不僅能檢測邊緣點(diǎn),而且能抑制噪聲的影響,因此,對灰度和噪聲較多的圖像處理的較好。
(2)基于二階微分的邊緣檢測算子,Laplacian算子是最常用的二階導(dǎo)數(shù)算子。
由二元函數(shù)f(x,y)的Laplacian變換公式:
?犖2f算子能突出反映圖像中的角線和孤立點(diǎn)。
(3)基于最優(yōu)化方法的邊緣檢測算子,常用的有Canny邊緣算子。
Canny算子是采用二維高斯函數(shù)的任意方向上的一階方向?qū)?shù)為噪聲濾波器,通過與圖像f(x,y)卷積進(jìn)行濾波,然后對濾波后的圖像尋找圖像梯度的局部極大值,確定圖像邊緣。數(shù)學(xué)描述為:首先取二維高斯函數(shù)
,式中,■為方向矢量,?犖G(x,y)為梯度矢量。
Canny算子是建立在二維?犖G(x,y)×f(x,y)基礎(chǔ)上,邊緣強(qiáng)度由
|?犖G(x,y)×f(x,y)|和方向 來決定。[1]
2 實(shí)驗(yàn)內(nèi)容
(1)圖像的基本操作[4][5][6]
imread(‘filename.fmt) 該語句用于讀取指定名稱和文件格式的圖像
rgb2gray(X) 該語句用于將變量X中存儲的彩色圖像轉(zhuǎn)換成灰度圖像
imshow(X) 該語句用于使用通用的圖形圖像視窗來顯示變量X中存儲的圖像
邊緣檢測:edge(I,methodparameters) 圖像邊緣檢測,I為輸入圖像,method可以為robertssobelprewittlog等分別對應(yīng)相應(yīng)的算子
BW=edge(I,roberts)
BW=edge(I,sobel)
BW=edge(I,prewitt)
BW=edge(I,log)
BW=edge(I,canny)
小波變換:[C,S]=wavedec2(X,N, ‘wname) 用指定的小波基計(jì)算圖像X的N層二維離散小波分解。
X=wrcoef2(‘type,C,S,wname,N)用多層分解得到的結(jié)構(gòu)來重構(gòu)第N層信號。
(2)利用經(jīng)典算子提取圖像邊緣
在上一節(jié)中已對于圖像的經(jīng)典算子進(jìn)行邊緣提取的理論作了詳細(xì)論述,這里以圖像lena.png為例,提取圖像的邊緣得到如下結(jié)果。學(xué)生可以對于不同算法的邊緣提取進(jìn)行比較并利用程序?qū)嶒?yàn)中提供的程序edge.m通過改寫程序中圖像名稱對不同圖像的邊緣進(jìn)行提取。
圖1 經(jīng)典算法對于圖像的邊緣提取
(3)利用小波變換對圖像進(jìn)行處理
圖2 利用小波變換對圖像進(jìn)行邊緣提取
(4)利用小波的多層分解的模極值獲取圖像的邊緣對于變換后的圖像,利用小波的多層分解,提取每層模的極大值點(diǎn)以獲取圖像的主體結(jié)構(gòu)信息。
設(shè)二元函數(shù)?茲(x,y)滿足以下條件:
則稱?茲(x,y)為二元平滑函數(shù)。對于?茲(x,y),定義兩個(gè)小波函數(shù):
記 ,其中i=1,2,則在尺度2j時(shí)函數(shù)f(x,y)
沿水平方向和垂直方向的二進(jìn)小波變換為:
并記作:
按照卷積和導(dǎo)數(shù)的關(guān)系,可以將其改寫為:
定義在尺度2j時(shí)函數(shù)f(x,y)小波變換的模和輻角分別為:
函數(shù)的突變點(diǎn)對應(yīng)于矢量方向 上 的局部極大值點(diǎn),在處理圖像時(shí),函數(shù)的突變點(diǎn)即圖像的邊緣點(diǎn)。對任意點(diǎn)f(x0,y0),若 在由 給定的梯度方向上取局部模極大值,則稱點(diǎn)f(x0,y0)為f(x,y)的二進(jìn)小波變換的模的局部極大值點(diǎn),這些二進(jìn)小波變換的模取極大值點(diǎn)的位置就給出了圖像的一個(gè)多尺度邊緣。[2]
圖3中第一列是原始圖像的模值的圖像,第二列給出了模值的局部極大值的圖像,第三列是給出了模值的局部極大值的圖像,當(dāng)紋理光線的變化的極大值大于給定的閾值時(shí),則用該閾值表示。[3]
3 結(jié)束語
通過這一實(shí)驗(yàn)學(xué)生了解mallat原理和方法的實(shí)現(xiàn),利用程序及具體的實(shí)驗(yàn)結(jié)果,使學(xué)生對經(jīng)典邊緣提取,小波分解的邊緣提取,和mallat算法多層小波分解局部極大值的邊緣提取有了感性的認(rèn)識。通過圖像處理結(jié)果對比,激發(fā)學(xué)生對于這一方向的興趣。希望能對于學(xué)生在這一方向的研究上具有一定的指導(dǎo)作用。
參考文獻(xiàn)
[1]張德豐,等.MATLAB數(shù)字圖像處理[M].北京:機(jī)械工業(yè)出版社.
[2]高國榮,劉冉,羿旭明,等.一種改進(jìn)的基于小波變換的圖像邊緣提取算法[J].武漢大學(xué)學(xué)報(bào)(理學(xué)版),2005,51(5):615-619.
[3]Mallat,S. Zhong, S. Characterization of signals from multiscale edges[J].Pattern Analysis and Machine Intelligence, IEEE Transactions on ,Jul 1992,710-732.
[4]張德豐.數(shù)字圖像處理(MATLAB版)[M].北京:人民郵電出版社,2009:15-30.
[5]王家文.MATLAB7.6圖形圖像處理[M].北京:國防工業(yè)出版社,2009:21-32.
[6]J. Wu and Q. Q. Ruan. Object removal by cross isophotes exemplar-based inpainting [C]//Proceedings of 18th International Conference on Pattern Recognition. Hong Kong: IEEE, 2006,3:810-813.