自适应中值滤波器matlab实现_第1页
自适应中值滤波器matlab实现_第2页
自适应中值滤波器matlab实现_第3页
自适应中值滤波器matlab实现_第4页
自适应中值滤波器matlab实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、将下面代码直接贴入matlab中,并将读入图像修改成自己机子上的,就可以运行了。可以按照“%”顺序分步来运行% function 自适应中值滤波器%实现两个功能:%1.对高密度的椒盐噪声有好的滤除效果;%2.滤波时减少对图像的模糊;%原理:%1.椒盐噪声概率越大,滤波器窗口需越大。故若滤波器窗口随噪声概率自适应变化,才能有好的滤除效果%2.为减少对图像的模糊,需在得出原图像值并非椒盐噪声点时,保留原图像值不变;%3.椒盐噪声点的特点:该点的值为该点领域上的最大或最小;%步骤(得到图像中某点(x,y)(即窗口中心点)的值的步骤):%1.设定一个起始窗口,以及窗口的最大尺寸;%2.(此步用于确定窗

2、口大小)对窗口内像素排序,判断中值是否是噪声点,若不是,继续第3步,若是,转到第5步;%3.判断中心点是否是噪声点,若不是,则输出该点的值(即图像中该点的原值不变);若是,则输出中值;%4.窗口尺寸增大,若新窗口尺寸小于设定好的最大值,重复第2步,若大于,则滤波器输出前一个窗口的中值;%参数说明:%被噪声污染的图像(即退化图像也即待处理图像):Inoise%滤波器输出图像:Imf%起始窗口尺寸:nmin*nmin(只取奇数),窗口尺寸最大值:nmax*nmax%图像大小:Im*In%窗口内图像的最大值Smax,中值Smed,最小值Smin %clearclf% 读入图像II=imread(&#

3、39;e:/photo/cat.jpg');%转化为灰度图IgIg=rgb2gray(I);%被密度为0.2的椒盐噪声污染的图像InoiseInoise=imnoise(Ig,'salt & pepper',0.2);%或者是被方差为0.2的高斯噪声污染的图像Inoise%Inoise=imnoise(Ig,'gaussian',0.2);%显示原图的灰度图Ig和噪声图像Inoisesubplot(2,2,1),imshow(Ig);xlabel('a.原始灰度图像');subplot(2,2,2),imshow(Inoise);

4、xlabel('b.被噪声污染的图像');% 定义参数%获取图像尺寸:Im,InIm,In=size(Inoise);%起始窗口尺寸:nmin*nmin(窗口尺寸始终取奇数)nmin=3;%最大窗口尺寸:nmax*nmaxnmax=9;%定义复原后的图像ImfImf=Inoise;%为了处理到图像的边界点,需将图像扩充%因为窗口尺寸是弹性的,所以将Inoise固定扩充到最大:I_ex(Im+(nmax-1)*(In+(nmax-1)I_ex=zeros(nmax-1)/2,In+(nmax-1);zeros(Im,(nmax-1)/2),Inoise,zeros(Im,(nma

5、x-1)/2);zeros(nmax-1)/2,In+(nmax-1);% 自适应滤波过程%遍历图像Inoise中的每一点for x=1:Im for y=1:In for n=nmin:2:nmax %图像Inoise中的某点(x,y)的领域Sxy,对应在I_ex中为(x+(nmax-1)/2-(n-1)/2:x+(nmax-1)/2-(n-1)/2+(n-1),y+(nmax-1)/2-(n-1)/2:y+(nmax-1)/2-(n-1)/2+(n-1) Sxy=I_ex(x+(nmax-1)/2-(n-1)/2:x+(nmax-1)/2+(n-1)/2,y+(nmax-1)/2-(n-1

6、)/2:y+(nmax-1)/2+(n-1)/2); Smax=max(max(Sxy);%求出窗口内像素的最大值 Smin=min(min(Sxy);%求出窗口内像素的最小值 Smed=median(median(Sxy);%求出窗口内像素的中值 %判断中值是否是噪声点 if Smed>Smin && Smed<Smax %若中值既大于最小值又小于最大值,则不是 %是,则退出该if语句,增大窗口尺寸,再次判断 %不是,则判断该点的原值是不是噪声点 if Imf(x,y)<=Smin | Imf(x,y)>=Smax %若该点的原值既大于最小值又小于最大值,则不是 %不是,则输出原值,即不作处理 %是,则输出中值 Imf(x,y)=Smed; end break %有输出则不再进行循环判断 end end %当n=max时,输出中值 Imf(x,y)=Smed; endendsubplot(2,2,3),imshow(Imf);xlabel('d.最大尺寸为9的自适应中值滤波器的滤波效果');% 与普通中值滤波器的对比Imf1=medfilt2(Inoise

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论