自适应中值滤波器matlab实现

自适应中值滤波器matlab实现

ID:12318120

大小:227.00 KB

页数:4页

时间:2018-07-16

自适应中值滤波器matlab实现_第1页
自适应中值滤波器matlab实现_第2页
自适应中值滤波器matlab实现_第3页
自适应中值滤波器matlab实现_第4页
资源描述:

《自适应中值滤波器matlab实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、将下面代码直接贴入matlab中,并将读入图像修改成自己机子上的,就可以运行了。可以按照“%%”顺序分步来运行%%function自适应中值滤波器%%%%%%%%%%%%%%%%实现两个功能:%1.对高密度的椒盐噪声有好的滤除效果;%2.滤波时减少对图像的模糊;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%原理:%1.椒盐噪声概率越大,滤波器窗口需越大。故若滤波器窗口随噪声概率自适应变化,才能有好的滤除效果%2.为减少对图像的模糊,需在得出原图像值并非椒盐噪声点时,保留原图像值不变;%3

2、.椒盐噪声点的特点:该点的值为该点领域上的最大或最小;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%步骤(得到图像中某点(x,y)(即窗口中心点)的值的步骤):%1.设定一个起始窗口,以及窗口的最大尺寸;%2.(此步用于确定窗口大小)对窗口内像素排序,判断中值是否是噪声点,若不是,继续第3步,若是,转到第5步;%3.判断中心点是否是噪声点,若不是,则输出该点的值(即图像中该点的原值不变);若是,则输出中值;%4.窗口尺寸增大,若新窗口尺寸小于设定好的最大值,重复第2步,若大于,则滤波器输

3、出前一个窗口的中值;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%参数说明:%被噪声污染的图像(即退化图像也即待处理图像):Inoise%滤波器输出图像:Imf%起始窗口尺寸:nmin*nmin(只取奇数),窗口尺寸最大值:nmax*nmax%图像大小:Im*In%窗口内图像的最大值Smax,中值Smed,最小值Smin%%%%%%%%%%%%%%%%%%%%%%clearclf%%读入图像II=imread('e:/photo/cat.jpg');%转化为灰度图IgIg=rgb2gra

4、y(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);xlabel('b.被噪声污染的图像');%%定义参数%获

5、取图像尺寸:Im,In[Im,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),In

6、oise,zeros(Im,(nmax-1)/2);zeros((nmax-1)/2,In+(nmax-1))];%%自适应滤波过程%遍历图像Inoise中的每一点forx=1:Imfory=1:Inforn=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))S

7、xy=I_ex(x+(nmax-1)/2-(n-1)/2:x+(nmax-1)/2+(n-1)/2,y+(nmax-1)/2-(n-1)/2:y+(nmax-1)/2+(n-1)/2);Smax=max(max(Sxy));%求出窗口内像素的最大值Smin=min(min(Sxy));%求出窗口内像素的最小值Smed=median(median(Sxy));%求出窗口内像素的中值%判断中值是否是噪声点ifSmed>Smin&&Smed

8、句,增大窗口尺寸,再次判断%不是,则判断该点的原值是不是噪声点ifImf(x,y)<=Smin

9、

10、Imf(x,y)>=Smax%若该点的原值既大于最小值又小于最大值,则不是%不是,则输出原值,即不作处理%是,则输出中值Imf(x,y)=Smed;endbreak%有输出则不再进行循环判断endend%当n=max时,输出中值Imf(x,y)=Smed;endendsubplot(2,2,3),imshow(Imf);xlabel('d.最大

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。