MATLAB图像去噪在医学图像中的应用

摘要:根据扫描工程图像的特点,研究了图像中噪声产生的机理和消除方法;提出了利用中值滤波法消除医学图像噪声的实用方法。使用软件工具MATLAB快速地实现了图像的中值滤波。 结果表明,利用中值滤波法消除图像中的随机噪声(你文中加的是椒盐噪声)是图像噪声处理的最佳方法。其中还有不少的改进算法,使得去噪效果变得又快又好。

关键字:图像去噪 中值滤波 噪声 MATLAB


引言

噪声是影响CT图像质量至关重要的因素,当病变组织与正常的衰减系数相差很小时,高噪声的CT将无法分辨此病症。CT诊断主要是依据CT影像所提供的正常或异常信息作出诊断结论,病变诊断符合率取决于图像质量,优质CT图像是诊断 准确的先决条件。因此,需要尽可能减少噪声的影响。

图像噪声按其来源可分为加性噪声、乘性噪声、量化噪声、椒盐噪声等;按噪声的性质则可分为高斯噪声和脉冲噪声两类。目前,常用的图像噪声滤波方法有基于频率域的低通滤波法,基于空间域的均值滤波、中值滤波等平滑滤波法。 均值滤波,中值滤波中值滤波法是消除随机图像噪声的最佳方法,特别是取出椒盐和脉冲噪声。本文将介绍运用中值滤波对图像的去噪处理及其改进算法。

1.中值滤波的基本原理

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。这种滤波器的优点是运算简单而且速度快,在滤除叠加白噪声和长尾叠加噪声方面显示了极好的性能。中值滤波器在滤除噪声的同时能很好地保护图像边缘,使图像较好地复原。另外,中值滤波器很容易自适应化,从而可以进一步提高其滤波性能。因此,它就非常适应于一些线性滤波器无法胜任的数字图像处理应用场合。

中值滤波的基本原理[2]是:首先确定一个以某像素为中心点的邻域,然后将该邻域中的各个像素的灰度值进行排序,取其中间值作为中心点像素灰度的新值。这里的邻域称为窗口,当窗口在图像中上下左右进行移动后。利用中值滤波算法就可以很好地对图像进行平滑处理。在一维下的中值滤波算法定义为:当n为奇数时,n个数Χ1,Χ2,……,Χn的中值就是按数值大小顺序处于中间位置的数;当n为偶数时,定义两个中间数的平均值为中值.用符号med(Χ1,Χ2,……,Χn)来表示中值。例如:med(1,3,4,0,6)=3。

在二维下的中值滤波算法定义为:设{xij}表示数字图像各点的灰度,这里(i,j)取遍Z2或Z2的某子集。滤波器窗口为A,其尺寸为N=(2K+1)X(2K+1),yij是窗口A在xij的中值,则: yij= med{xi+r,j+s,(r,s) ∈A}。

中值滤波器是一种邻域运算,是把邻域中的像素按灰度级进行排序,然后选择该组中的中间值作为输出像素值。具体步骤是:①将模板在图像中漫游,并将模板中心与图像中某个像素的位置重合;②读取模板下个对应像素的灰度值:③将这些灰度值从小到大排成一列;④找出这些值里排在中间的一个;⑤将这个中间值赋给对应模板中心位置的像素。

可见,中值滤波就是让与周围像素灰度值差比较大的像素改取与周围像素值接近的值,从而可以消除孤立的噪声点。在一定条件下,中值滤波可以克服线性滤波器如最小均方滤波.均值滤波等带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。中值滤波的关键在于选择合适的窗口大小及窗口形状。

2.数字图像中值滤波的MATLAB实现

MATLAB是Math Works公司推出的一个实现工程和科学运算、建模和仿真,原型开发,数据分析及可视化,科学和工程绘图,应用程序设计等方面的多功能软件系统。它已广泛应用于生物医学工程、图像信息处理、信号分析、时间序列分析、控制论和系统论等各个领域,作为一种编程语言和可视化工具,MATLAB具有使用方便、语法简单、函数丰富、界面友好和开放性强等特点。它强大的工具箱中有许多关于数字图像处理的函数,调用这些函数给我们提供很大的方便。它是开放式的,可以应用,也可以根据自己的需要进行扩展。为此,MATLAB语言已经成为目前使用最为广泛的工程应用软件之一[3]。

2.1 程序实现

2.1 中值滤波去噪实验结果(改成2.2 实验结果 把图1和图2都集中放在这一节中。加好图标号和标题。)

实验1 在原始图像增加方差0.02的椒盐噪声后。使用标准中值滤波方法进行处理。

结果如图1和表1所示。图1(a)为原始灰度图像;图1(b)为加了方差0.02的椒盐噪声后的图像;图1(c)为用中值滤波处理图1(b)得到的图像。


