%噪声添加——h=imnoise(I,type,m,var)
%将均值m,方差var,的type类型噪声,添加到图像I上,默认值均值为0,方差为0.01.
%type为噪声类型——高斯噪声、椒盐噪声
%gaussian高斯噪声:幅度为高斯分布,功率谱均匀分布
%salt&pepper椒盐噪声:黑点如胡椒,白点如盐粒,由图像传感器、传输信道、解码处理、图像切割等产生的黑白相间的亮暗点噪声。

 

%由于matlab的imnoise函数会将输出归一化,在读入图片时先用im2double将图片归一化,以免数据类型不同。

A=imread('BoatsColor.bmp')
 I=im2double(A)
 h1=imnoise(I,'gaussian',0,0.05)%高斯噪声
 h2=imnoise(I,'salt & pepper',0.1);%椒盐噪声
 subplot(1,3,1),imshow(I),xlabel('原始图像')
 subplot(1,3,2),imshow(h1),xlabel('高斯噪声图像')
 subplot(1,3,3),imshow(h2),xlabel('椒盐噪声图像')

运行效果如下:

python 椒盐噪声函数 matlab中加入椒盐噪声_matlab

%空间域滤波——指在图像空间中借助模板对图像领域进行操作,处理图像每一个像素值。
 %          ——B=imfilter(f,w,option1,option2,...)
 %          ——f 为要进行滤波操作的图像。
 %          ——w为滤波操作使用的模板,为一个二维数组,可自己定义。
 %          ——option1……是可选项,包括:
 %          ——1、边界选项(’symmetric’、’replicate’、’circular’)
 %          ——2、尺寸选项(’same’、’full’)
 %          ——3、模式选项(’corr’、’conv’)
 w=[1,1,1,;1,1,1;1,1,1]
 A=imread('BoatsColor.bmp')
 B=imfilter(A,w,'corr','replicate')
 subplot(1,2,1),imshow(A),xlabel('原图')
 subplot(1,2,2),imshow(B),xlabel('滤波后图像')

运行结果如下:

python 椒盐噪声函数 matlab中加入椒盐噪声_2d_02

 

%自定义滤波模板——h=fspecial(type,parameters)
 A=imread('BoatsColor.bmp')
 I=im2double(A)
 h1=imnoise(I,'gaussian',0,0.05)%高斯噪声
 h2=imnoise(I,'salt & pepper',0.1);%椒盐噪声
 w1=fspecial('average',[3 3])
 g1=imfilter(h1,w1,'replicate')
 g2=imfilter(h2,w1,'replicate')
 subplot(2,2,1),imshow(h1),xlabel('高斯噪声图像')
 subplot(2,2,2),imshow(h2),xlabel('椒盐噪声图像')
 subplot(2,2,3),imshow(g1),xlabel('滤波后图像')
 subplot(2,2,4),imshow(g2),xlabel('滤波后图像')

运行结果如下:

python 椒盐噪声函数 matlab中加入椒盐噪声_python 椒盐噪声函数_03

%h=fspecial(type,parameters)
 %parameters是和所选定的滤波器类型type相关的配置参数,如尺寸和标准差等。
 %type为滤波器的类型,如下:
 %‘average’——平均模板
 %‘disk’——圆形领域的平均模板
 %‘gaussian’——高斯模板
 %‘laplacian’——拉普拉斯模板
 %‘log’——高斯-拉普拉斯模板
 %‘prewitt’——Prewitt水平边缘检测算子
 %‘sobel’——Sobel水平边缘检测算子
 A=imread('man.bmp')
 I=im2double(A)
 h2=imnoise(I,'salt & pepper',0.01)%椒盐噪声 
 w1=fspecial('average',[3 3]) % 大小为3*3的矩形平均滤波器
 w2=fspecial('sobel')%sobel算子主要用于边缘检测
 w3=fspecial('gaussian',[3 3],0.5)%sigma=0.5的3*3模板,高斯滤波器是平滑线性滤波器的一种,线性滤波器很适合于去除高斯噪声。
 w4=fspecial('laplacian',0.2) %拉普拉斯算子会突出像素值快速变化的区域,因此常用于边缘检测。 
 w5=fspecial('log',[5 5],0.5)
 g1=imfilter(h2,w1,'replicate') 
 g2=imfilter(h2,w2,'replicate')  
 g3=imfilter(h2,w3,'replicate') 
 g4=imfilter(h2,w4,'replicate') 
 g5=imfilter(h2,w5,'replicate')  
 g6=medfilt2(h2) 
 subplot(3,3,1);imshow(I);title('原图') 
 subplot(3,3,2);imshow(g1);title('均值滤波') 
 subplot(3,3,3);imshow(g2);title('索贝尔滤波') 
 subplot(3,3,4);imshow(g3);title('高斯滤波') 
 subplot(3,3,5);imshow(g4);title('拉普拉斯滤波') 
 subplot(3,3,6);imshow(g5);title('高斯-拉普拉斯滤波') 
 subplot(3,3,7);imshow(g6);title('中值滤波')

运行结果如下:

python 椒盐噪声函数 matlab中加入椒盐噪声_图像处理_04