matlab添加椒盐噪声

椒盐噪声

椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种以一定概率随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素,在这个概率范围之外图像保持不变。

matlab代码

%%
clear all;
image=imread('sample.jpeg');
image_new=saltpepper(image,0.1,0.1);
image_matlab=imnoise(image,'salt & pepper',0.1);
figure(1);
subplot(131);
imshow(image);
title('原始图像')

subplot(132);
imshow(image_new);
title('手写椒盐噪声') 

subplot(133);
imshow(image_matlab);
title('matlab椒盐噪声')

%直接使用salt,pepper的值噪声的数量好像比matlab自带的函数要对很多,对每一个通道都进行了随机,应该是对了
%但是按照上面的,平均下来每一个通道/3,噪声比自带函数少了,随便吧
function f=saltpepper(image,salt,pepper)
[length,width,height]=size(image);
image_new=image;

salt=salt/3;pepper=pepper/3;

%这个太啰嗦了,但是要怎么对特定名字的矩阵进行操作呢??
%要是生成黑白的噪声生成一个随机概率矩阵即可
a1=unifrnd(0,1,length,width);%0-1的随机概率矩阵
a2=(a1>0)&(a1<salt);
a3=(a1>=salt)&(a1<(salt+pepper));

c1=unifrnd(0,1,length,width);%0-1的随机概率矩阵
c2=(c1>0)&(c1<salt);
c3=(c1>=salt)&(c1<(salt+pepper));

b1=unifrnd(0,1,length,width);%0-1的随机概率矩阵
b2=(b1>0)&(b1<salt);
b3=(b1>=salt)&(b1<(salt+pepper));

if height==1
    image_new(a2)=0;
    image_new(a3)=255;
elseif height==3
    t1=image_new(:,:,1);
    t1(a2)=0;
    t1(a3)=255;
    image_new(:,:,1)=t1;
    
    t2=image_new(:,:,2);
    t2(b2)=0;
    t2(b3)=255;
    image_new(:,:,2)=t2;
    
    t3=image_new(:,:,3);
    t3(c2)=0;
    t3(c3)=255;
    image_new(:,:,3)=t3;
    
end

f=image_new;
end

效果图

matlab添加椒盐噪声_第1张图片

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