空间噪声滤波器
若出现的退化仅仅是噪声,则遵循模型:g(x,y) = f(x,y) + η(x,y),此时所选的降低噪声的方法是空间滤波。
这里用到的函数为自定义的spfilt函数,适用于不考虑图像特性在不同位置之间的差异的图像。由于代码过长,具体函数贴在本文的末尾以供参考。
代码示例
% 胡椒噪声
f = imread('ckt-board-orig.tif');
[M,N] = size(f);
R = imnoise2('salt & pepper',M,N,0.1,0);
c = find(R==0);
gp = f;
gp(c) = 0;
% 盐粒噪声
R = imnoise2('salt & pepper',M,N,0,0.1);
c = find(R==1);
gs = f;
gs(c) = 255;
% 过渡胡椒噪声的较好方法是使用Q为正值的反调和滤波器
fp = spfilt(gp,'chmean',3,3,1.5);
% 过渡盐粒噪声的较好方法是使用Q为负值的反调和滤波器
fs = spfilt(gs,'chmean',3,3,-1.5);
% 使用最大和最小滤波器可以得到类似的结果
fpmax = spfilt(gp,'max',3,3);
fsmin = spfilt(gs,'min',3,3);
subplot(3,2,1);imshow(gp);title('仅被胡椒噪声污染');
subplot(3,2,2);imshow(gs);title('仅被盐粒噪声污染');
subplot(3,2,3);imshow(fp);title('Q=1.5反调和滤波器处理胡椒噪声');
subplot(3,2,4);imshow(fs);title('Q=-1.5反调和滤波器处理盐粒噪声');
subplot(3,2,5);imshow(fpmax);title('最大滤波器处理胡椒噪声');
subplot(3,2,6);imshow(fsmin);title('最小滤波器处理盐粒噪声');
运行结果
自适应空间滤波器
设计一个自适应中值滤波器,从而可以通过根据被滤波区域的图像特性自适应的滤波器来改进结果。详细说明的算法如下所示: