数字图像处理第四章
数字图像处理—图像复原
(三)仅有噪声的复原——空间滤波
如果出现的退化仅仅是噪声,那么退化就遵循模型:
在这种情况下,选择的降低噪声的方法是空间滤波。
3.1 空间噪声滤波器
首先要得到一幅被噪声污染的图像。
编写代码:
f = imread('D:\数字图像处理\第四章学习\strawberry.jpg');
%f = imread('D:\数字图像处理\第四章学习\cat5.jpg');
%f = imread('D:\数字图像处理\第四章学习\building.jpg');
%f = imread('D:\数字图像处理\第四章学习\jimei.jpg');
[M,N] = size(f);
a1 = imnoise2( 'salt & pepper', M, N, 0.1, 0); %概率为0.1的胡椒噪声
a2 = imnoise2( 'salt & pepper', M, N, 0.5, 0); %概率为0.5的胡椒噪声
a3 = imnoise2( 'salt & pepper', M, N, 1, 0); %概率为1的胡椒噪声
c1 = find(a1==0);
gp1 = f;
gp1(c1) = 0;
c2 = find(a2==0);
gp2 = f;
gp2(c2) = 0;
c3 = find(a3==0);
gp3 = f;
gp3(c3) = 0;
subplot(2, 2, 1), imshow(f);title('(a)原图像');
subplot(2, 2, 2), imshow(gp1);title('(b)概率为0.1的胡椒噪声污染后');
subplot(2, 2, 3), imshow(gp2);title('(c)概率为0.5的胡椒噪声污染后');
subplot(2, 2, 4), imshow(gp3); title('(d)概率为1的胡椒噪声污染后');
代码运行效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/271a1f3cd59d940c3cc82b5acab3d8a5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a08e422fa42ea3cac50f37dfa94b80e0.png)
分析:一张图片被胡椒噪声污染后,图片会出现黑色胡椒状小点。对于同一张图片,胡椒噪声概率越大,图片被污染污染越严重,最终显示效果也更模糊,当概率为1的时候,图片为纯黑色;对于不同类型的图片,图片颜色越亮,胡椒噪声污染效果越明显(白色最明显),而图片的黑色部分被污染后变化最不明显(例如第四幅图的背景),不同类型的图片在概率为1的时候显示相同(纯黑色),所以胡椒噪声污染图像算法适用于浅色图像,对黑色图像效果不大。
同样的,用盐粒噪声污染图像。
编写代码:
f = imread('D:\数字图像处理\第四章学习\strawberry.jpg');
%f = imread('D:\数字图像处理\第四章学习\blue.jpg');
%f = imread('D:\数字图像处理\第四章学习\star.jpg');
%f = imread('D:\数字图像处理\第四章学习\jimei.jpg');
[M,N] = size(f);
R = imnoise2( 'salt & pepper', M, N, 0, 0.1); %盐粒噪声
c = find(R==1);
gs = f;
gs(c) = 255;
subplot(1, 2, 1), imshow(f);title('(a)原图像');
subplot(1, 2, 2), imshow(gs);title('(b)盐粒噪声污染后');
代码运行效果如下:
分析: 一张图片被盐粒噪声污染后,图像会出现白色的盐粒状小点。当图片背景为黑色时(第四张夜间建筑物图像),污染效果最明显,而图片背景为白色(第一张草莓图),白色背景污染效果几乎看不到,四张图背景颜色逐渐加深,图像被污染的效果也越来越明显。所以与椒盐噪声相反,盐粒噪声污染图像算法适用于深色图像。
第三步过滤胡椒噪声,使用Q为正值的反调和滤波器。
编写代码:
w = imread('D:\数字图像处理\第四章学习\strawberry.jpg');
%w = imread('D:\数字图像处理\第四章学习\jimei.jpg');
f = im2double(w);
[M,N] = size(f);
a1 = imnoise2( 'salt & pepper', M, N, 0.3, 0);
c1 = find(a1==0);
gp = f;
gp(c1) = 0;
fp=spfilt(gp,'chmean',3,3,1.5); %过滤胡椒噪声
subplot(3, 3, 1), imshow(w);title('(a)原图像');
subplot(3, 3, 2), imshow(gp);title('(b)概率为0.3的胡椒噪声污染后');
subplot(3, 3, 3), imshow(fp);title('(c)过滤胡椒噪声后');
代码运行效果如下:
分析:虽然被胡椒噪声污染后的图像由于图像本身颜色不同而最终显示的污染效果不同,但是用Q为正值的反调和滤波器过滤胡椒噪声后,图像都能达到原始状态,所以该算法适用于一般类型图像的过滤胡椒噪声。
接下来过滤盐粒噪声,使用 Q 为负值的反调和滤波器过