v2-b31d6b19840e5c99664f4ace7e3b834e_b.jpg

v2-ea90dd0060ab2ed3e787b97d91755617_b.jpg

v2-271e50f3200a128c29a2f02b02f38fa8_b.jpg


图1(a)原始图像 图2(b)加椒盐噪声 图3(c)滤波后图像

表1

3X3中值滤波的RPSN值

算法 RPSN
3X3中值滤波 20.0510


实验2 在原始图像添加方差0.25的椒盐噪声, 采用7X7的滤波窗口处理图像。图2为处理后的图像,表2为对应的RPSN值。


v2-4146bf0f21860fd2fab16b3f56da06de_b.jpg

v2-f95826013739d64384af92f58396b89e_b.jpg

v2-6d85da2cf24a5aedcce6df1d04169a69_b.jpg


图2(a)原始图像 图2(b)添加方差0.25椒盐噪声 图2(c)滤波后图像

图2


2.3 算法评价与分析

以下实验均采用峰值信噪比(RPSN) 作为评价的标准。RPSN 定义为:

RPSN=

v2-904ebd0485f2e3eba4c7ed6092990ebf_b.jpg

v2-904ebd0485f2e3eba4c7ed6092990ebf_b.jpg

式中:为原始图像的灰度值; 为滤波后图像的灰度值,M和N分别为横向与纵向像素个数[4]。

v2-1c0ebb5983a1dd8b3566edac81dc4cdb_b.jpg

v2-1c0ebb5983a1dd8b3566edac81dc4cdb_b.jpg

v2-c66d731117b5e53771e1e6d6423a4feb_b.jpg

v2-c66d731117b5e53771e1e6d6423a4feb_b.jpg


表2

7X7中值滤波的RPSN值

算法 RPSN
7X7中值滤波 10.9445


结合比较图1和图2,表1和表2可得:实验2中添加了方差为0.25的椒盐噪声模糊的图像的大部分细节,但中值滤波都取得了不错的去噪效果,基本上去除了噪声的影响。对比采用3X3和7X7窗口的中值滤波效果,同时结合对应的RPSN值,可以看出采用7X7窗口的中值滤波,边缘细节有不少损失,图像比采用3X3窗口的方法更加模糊。可得结论为:中值滤波对于低密度的噪声信号有很好的去噪效果,但对于高密度的噪声去噪效果不是非常好。

3. 一种有效的快速中值滤波算法

虽然这种传统的中值滤波法对图像的边缘只有较少的损失,但由于扫描进入计算机后的图像本身会有边缘模糊性,因为达不到真正改善图像质量的目的。并且对所需的有用信息,经过滤波后没有突出的表现出来。

对于医学图像来说,设法补偿降质原因比较困难,所以我们在数据预处理过程。主要用图像增强技术即滤波技术对CT图像进行处理,突出感兴趣的特征,衰减次要信息。但是想要用滤波方法把噪声全部滤除而不损失原信号的强度几乎是不可能的,所以滤波器设计所追求的目标有两条:最大限度地保持信号不受损失,不能损坏图像的轮廓及边缘等重要信息;同时尽可能多地滤除噪声,使图像清晰,视觉效果好。

为了为医学体绘制研究工作提供更为清晰、准确、无误的CT图像。本文提出了改进的边缘增强的中值滤波方法对原始的医学CT图像进行处理。文中采用3x3的滤波窗1:3,处理的CT图像是灰度级为256的灰度图像,3x3的灰度矩阵w为:

其中wi为无符号数,wi∈[0,256],i∈[0,8]的整数。

v2-15b6bb91666c2db8d66ebaab466a68a9_b.jpg

v2-15b6bb91666c2db8d66ebaab466a68a9_b.jpg

在传统的中值滤波方法中,就是直接对w0~w8。进行排序,然后取中间的值作为该像素的灰度值.这样边缘信息就会被削弱。为了增强边缘信息。针对矩阵构造一个中间矩阵M:其中 mi为无符号数,并设定一个边缘附近的灰度阈值为f,则令mi=f,i∈[0,2]的整数;mi=wi,i∈[3,8]的整数。然后按传统的中值滤波法对矩阵M进行排序,选取中间值。

v2-0080e68015121885e031555aef139d90_b.jpg

v2-0080e68015121885e031555aef139d90_b.jpg

由于中值滤波选取中值的时候要先进行排序,所以它是一种很耗时间的滤波处理。为了加速其滤波处理的速度,利用滤波窗口内数据的相关性,当窗口一次向右移动一列的时候,让窗口内的数据变化为新一列的数据更换掉了窗口内某一列的数据,具体原理是这样的,假设窗口大小为mxn,那么窗口内将会有m个数据发生了变化,其余m×(n-1)个数据保持不变,他们不需要重新排序,加速了滤波处理过程[5]。

