MATLAB--数字图像处理 添加椒盐噪声

添加椒盐噪声
    椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。

方法一:利用imnoise()函数

t=imread('a1.jpg');
subplot(1,2,1),imshow(t),title('原图');
t1=imnoise(t,'salt & pepper',0.1);
subplot(1,2,2),imshow(t1),title('加入噪声密度:0.1的椒盐噪声');
t2=imnoise(t,'salt & pepper',0.2);
figure,subplot(1,2,1),imshow(t2),title('加入噪声密度:0.2的椒盐噪声');
t3=imnoise(t,'salt & pepper',0.3);
subplot(1,2,2),imshow(t3),title('加入噪声密度:0.3的椒盐噪声');

效果图:
MATLAB--数字图像处理 添加椒盐噪声_第1张图片
MATLAB--数字图像处理 添加椒盐噪声_第2张图片
注意:

  • 噪声类型是 ‘salt & pepper’ 一定注意空格的位置 这里比较严格
  • 当噪声类型是’salt & pepper’的时候,第三个参数的意思是噪声密度,比如0.1,那么总像素个数的10%为黑白点,当然是黑点还是白点都是随机的。

方法二:自己构造随机点

image=imread('a1.jpg');
[width,height,z]=size(image);

result2=image;
subplot(1,2,1)
imshow(image);
title('原图');

%k1、k2作为判断临界点
k1=0.2;
k2=0.2;
%rand(m,n)是随机生成m行n列的矩阵,每个矩阵元素都在0-1之间
%这里k都是0.2,所以小于k的元素在矩阵中为1,反之为0
a1=rand(width,height)

效果图:
MATLAB--数字图像处理 添加椒盐噪声_第3张图片

代码说明:
1.c=rand(10,10)
MATLAB--数字图像处理 添加椒盐噪声_第4张图片
2.a=c<0.2
凡是第一步生成的10*10矩阵中元素小于0.2的元素都变成1,其余为0(和c++的0假1真差不多),这一步就是模拟噪声密度,小于0.2相当于有20%的像素点。
MATLAB--数字图像处理 添加椒盐噪声_第5张图片
3.b=rand(10,10)<0.2
MATLAB--数字图像处理 添加椒盐噪声_第6张图片
4.在分别a&b a&~b
a&b:a和b队员元素都为1的时候,则结果为1,反正为0. 显示白点或者黑点
a&~b:a为1 b为0时,结果为1 显示黑点或者白点
这里都是以a为基准,只有a为1的点才可能成为黑白点,而a为1的点就是通过限制临界值获得的,其实就是imnoise中的噪声密度值。

更多

获取更多资料、代码,微信公众号:海轰Pro
回复 海轰 即可

你可能感兴趣的:(MATLAB--数字图像处理)