数字图像处理·自适应滤波器降低噪声 |
您所在的位置:网站首页 › 滤波器去除噪声选择什么滤波器 › 数字图像处理·自适应滤波器降低噪声 |
一.自适应局部降噪滤波器
1.原理 自适应局部降噪滤波器函数代码 function [f] = adpfilter(g, nhood ,noiseVar) g = im2double(g); %局部均值 u=(1/mn)*∑g(x,y) 模板滤波,重叠区相*然后相加 localMean = filter2(ones(nhood), g) / prod(nhood); %局部方差 σ^2=(1/mn)*∑g^2(x,y)-u^2 localVar = filter2(ones(nhood), g.^2) / prod(nhood) - localMean.^2; f = g - localMean; % g(x,y)-u g = localVar - noiseVar; %局部方差 - 噪声方差 g = max(g, 0); f = localMean + ((f ./ max(localVar, noiseVar)) .* g); % 公式 end %例5.4自适应局部降低噪声滤波 g=imread('Fig0508.tif'); H1=imnoise(g,'gaussian',0,10^3/255^2); subplot(221),imshow(H1, []), title('(a)被均值为0方差为1000的加性高斯噪声污染的图像'); H2=fspecial('average',[7,7]);%7*7均值滤波 H2=imfilter(H1,H2); subplot(222),imshow(H2, []), title('(b)算数均值滤波的结果'); H3=exp(imfilter(log(double(H1)),fspecial('average',[7,7])));%7*7算数均值滤波 subplot(223),imshow(H3, []), title('(c)几何均值滤波结果'); H4 = adpfilter(H1,[7,7],1000);%使用自定义函数 subplot(224),imshow(H4, []), title('(d)自适应滤波器');二.自适应中值滤波器 1.原理 中值滤波器,只要脉冲噪声的空间密度不大,性能就会很好(根据经验,Pa和Pb小于 0.2)。自适应中值滤波可以处理具有更大概率的脉冲噪声。自适应中值滤波器的另一个优点是平滑非脉冲噪声时试图保留细节,这是传统中值滤波器所做不到的。自适应中值滤波器也工作于矩形窗口区域Sxy内。不同的是自适应中值滤波器在进行滤波处理时会根据某些条件而改变(或增大)Sxy的尺寸。 在模板窗口Sxy定义的滤波器区域内定义如下变量: Zmin=min(Sxy),模板窗口Sxy中的最小灰度值Zmax=max(Sxy),模板窗口Sxy中的最大灰度值Zmed=med(Sxy),模板窗口Sxy中的灰度值的中值Zxy,坐标(x,y)处的灰度值Smax,Sxy允许的最大尺寸进程A: A1=Zmed-Zmin A2=Zmed-Zmax 如果A1>0且A2zmed)&(~alreadyProcessed); zB=(I>zmin)&(zmax>I); %满足步骤A,B的输出原值 对应的像素位置 outputZxy=processUsingLevelB&zB; %满足A,不满足B的输出中值 对应的像素位置 outputZmed=processUsingLevelB&~zB; II(outputZxy)=I(outputZxy); II(outputZmed)=zmed(outputZmed); %处理过的像素 alreadyProcessed=alreadyProcessed|processUsingLevelB; if all(alreadyProcessed(:)) break; end end %超过窗口大小没被处理的像素位置 输出原值 II(~alreadyProcessed)=I(~alreadyProcessed); %例5.5自适应中值滤波的说明 g=imread('Fig0508.tif'); subplot(221),imshow(g, []), title('原图'); H1 = imnoise(g,'salt & pepper', .25); %添加椒盐噪声(脉冲噪声) subplot(222),imshow(H1, []), title('被密度为0.25的椒盐噪声污染的图像'); H3=adpmedian(H1,7);%自适应中值过滤器 subplot(224),imshow(H3, []), title('使用S=7的自适应中值滤波得到的结果'); H2=medfilt2(H1,[7 7], 'symmetric');%中值滤波 subplot(223),imshow(H2, []), title('使用大小为7*7的中值滤波器得到的结果'); 运行结果 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |