摘 要:針對VB數值計算能力和圖像處理能力不足,以及不利于系統開發的缺點,介紹基于VB和MatrixVB并利用四階偏微分方程實現圖像去噪的方法。利用VB作為主要編程語言,借助MatrixVB 矩陣運算函數庫建立了處理系統,實現了圖像去噪功能。該方法將Matlab的強大計算功能與VB的Windows用戶界面開發方面的優勢結合起來,縮短了軟件的開發周期。軟件測試結果表明,計算方法正確,方法穩定可靠,算法設計優化,所開發的應用軟件具有界面友好,計算速度快,系統資源消耗少,操作簡便易行,能滿足圖像濾波的要求。
關鍵詞:Visual Basic;MatrixVB;四階偏微分方程;圖像去噪
中圖分類號:TQ15.9;TP391文獻標識碼:A文章編號:1004-373X(2010)02-115-03
Realization of Image Denoising Based on Four_order Partial Differential Equations
LI Yan1,LIU Chao2,LI Maokuan3
(1.Shandong Army Reserve Duty Anti_aircraft Artillery Division,Qingdao,266071,China;
2.PLA General Staff Meteorological and Hydrological Department,Beijing,100081,China;
3.Naval Aeronautical and Astronautical University,Yantai,264001,China)
Abstract:According to the situation that Visual Basic is insufficient in numerical computation and image processing ability,and is weak in system development,the realization of four_order partial differential equations for image denoising by incorporating Visual Basic and MatrixVB is introduced.Using program language Visual Basic as main language for image denoising,combining with MatrixVB matrix calculating function.The incorporated advances of Matlab′s powerful calculation function and Visual Basic′s friendly graphic user interface shorten the period of software development.It has been demonstrated by the instance that the calculating procedure is accurate,steady and credible.The software interface is friendly and the function is perfect.Beside this,resource expenditure of computer is low and calculating speed is quick,the software is easy to learn and convenient to use.It is a good tool for image denoising.
Keywords:Visual Basic;MatrixVB;four_order partial differential equations;image denoising
0 引 言
圖像去噪是遙感圖像前期處理的一個重要內容,其目的在于濾除影響視覺的信息,獲得真實和保存有用信息的圖像。近年來,隨著數字圖像處理技術的發展,國際上出現了一些空域濾波算法,使其逐漸成為遙感圖像噪聲抑制技術的主流。在空域濾波技術中,局域自適應濾波是一個重要概念,這種算法是在圖像上取一個滑動方窗,以方窗內所有像素作為濾波器的輸入值,基于其局域統計特性進行濾波處理,典型的如Lee算法,Kuan算法,MAP算法等,這些算法較好地濾除了噪聲并保留了邊緣及目標等特征。由于在圖像處理和圖像分析領域去除噪聲是一個長期存在的問題,一個較好的平滑噪聲的方法應該是既能消除噪聲,又不使圖像的邊緣輪廓和線條變模糊,即在抑制噪聲的同時,能有效保持空間分辨率。自適應平滑濾波是一種重要去噪方法,采用自適應平滑濾波的迭代運算,可使信號的邊緣得到銳化,此時再進行邊緣檢測,可以得到很高的邊緣定位精度,基于偏微分方程的圖像平滑技術就是一種自適應的平滑技術。近年來,基于偏微分方程[1](PDEs)的去噪方法在圖像處理與分析領域得到了廣泛的重視,因為它在平滑噪聲的同時,可以使邊緣得到保持。現在,偏微分方程方法已經成為圖像處理與分析中的一個工具。
目前,大多數針對各偏微分方程分析與處理的軟件都是基于Matlab的。Matlab是集數值分析、矩陣運算、信號處理和圖形顯示于一體的高性能數學軟件,但Matlab也存在其自身的局限性,例如一般基于Matlab的應用程序不能脫離Matlab集成環境工作,而且編寫界面的功能相對較弱,Matlab本身是一種解釋性的語言,運行速度非常慢,大大降低了程序的效率。因此,Matlab與VB有效地集成在一起,相得益彰。將其強大的計算功能與VB在圖形用戶界面開發方面的優勢結合起來,實現應用系統的無縫集成,對于有效縮短開發周期,優化系統性能是十分有意義的。因此,Mathworks 公司提供了MatrixVB,在VB 中調用十分方便。本文以四階偏微分方程圖像濾波為例,介紹了VB與MatrixVB的混編方法。
1 關于MatrixVB 的簡介
MatrixVB[2]是Mathworks 公司針對VB提供的一個Matlab組件庫(Component Object Model Library),它提供了600 多個函數,包括基本的數學運算和功能強大的信號處理、線性代數、串運算及圖形圖像處理功能等,用來彌補VB 內建函數的不足(主要是針對數學函數而言,它具有Matlab繪圖的強大功能,讓VB 能很輕易地畫出一些數學函數圖形),為VB 提供了強大的功能擴展,讓程序員能更容易地開發計算應用方面的程序代碼。在VB中使用該數學工具包可以避免重復性勞動,可以減少開發人員實現算法和界面設計方面的困難[3]。
2 四階偏微分方程圖像濾波原理及其實現
各向異性擴散[4](Anisotropic Diffusion)方法最早由Perona和Malik提出,隨后引起了廣泛的關注,并取得了相當大的進展,如多尺度分析、魯棒性分析等。各向異性擴散與傳統濾波方法的不同在于它的各向異性,即在不同局部區域或不同方向上,濾波與平滑的強度各異,它與圖像的局部結構相關,在灰度變化較大的區域或方向上,由于灰度梯度較大,擴散作用較小,從而應盡量保留這些局部細節特征;若灰度變化較小或只有孤立噪聲點的區域,則采用較強的平滑處理,以達到抑制噪聲,保留邊緣與細節的目的。近年來,各向異性擴散方法在圖像多尺度非線性分析、邊緣檢測、抑噪與邊緣保留、分割等方面都得到了廣泛應用。
各向異性擴散從物理上可以解釋成一個擴散過程。它通過估計噪聲和邊緣的梯度強度,在區域的內部進行平滑,在有邊緣的地方抑制平滑,這個過程可以通過下面的公式來表示:
tI(x,t)=div\\, t>0
I(x,0)=I0(x),t=0(1)
式中:I0(x)為原來的圖像;x為空間坐標;變量t為處理順序的參數,在實現離散時,表示遞歸次數;div為散度;為梯度;G(x,t)為擴散系數,它的大小取決于圖像梯度強度的強弱,它是圖像梯度強度的單調遞減函數:G(x,t)=f(|I(x,t)|)。通常選擇以下兩種擴散函數:
G1(x,t)=exp\\(2)
G2(x,t)=1/(1+K|I(x,t)|2)(3)
式中:G2(x,t)為擴散系數;K是控制其擴散強度的系數,各向異性的擴散方程對于不用方向而采用不同的擴散系數。
定義流量函數:φ(I)=G2(x,t)I(x,t),那么式(1)可以寫成:
tI(x,t)=div\\, t>0
I(x,0)=I0(x),t=0(4)
由于它采用了圖像在不同方向上梯度的單調遞減函數作為擴散系數,在同質區域內部即灰度值變化不大的,梯度較小,于是它的擴散系數較大,可以有效地平滑同質區域內的噪聲;而在圖像的邊緣部分即灰度值變化劇烈處,梯度較大,于是它的擴散系數就較小,這樣能夠保留其邊緣信息。
在用Perona_Malik 方程平滑圖像過程中,有時會出現“塊效應”,即圖像處理后某些區域內灰度相同。區域內灰度相同,表示該區域任意一點灰度值的一階倒數為0。這說明隨著迭代次數增加,圖像向分塊同灰度圖像過渡。圖像看上去就像是由各不同亮度的區域組成的,圖像顯得輪廓過分尖銳。You Yu_li等研究者提出用考慮高階偏微分方程處理圖像,使輪廓平緩些。例如,將I改為2I的形式(2為拉普拉斯算子),當2= 0時,圖像只是一平面,但不一定要求是水平平面。基于四階偏微分方程消除噪聲的方法, 避免塊效應,同時兼顧噪聲消除和邊緣保持。
基于Perona_Malik方程方法可轉化等價的魯棒性估計方法。魯棒性估計問題連續形式可以寫成:
minΩf(|u|)dΩ(5)
函數與系數分布函數的關系為:
c(x)=f′(x)/x
考慮一個定義在區域為Ω的連續圖像上,有函數:
E(u)=∫Ωf(|2u|)dxdy(6)
E(u)是一個圖像不平滑程度的遞增函數,圖像平滑程度由(|2u|)度量。函數最小化等價于平滑圖像。該方程最小化問題是下面一般變化問題的特殊形式。
E(u)=∫ΩF(x,y,u,D1u,D2u,…,Dtu,…)dxdy(7)
這里Diu=iuxi,iuyiT,等價歐拉方程為:
∑DTiFDiu=0
對于奇數階倒數DTi= - Di ,偶數階倒數DTi= +Di 。對于函數E(Φ)有:
F(uxx,uyy)=f(|2u|)=f(|uxx+uyy|)
得Fuxx=Fuyy=f′(|2u|)2u|2u|,因此歐拉方程變為:
2f′(|2u|)2u|2u|=0(8)
如果定義2u|2u|0=0,則方程應寫為:
2[c(|u|)u]=0
這個歐拉方程可以由遞減過程決定:
ut=-2[c(|u|)u](9)
關于式(9)的數值計算方法,與各向異性擴散濾波相似,不再推導。
首先是讀入圖像和設置參數,讀入的圖像是疊加了均值為0,方差為0.01高斯噪聲的圖像,圖1就是原圖像。
圖1 原圖像
以下步驟是擴散過程,這是一個迭代過程,源程序為:
For i = 1 To N
d = gradient(a)
dx = d(1)
dy = d(2)
d2 = gradient(dx)
d3 = gradient(dy)
dxx = d2(1)
dxy = d2(2)
dyx = d3(1)
dyy = d3(2)
ChuanDao = rdivide(1,plus(1,mtimes(K,plus(power(dxx,2),power(dyy,2)))))
dd1 = gradient(times(ChuanDao,dxx))
dd2 = gradient(times(ChuanDao,dyy))
dxxx = dd1(1)
dyyy = dd2(2)
ddd1 = gradient(dxxx)
ddd2 = gradient(dyyy)
dxxxx = ddd1(1)
dyyyy = ddd2(2)
a = minus(a,mtimes(t,plus(dxxxx,dyyyy)))
Next i
圖2和圖3是分別迭代了10次和20次濾波后的圖像。可見,基于四階偏微分方法的光滑性要好,處理的圖像顯得平滑自然。
圖2 濾波后圖像(迭代10次)
圖3 濾波后圖像(迭代20次)
3 結 語
在此,介紹VB 與MatrixVB 混合編程的四階偏微分方程實現圖像濾波的方法,程序在Windows XP Professional版上用MatrixVB 4.5和Visual Basic 6.0中文版實現,具有自動化程度和效率高,占用系統資源少,數據交換能力強等優點。文中給出了部分基本代碼,讀者可以根據自己的需要進行擴充。這種編程方式既節省了時間,又提高了軟件的性能,對于優化系統,縮短軟件開發周期具有重大意義。
參考文獻
[1]Perona P,Malik J.Scale_space and Edge Detection using Anisotropic Diffusion[J].IEEE Trans.on Pattern Analysis Machine Intelligence,1990,12(7):629-639.
[2]MatrixVB User′s Guide[M].The MathWorks.Inc.2000.
[3]何強,何英.Matlab擴展編程[M].北京:清華大學出版社,2002.
[4]Catte F,Lions P L,Morel J M,et al.Image Selective Smoo_thing and Edge Detection by Nonlinear Diffusion [J].SIAM Num.Anal.,1992,29(1):182-193.
[5]王躍強,王紀龍,王云才.VB 程序中實現調用Matlab的方法[J].計算機應用,2002,21(2):95 _ 96.
[6]劉炳文.精通Visual Basic 6.0(中文版)[M].北京:電子工業出版社,1999.
[7]黃錫泉.VB 與Matlab無縫接口編程[J].微計算機應用,2005,26(2):238 _ 239.
[8]李蘭友,莊國瑜,秦衛光.Visual Basic 繪圖與圖像處理[M].北京:人民郵電出版社,1999.