基于MATLAB的数字图像空域平滑法
摘要:本文通过在MATLAB环境下,对比中值滤波与均值滤波处理带有椒盐噪声的图像,中值滤波不同模板处理加入椒盐噪声的图像以及中值滤波处理加入不同噪声图像的效果图,分析中值滤波的优缺点。
1 引言
图像平滑的目的是为了去除或衰减图像中的噪声和假轮廓,它可以分为空域法和频域法.而空域法就是直接对图像的像素灰度值进行处理,以达到滤除或衰减图像中噪声的目的.空域法主要包括基于平均的方法和中值滤波法.本文重点以中值滤波法为主,详细介绍MATLAB环境下,中值滤波相对均值滤波的优缺点,不同模板中值滤波对加入椒盐噪声图像的处理效果以及中值滤波法对加入不同噪声图像的处理效果。
2 中值滤波的概念
中值滤波是一种典型的低通滤波器,属于非线性滤波技术,它的目的是保护图像边缘的同时去除噪声。所谓中值滤波,是指把以某点(x,y)为中心的小窗口内的所有象素的灰度按从大到小的顺序排列,若窗口中的象素为奇数个,则将中间值作为(x,y)处的灰度值。若窗口中的象素为偶数个,则取两个中间值的平均值作为(x,y)处的灰度值。中值滤波对去除椒盐噪声很有效。中值滤波器的缺点是对所有象素点采用一致的处理,在滤除噪声的同时有可能改变真正象素点的值,引入误差,损坏图像的边缘和细节。
3 中值滤波器与均值滤波器的比较
本文采用的图像是一幅多值图像,首先将其灰度化,并加入椒盐噪声,在MATALB环境下,采用3*3窗口的中值滤波器与均值滤波器处理此图像,编写程序如下:
A=imread('1.jpg');
h=ones(3,3)/9;
A_zh=rgb2gray(A);
A_noi=imnoise(A_zh,'salt & pepper',0.02);
A_med=medfilt2(A_noi);
A_low=imfilter(A_noi,h);
subplot(2,2,1);imshow(A_zh);title('灰度图像');
subplot(2,2,2);imshow(A_noi);title('加入椒盐噪声的图像');
subplot(2,2,3);imshow(A_med);title('中值滤波图像');
subplot(2,2,4);imshow(A_low);title('均值滤波图像');
程序运行结果如图2所示。图像文件1.jpg中存储着一幅彩色图像,把该文件读入后使用函数imadjust进行调整。调整后的范围是默认的范围【0 0 0;1 1 1】,
图1
程序运行结果如图1所示,从图中可看出中值滤波处理椒盐噪声使图像更加清晰,保留图像的边缘信息。
4 中值滤波采用不同模板
使用中值滤波器处理加入椒盐噪声的图像,选取3*3,5*5,7*7几种不同模板,编写程序如下:
A=imread('1.jpg');
A_zh=rgb2gray(A);
A_noi=imnoise(A_zh,'salt & pepper',0.02);
A_med1=medfilt2(A_noi,[3,3]);
A_med2=medfilt2(A_noi,[5,5]);
A_med3=medfilt2(A_noi,[7,7]);
subplot(2,2,1);imshow(A_noi);title('加入椒盐噪声的图像');
subplot(2,2,2);imshow(A_med1);title('3*3领域窗');
subplot(2,2,3);imshow(A_med2);title('5*5领域窗');
subplot(2,2,4);imshow(A_med3);title('7*7领域窗');
程序运行结果如图2所示,3*3领域窗口中值滤波在滤除噪声时比5*5和7*7中值滤波效果好一些。3*3中值滤波图像清晰,明暗对比度明显。
5中值滤波器处理不同噪声图像
数字图像的噪声按概率密度函数(PDF)分为椒盐噪声、高斯噪声泊松噪声以及乘性噪声等,本文对同一副图像加入不同噪声,采用相同的中值滤波器进行处理。
对图像加入不同噪声,编写程序及运行结果如图3所示:
A=imread('1.jpg');
A_zh=rgb2gray(A);
A1=imnoise(A,'salt & pepper',0.02);
A2=imnoise(A,'gaussian',0,0.01);
A3=imnoise(A,'poisson');
A4=imnoise(A,'speckle',0.04);
subplot(2,2,1);imshow(A1);title('加入椒盐噪声');
subplot(2,2,2);imshow(A2);title('加入高斯噪声');
subplot(2,2,3);imshow(A3);title('加入泊松噪声');
subplot(2,2,4);imshow(A4);title('加入乘性噪声');
图3
使用相同模板的中值滤波器对加入不同噪声的图像进行处理,编写程序如下:A=imread('1.jpg');
A_zh=rgb2gray(A);
A_med1=imnoise(A_zh,'salt & pepper',0.02);
A_med2=imnoise(A_zh,'gaussian',0,0.01);
A_med3=imnoise(A_zh,'poisson');
A_med4=imnoise(A_zh,'speckle',0.04);
A5=medfilt2(A_med1);
A6=medfilt2(A_med2);
A7=medfilt2(A_med3);
A8=medfilt2(A_med4);
subplot(2,2,1);imshow(A5);title(''中值滤波椒盐噪声图像');
subplot(2,2,2);imshow(A6);title('中值滤波高斯噪声图像');
subplot(2,2,3);imshow(A7);title(''中值滤波泊松噪声图像');
subplot(2,2,4);imshow(A8);title(''中值滤波乘性噪声图像');
图4
程序运行结果如图4所示,中值滤波处理椒盐噪声图像和泊松噪声图像,比处理高斯噪声和乘性噪声图像效果好,图像清晰度好,相对来说,处理椒盐噪声图像效果最为明显。,图像质量高。
6结语
通过本文的分析和实例可以看出,中值滤波作为数字图像处理中重要的一部分,应用MATLAB语言进行编程,具有编程简单、操作方便等特点,特别是对于加入椒盐噪声的图像,中值滤波是一种有效地处理方式,并且模板维数越小效果
越明显。但是中值滤波器对短拖尾分布噪声(如高斯噪声),滤波性能较差。
参考文献:
【1】孙兵旗,孙明. 实用数字图像处理与分析. 中国农业大学出版社,2008.
【2】廖绍纲. 数字图像处理:活用Matlab.西南交通大学出版社.
【3】于万波. 基于MATLAB的图像处理.【北京】清华大学出版社,2008.3 【4】汤国安,张有顺等. 遥感数字图像处理. 科学出版社,2006.
【5】钱海军,雷剑刚,钱峰. 基于MATLAB图像增强中直方图均衡化的应用. 珠海城市职业技术学院
【6】袁西霞,岳建华等. MATLAB在中值滤波改进算法中的应用,广东工业大学学报,2007.3
【7】吕品品. 浅谈MATLAB在数字图像处理中的应用. 数字技术与应用.
【8】马琳,于宁. 数字图像增强算法分析. 交通科技与经济,2011.
【9】李小红,蒋建国,吴从中,詹曙. 图像去椒盐噪声滤波器的研究. 工程图学学报,2009.
【10】顾晓东,郭仕德,余道衡. 一种基于PCNN的图像去噪新方法. 电子与信息学报,2002.
【11】刘莉, 谈文蓉, 王燕. 一种基于PCNN 和自适应中值滤波的去噪方法.
西南民族大学学报·自然科学版,2010.
【12】杨宁,张培林,任国全. 一种自适应加权中值滤波方法的研究. 计算机应用与软件,2010.