APP下载

基于VB与MatrixVB的各向异性扩散图像滤波方法实现

2009-03-02李茂宽

现代电子技术 2009年4期

刘 超 李茂宽

摘 要:针对Visual Basic数值计算能力和图像处理能力的不足,不利于系统开发,介绍各向异性扩散方法的原理及其基于VB和MatrixVB的实现,编制了具有Windows界面和图形处理功能的各向异性扩散图像滤波程序。该方法将Matlab的强大计算功能与VB的Windows用户界面开发方面优势结合起来,缩短了软件的开发周期。软件测试结果表明,计算方法正确,方法稳定可靠,算法设计优化,所开发的应用软件具有界面友好,计算速度快,系统资源消耗少,操作简便易行,能满足图像滤波的要求。

关键词: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],随后引起了人们的广泛关注,并取得了相当大的进展。各向异性扩散与传统滤波方法的不同之处在于它的各向异性,即在不同局部区域、不同方向上,滤波与平滑的强度各异,它与图像的局部结构相关,在灰度变化较大的区域或方向上,由于灰度梯度较大,扩散作用较小,从而应尽量保留这些局部细节特征;若灰度变化较小或只有孤立噪声点的区域,则采用较强的平滑处理,以达到抑制噪声,保留边缘与细节的目的。近年来,各向异性扩散方法在图像多尺度非线性分析、边缘检测、抑噪与边缘保留、分割等方面得到广泛应用[2]。

目前大多数针对各向异性扩散分析与处理的软件都是基于Matlab的,Matlab是集数值分析、矩阵运算、信号处理和图形显示于一体的高性能数学软件。但Matlab也存在其自身的局限性:一般基于Matlab的应用程序不能脱离Matlab集成环境工作,而且编写界面的功能相对较弱,Matlab本身是一种解释性的语言,运行速度非常慢,大大降低了程序的效率。因此,Matlab与VB有效地集成在一起,相得益彰。将其强大的计算功能与VB在图形用户界面开发方面的优势结合起来,实现系统的无缝集成,对于有效缩短开发周期、优化系统性能是十分有意义的。因此,Mathworks 公司提供了MatrixVB,在VB 中调用十分方便。在此以各向

异性扩散分析为例,介绍VB与MatrixVB的混编方法。

1 关于MatrixVB 的简介

MatrixVB 是Mathworks 公司针对VB提供的一个Matlab组件库(Component Object Model Library),它提供了600 多个函数,包括:基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,用来弥补VB 内建函数的不足,为VB 提供了强大的功能扩展,让程序员更容易地开发计算应用方面的程序代码。在VB中使用该数学工具包可以避免重复性劳动,可以减少开发人员实现算法和界面设计方面的困难。

2 各向异性扩散原理及其实现

各向异性扩散从物理上可以解释为一个扩散的过程。它通过估计噪声和边缘的梯度强度,在区域的内部进行平滑,而在有边缘的地方抑制平滑,这个过程可以通过下面的公式表示:

ИИ氮祎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是控制扩散强度的系数。由于它采用图像在不同方向上的梯度的单调递减函数作为扩散系数,在同质区域内部,即灰度值变化不大,梯度较小,于是它的扩散系数较大,可以有效地平滑同质区域内的噪声;而在图像的边缘部分,即灰度值变化剧烈,梯度较大,扩散系数就较小,这样能够保留其边缘信息。

由于图像滤波都是通过计算机程序实现的,所以并不需要求方程的解析解,而往往通过求数值解来实现。

在离散的算法中,先将:

ИИ氮祎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以及循环次数,读入的图像是叠加了高斯噪声的cameraman图像,图1就是原图像。程序如下:

a = vbload("c: cameraman.mat")

t = 0.2′时间t

N = 20′循环次数

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

′--以下代码将灰度规整到[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)

′--以上代码将灰度规整到[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中文版实现,具有自动化程度和效率高,占用系统资源少,数据交换能力强等优点。并在文中给出了部分基本代码,读者可以根据自己的需要进行扩充。这种编程方式既节省了时间又提高了软件的性能,对于优化系统、缩短软件开发周期很有意义。

参 考 文 献

[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].北京:电子工业出版社,1999.

[7]黄锡泉.VB与Matlab无缝接口编程[J].微计算机应用,2005,26(2):238 - 239.

[8]李兰友,庄国瑜,秦卫光.Visual Basic 绘图与图像处理[M].北京:人民邮电出版社,1999.

作者简介 刘 超 男,1981年出生,山东青岛人,硕士研究生。研究方向为计算机仿真。

李茂宽 男,1979年出生,山东即墨人,博士研究生。研究方向为图像处理与模式识别。

图 像 分 析江小明等:块匹配算法中特征块的选取方法研究

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。