对上述中间窗口矩阵M,当窗口首次向右移动时,数据mm3,m6被剔除,被滤波图像中的一列数据fi,j、fi+1,j加入,数据m0、m1、m2、m3、m4、m5、m6、m7、m8及其排列顺序保持不变,得到新的滤波窗口M’:当窗口在向右移动一次时。用新一列图像像素的灰度值fi,j+1、fi+1,j+1来剔除M’中的中间一列m4、m7,从而得到一新的滤波窗口M’’;窗口再一次向右移动时,接着用随后的被滤波图像中的一列灰度值fi,j+2、fi+1,j+2来剔除滤波窗口M’’中的右边一列相应的m5、m8。这样循环操作。在移动剔除的过程中。将新值与排序好的原窗口内相应位置的值进行比较。完成新一次的排序,从而选出中值。这样明显减少了排序比较次数,加快滤波处理过程。

因为在轮廓的边缘处,m3~m8中,必定既有大于f的值,也有小于f的值,排序结果顺序会满足背景像素、f、前景像素这样的次序,所以这样就会使得排序结果的中间值一定为m0~m2中的一个,即为r,边缘处的像素就设定为了返回像素的灰度值,从而突出了边缘信息;在其它地方,m3~m8中除孤立噪声像素外,要么同大于f要么同小于f,所以m0-m2对排序结果影响不大,能去除孤立噪声。

通过上述有效改进的中值滤波,既能有效地消除孤立噪声,又能保证边缘不被模糊.而且速度也加快了。本文采用的医学CT图像数据中的噪声干扰大多为孤立噪声,运用改进后的中值滤波进行数据场的预处理得到的图像效果可以满足试验要求。

算法1给出了这种改进的快速有效的中值滤波的算法流程。

算法1快速有效的中值滤波过程,以3x3的滤波窗口为例

Stepl:建立一个3 X 3的滤波窗口W;

Step2:根据绘制要求,人工干预,估计给出一个边缘附近的灰度阈值f;

Step3:由r构造中间滤波窗M;

Step4:将中值滤波窗口M沿着图像序列均匀移动.按上述的算法描述过程循环对窗El内的数据进行剔除变换和快速排序;

Step5:对每次替换和排序好的窗口数据,求出其中问值。来替代中心位置的原始图像数据。

由表3可知,改进的快速中值滤波算法大大提高了滤波效果和速度。

表3 两种中值滤波算法比较

算法窗口尺寸处理时间(s)
传统中值滤波3X31.8
本文快速有效的中值滤波3X30.6

4.结论

在图像的处理过程中,消除图像的随机噪声干扰是一个非常重要的问题。采用中值滤波消除图像的随机噪声效果很好,同时,滤波后的图像又能符合人眼的视觉感觉。另外,应用MATLAB语言对数字图像进行中值滤波等一系列处理时具有编程简单、操作方便、处理速度快等特点,使图像处理工作者可以从烦琐的编程工作中解脱出来。虽然传统的中值滤波有一定的局限性,对于较高密度的噪声信号,去噪效果不是非常好,但是可以通过改进其算法,使得效果符合我们的要求,这里体现出了中值滤波的灵活性,可以较好地按照用户的要求来完成效果。

参考文献:

[1] 叶鸿瑾,张雪英,何小刚. 基于小波变换和中值滤波的医学图像去噪[J].太原理工大学学报, 2005,36(5);

[2] 江景涛,姜学东,李福荣. 利用中值滤波去除图像噪声的研究及MATLAB实现[J]. 莱阳农学院学报(自然科学版),2012,23(1);

[3] 张欣,刘英,高秀艳.自适应投票快速中值滤波算法研究[J].计算机工程与用 ,2010,(6);

[4] 牛翠霞,范辉,康旭辉. 基于医学图像的有效中值滤波算法研究[J]. 微计算机信息, 2018,24(3);

[5]张燕.一种改进的快速中值滤波算法[J].安徽建筑工业学院学报(自然科学版),2018,16(4)。
















附录

clc,clear,close all

A=imread('E:\kyxl\fei1.jpg'); %读取肺部CT图像

B=rgb2gray(A);

C=imnoise(B,'salt & pepper',0.25); %添加方差为0.25的椒盐噪声

D=medfilt2(C,[7,7]); %采用7X7中值滤波

subplot(1,3,1),imshow(B) %显示原图像

subplot(1,3,2),imshow(C) %显示添加噪声后的图像

subplot(1,3,3),imshow(D) %显示滤波后图像

  • 0
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值