劉 超 李茂寬
摘 要:針對Visual Basic數值計算能力和圖像處理能力的不足,不利于系統開發(fā),介紹各向異性擴散方法的原理及其基于VB和MatrixVB的實現,編制了具有Windows界面和圖形處理功能的各向異性擴散圖像濾波程序。該方法將Matlab的強大計算功能與VB的Windows用戶界面開發(fā)方面優(yōu)勢結合起來,縮短了軟件的開發(fā)周期。軟件測試結果表明,計算方法正確,方法穩(wěn)定可靠,算法設計優(yōu)化,所開發(fā)的應用軟件具有界面友好,計算速度快,系統資源消耗少,操作簡便易行,能滿足圖像濾波的要求。
關鍵詞:Visual Basic;MatrixVB;各向異性擴散;圖像濾波
中圖分類號:TQ015.9;TP311 文獻標識碼:B 文章編號:1004-373X(2009)04-114-03
Realization of Anisotropic Diffusion Image Filtering Based on Visual Basic and MatrixVB
LIU Chao1,LI Maokuan2
(1.PLA General Staff Meteorological and Hydrological Department,Beijing,100081,China;
2.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 algorithm development.The theory of anisotropic diffusion for image filtering is introduced.The realization of anisotropic diffusion by incorporating VB and MatrixVB,a software has Windows interface and graphic processing function is developed.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 filtering.
Keywords:Visual Basic;MatrixVB;anisotropic diffusion;image filtering
0 引 言
圖像噪聲濾除是圖像前期處理的一個重要內容,其目的在于濾除影響視覺的信息,保存圖像
的有用信息。各向異性擴散(Anisotropic Diffusion)方法最早由Perona與Malik提出[1],隨后引起了人們的廣泛關注,并取得了相當大的進展。各向異性擴散與傳統濾波方法的不同之處在于它的各向異性,即在不同局部區(qū)域、不同方向上,濾波與平滑的強度各異,它與圖像的局部結構相關,在灰度變化較大的區(qū)域或方向上,由于灰度梯度較大,擴散作用較小,從而應盡量保留這些局部細節(jié)特征;若灰度變化較小或只有孤立噪聲點的區(qū)域,則采用較強的平滑處理,以達到抑制噪聲,保留邊緣與細節(jié)的目的。近年來,各向異性擴散方法在圖像多尺度非線性分析、邊緣檢測、抑噪與邊緣保留、分割等方面得到廣泛應用[2]。
目前大多數針對各向異性擴散分析與處理的軟件都是基于Matlab的,Matlab是集數值分析、矩陣運算、信號處理和圖形顯示于一體的高性能數學軟件。但Matlab也存在其自身的局限性:一般基于Matlab的應用程序不能脫離Matlab集成環(huán)境工作,而且編寫界面的功能相對較弱,Matlab本身是一種解釋性的語言,運行速度非常慢,大大降低了程序的效率。因此,Matlab與VB有效地集成在一起,相得益彰。將其強大的計算功能與VB在圖形用戶界面開發(fā)方面的優(yōu)勢結合起來,實現系統的無縫集成,對于有效縮短開發(fā)周期、優(yōu)化系統性能是十分有意義的。因此,Mathworks 公司提供了MatrixVB,在VB 中調用十分方便。在此以各向
異性擴散分析為例,介紹VB與MatrixVB的混編方法。
1 關于MatrixVB 的簡介
MatrixVB 是Mathworks 公司針對VB提供的一個Matlab組件庫(Component Object Model Library),它提供了600 多個函數,包括:基本的數學運算和功能強大的信號處理、線性代數、串運算及圖形圖像處理功能等,用來彌補VB 內建函數的不足,為VB 提供了強大的功能擴展,讓程序員更容易地開發(fā)計算應用方面的程序代碼。在VB中使用該數學工具包可以避免重復性勞動,可以減少開發(fā)人員實現算法和界面設計方面的困難。
2 各向異性擴散原理及其實現
各向異性擴散從物理上可以解釋為一個擴散的過程。它通過估計噪聲和邊緣的梯度強度,在區(qū)域的內部進行平滑,而在有邊緣的地方抑制平滑,這個過程可以通過下面的公式表示:
ИИ氮祎I(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)︱)。通常選擇以下2種擴散函數:
ИG1(x,t)=exp(2)
G2(x,t)=11+K|↖(x,t)|2(3)И
定義流量函數:Е(↖)=G2(x,t)↖(x,t)В那么式(1)可以寫成:
ИИ氮祎I(x,t)=div,t>0
I(x,0)=I0(x),t=0 (4)И
在此采用的擴散系數是G2(x,t),其中,K是控制擴散強度的系數。由于它采用圖像在不同方向上的梯度的單調遞減函數作為擴散系數,在同質區(qū)域內部,即灰度值變化不大,梯度較小,于是它的擴散系數較大,可以有效地平滑同質區(qū)域內的噪聲;而在圖像的邊緣部分,即灰度值變化劇烈,梯度較大,擴散系數就較小,這樣能夠保留其邊緣信息。
由于圖像濾波都是通過計算機程序實現的,所以并不需要求方程的解析解,而往往通過求數值解來實現。
在離散的算法中,先將:
ИИ氮祎I(x,t)=divИ
的左邊轉化為差分的形式:
ИI(x,t)-I(x,0)t=divИ
即在離散的情況下,計算針對每個像素:
ИI(x,t)=I(x,0)+t*div(5)И
其中數字圖像的梯度為↖(x,t)=[IxIy],流量函數為:
Иdiv=氮祒+
氮祔И
通過以上的離散運算,可以直接得到結果,利用VB和MatrixVB實現上述算法。
首先是讀入圖像和設置參數t,K以及循環(huán)次數,讀入的圖像是疊加了高斯噪聲的cameraman圖像,圖1就是原圖像。程序如下:
a = vbload("c: cameraman.mat")
t = 0.2′時間t
N = 20′循環(huán)次數
K = 0.001′控制系數
圖1 原圖像
下面的步驟是擴散過程,這是一個迭代過程,根據定義,過程的每一步分別要求取圖像的梯度,擴散函數和散度。
For i = 1 To N
d = gradient(a) ′求梯度
dx = d(1)′Ix
dy = d(2)′Iy
ChuanDao = rdivide(1,plus(1,mtimes(K,plus(power(dx,2),power(dy,2))))) ′擴散函數G
dd1 = gradient(times(ChuanDao,dx))
dd2 = gradient(times(ChuanDao,dy))
dxx = dd1(1)
dyy = dd2(2)
a = plus(a,mtimes(t,plus(dxx,dyy)))
Next i
′--以下代碼將灰度規(guī)整到[0,255]之間
da = mmax(mmax(a))
xiao = mmin(mmin(a))
tmp = minus(a,xiao)
xishu = minus(da,xiao)
tmp = rdivide(tmp,xishu)
tmp = mtimes(tmp,255)
′--以上代碼將灰度規(guī)整到[0,255]之間′
ax = vbaxes(Form1.hWnd)
imshow (muint8(tmp))′顯示圖像
圖2和圖3分別是迭代了10次和20次的濾波后圖像,由圖2可見,濾波效果差,還存在大量噪聲。圖3中,噪聲基本被濾除,圖像邊緣保持較好。
圖2 濾波后圖像(迭代10次)
圖3 濾波后圖像(迭代20次)
3 結 語
介紹VB 與MatrixVB 混合編程的各向異性擴散圖像濾波方法實現,程序在Windows XP Professional版上用MatrixVB4.5和Visual Basic 6.0中文版實現,具有自動化程度和效率高,占用系統資源少,數據交換能力強等優(yōu)點。并在文中給出了部分基本代碼,讀者可以根據自己的需要進行擴充。這種編程方式既節(jié)省了時間又提高了軟件的性能,對于優(yōu)化系統、縮短軟件開發(fā)周期很有意義。
參 考 文 獻
[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]Catte F,Lions P L,Morel J M,et al.Image Selective Smoothing and Edge Detection by Nonlinear Diffusion [J].SIAM J.Num.Anal.,1992,29(1):182-193.
[3]MatrixVB User′s Guide[M].The MathWorks.Inc.2000.
[4]王躍強,王紀龍,王云才.VB 程序中實現調用Matlab的方法[J].計算機應用,2002,2(21):95 - 96.
[5]何強,何英.Matlab擴展編程[M].北京:清華大學出版社,2002.
[6]劉炳文.精通Visual Basic6.0 中文版[M].北京:電子工業(yè)出版社,1999.
[7]黃錫泉.VB與Matlab無縫接口編程[J].微計算機應用,2005,26(2):238 - 239.
[8]李蘭友,莊國瑜,秦衛(wèi)光.Visual Basic 繪圖與圖像處理[M].北京:人民郵電出版社,1999.
作者簡介 劉 超 男,1981年出生,山東青島人,碩士研究生。研究方向為計算機仿真。
李茂寬 男,1979年出生,山東即墨人,博士研究生。研究方向為圖像處理與模式識別。
圖 像 分 析江小明等:塊匹配算法中特征塊的選取方法研究
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。