matlab改进中值滤波,求助中值滤波和自适应中值滤波算法错误修改
clear all;
close all;
I=imread('2.jpg');
figure;
imshow(I,[]);
title('原始圖像');
I=imnoise(I,'salt & pepper',0.15);
figure;
imshow(I,[]);
title('加椒鹽噪聲');
%7×7中值濾波
Q=medfilt2(I,[3,3]);
figure;
imshow(Q,[]);
title('7×7中值濾波');
%自適應(yīng)中值濾波
[M,N]=size(I);
for i=3:7
if i<=7
for x=i/2+0.5:M-i/2+0.5
for y=i/2+0.5:M-i/2+0.5
z_max=max(I(M*(y-2)+x-(i/2-0.5):M*(y-2)+x-(i/2-0.5)+i*M-M));
z_min=min(I(M*(y-2)+x-(i/2-0.5):M*(y-2)+x-(i/2-0.5)+i*M-M));
z_med=median(I(M*(y-2)+x-(i/2-0.5):M*(y-2)+x-(i/2-0.5)+i*M-M));
A1=z_med-z_min;
A2=z_med-z_max;
if (A1>0&A2<0)
B1=I(x,y)-z_min;
B2=I(x,y)-z_max;
if (B1>0&B2<0)
I(x,y)=I(x,y);
else
I(x,y)=z_med;
end
else
i=i+2;
end
end
end
else
I(x,y)=I(x,y);
end
end
figure;
imshow(I,[]);
title('自適應(yīng)中值濾波');
錯(cuò)在z_max=max(I(M*(y-2)+x-(i/2-0.5):M*(y-2)+x-(i/2-0.5)+i*M-M));
z_min=min(I(M*(y-2)+x-(i/2-0.5):M*(y-2)+x-(i/2-0.5)+i*M-M));
z_med=median(I(M*(y-2)+x-(i/2-0.5):M*(y-2)+x-(i/2-0.5)+i*M-M));
這個(gè)地方小弟看不懂不懂什么意思 也改不了 麻煩各位大蝦們幫下忙
我的目的:就是讓中值濾波和自適宜中值濾波對(duì)比下看看哪個(gè)效果好??如果有別的好的方法 我想把自適宜那段程序換掉
程序的原理我也發(fā)下:自適應(yīng)中值濾波算法描述
當(dāng)脈沖噪聲(椒鹽噪聲)在空間上出現(xiàn)的概率不大,中值濾波一般可以取得較好的效果。經(jīng)驗(yàn)表明,當(dāng)出現(xiàn)的正負(fù)脈沖噪聲概率均分別小于0.2時(shí),中值濾波是可用的,而當(dāng)脈沖噪聲在空間上出現(xiàn)的概率較大時(shí),使用中值濾波后可能產(chǎn)生較嚴(yán)重的失真[6]。為了改善濾波效果,引入自適應(yīng)中值濾波算法。即基于中值濾波的特點(diǎn)和性質(zhì),考慮采用變換窗口大小的方法,在中值算法中加入一個(gè)判斷操作,判斷窗口內(nèi)的象素中值及濾波處的像點(diǎn)灰度是否為脈沖噪聲,并分別處理。
設(shè) 是對(duì)像點(diǎn) 進(jìn)行中值濾波的工作窗口, 為像點(diǎn) 的灰度, 為 中的灰度最小值, 為 中的灰度最大值, 為 中的灰度中值,??為 中的灰度均值, 為允許的最大窗口, 為初始默認(rèn)窗口。
自適應(yīng)中值濾波算法的基本步驟如下:
(1)計(jì)算??。
(2)如果 ,那么轉(zhuǎn)(4);否則,轉(zhuǎn)至(3)。
(3)若 ,輸出 ;否則,增大窗口 尺寸。若 ,則重復(fù)(1)和(2);否則輸出 。
(4)計(jì)算 ;
(5)如果 ,那么輸出 ;否則,輸出 。
在上述算法中,如果 ,表明 不是噪聲,轉(zhuǎn)到(4)判斷 是否是脈沖,當(dāng) 與 都不是脈沖噪聲時(shí),優(yōu)先輸出 。當(dāng) 與 都是脈沖噪聲時(shí),輸出 的灰度均值 。相應(yīng)的算法流程圖 我放在附件里了
如果有別的好的方法 我想把自適宜那段程序換掉
2008-5-16 15:10 上傳
點(diǎn)擊文件名下載附件
34 KB, 下載次數(shù): 19075
總結(jié)
以上是生活随笔為你收集整理的matlab改进中值滤波,求助中值滤波和自适应中值滤波算法错误修改的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: bch编码c语言有库么,BCH码的译码方
- 下一篇: 中职计算机PPT触发器使用的教案,PPT