1、实现多幅图像平均去高斯白噪声
由于并没有带噪声的图片,所以在该实验环节,我们先给完好的图片加上高斯白噪声,在进行平均去噪的处理。
多幅图像平均去噪的原理如下:
由于噪声为高斯白噪声,所以噪声的均值为0;分布服从正态分布。首先我们构建掩膜mask。
对于获取的多张有高斯噪声的图像,对每个位置的对应像素求平均值,然后用原图的像素值减去平均像素值,即可得到模板。表达式如下:
f 0 ( x , y ) = ( f 1 ( x , y ) + . . . + f n ( x , y ) ) / n f0(x,y)=(f1(x,y)+...+fn(x,y))/nf0(x,y)=(f1(x,y)+...+fn(x,y))/n
g m a s k ( x , y ) = f ( x , y ) − f 0 ( x , y ) gmask(x,y)=f(x,y)-f0(x,y)gmask(x,y)=f(x,y)−f0(x,y)
g ( x , y ) = f ( x , y ) + k ∗ g m a s k ( x , y ) g(x,y)=f(x,y)+k*gmask(x,y)g(x,y)=f(x,y)+k∗gmask(x,y)
在实验过程中,我们为图像加上高斯随机噪声,制作三张图片。求得掩膜之后,用第一张有噪声的图片加上掩膜处理,观察处理前后的效果。
代码如下:
a=imread('aft.jpg');
aa=im2double(a);
b=rgb2gray(aa);
[m,n]=size(b);
b1 = imnoise(b, 'speckle', 0.1);
b2 = imnoise(b, 'speckle', 0.1);
b3 = imnoise(b, 'speckle', 0.1);
bmask=(b-(b1+b2+b3)/3)*255;
c=255*b+bmask;
subplot(3,1,1)
imshow(uint8(b*255))
subplot(3,1,2)
imshow(uint8(b1*255))
subplot(3,1,3)
imshow(uint8(c))
实验效果如下:

三张图片依次为:
1.原图,2.第一张加高斯噪声的图片 3.噪声图片减去掩膜之后的处理效果。可见处理效果一般般~~~~~~~~
2.实现均值滤波去除高斯白噪声不能用 Imfilter(X,mask)
均值滤波也很简单,画个nn的框框遍历像素点,求此nn个像素值的平均值,作为新的像素值。一般情况下,选取卷积核的大小一般为33 or 55;我们给出两个常用的卷积核
此次实验过程采用的为上图的平均滤波器。代码如下:
a=imread('aft1.jpg');
aa=im2double(a);
b=rgb2gray(aa);
[m,n]=size(b);
c=ones(m-2,n-2);
for i=1:1:m-2;
for j=1:1:n-2;
a=255*(b(i,j)+b(i,j+1)+b(i,j+2)+b(i+1,j)+b(i+1,j+1)+b(i+1,j+2)+b(i+2,j)+b(i+2,j+1)+b(i+2,j+2))/9;
c(i,j)=a;
end
end
subplot(2,1,1)
imshow(aa)
subplot(2,1,2)
imshow(uint8(c))
注意 注意其中的数据转换。如果单纯的让几个像素值相加,一旦超出255,其返回值就会固定位255. 所以在实验中,利用
“aa=im2double(a)”
进行了数据格式的转换;处理效果如下图。
其中上面两图为处理之前的,下面为处理之后的。效果也一般般~~~~~~~~
3.实现中值滤波去除脉冲噪声. 不能用 median(a)
中值滤波原理类似于平均滤波,取卷积核中n*n个值中的的中间值。
代码如下:
a=imread('aft2.jpg');
aa=im2double(a);
b=rgb2gray(aa);
[m,n]=size(b);
c=ones(m-2,n-2);
for i=1:1:m-2;
for j=1:1:n-2;
aaa=255*[b(i,j) b(i,j+1) b(i,j+2) b(i+1,j) b(i+1,j+1) b(i+1,j+2) b(i+2,j) b(i+2,j+1) b(i+2,j+2)];
c1=median(aaa);
c(i,j)=c1;
end
end
subplot(2,1,1)
imshow(aa)
subplot(2,1,2)
imshow(uint8(c))
这次效果还不错:
4.分别用 Laplacian 算子和 sobel 算子实现图像的锐化增强,并对比实验结果。
直接调用内置函数,看效果:
拉普拉斯算子处理:
a=imread('aft.jpg');
b=rgb2gray(a);
c=[0 -1 0;-1 5 -1;0 -1 0];
d=imfilter(b,c);
subplot(2,1,1)
imshow(b)
subplot(2,1,2)
imshow(d)

sobel 算子
a=imread('aft.jpg');
b=rgb2gray(a);
c=[-1 0 1;-2 0 2;-1 0 1];
d=imfilter(b,c);
subplot(2,1,1)
imshow(b)
subplot(2,1,2)
imshow(b+d)

嗯嗯嗯嗯。。。
总结:
本文实现了平均去噪、均值去噪、中值滤波去脉冲噪声、利用算子实现增强图像的功能。