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