MATLAB添加噪声

⾸先是⽤MATLAB⾃带的imnoise函数添加噪声。
img= im2double(imread('D:\Matlab2018a\work\img.png'));%改为你要读⼊图⽚的路径;im2double作归⼀化处理
sigma=25;%添加噪声的标准差
imgnoise=imnoise(img,'gaussian',0,(sigma/255)^2); %添加均值为0,标准差为sigma⾼斯噪声
imshow(imgnoise);
imwrite(imgnoise,'imgnoise.png');%输出噪声图到当前⽂件夹
由于matlab的imnoise函数会将输出归⼀化,所以在读⼊图⽚的时候就先⽤im2double把图⽚归⼀化了,免得数据类型不⼀样。
将上⾯添加噪声那⼀句改为如下语句则添加其它种类的噪声
imgnoise=imnoise(img,'salt & pepper',0.05); %添加密度为5%的椒盐噪声
imgnoise=imnoise(img,'speckle',(sigma/255)^2); %添加均值为0,标准差为sigma乘性噪声,这个是⽤服从均匀分布的随机噪声乘以图像img,再加到img上。imgnoise=imnoise(img,'poisson');%添加泊松噪声
下⾯我们⽤⾃⼰写的代码来添加噪声。
img=img+(sigma/255)*randn(size(img));%给img添加标准差为sigma的⾼斯噪声
img=img+img.*((sigma/255)*rand(size(img)));%给img添加标准差为sigma的乘性噪声,也是均匀分布
椒盐噪声对于椒盐噪声,先⽤rand()⽣成均匀分布的随机噪声,然后根据你需要的椒盐噪声密度,作阈值处理,反正就是这种思想,实现的⽅法有很多,我这⾥列⼀种。
img=im2double(imread('8.png'));%改为你要读⼊图⽚的路径
imgnoise =(rand(size(img))); %⽣成随机数组
d = 0.1;  %需要的椒盐噪声密度
output=img;
[width,height]=size(img);
for i=1:width
for j=1:height
if(imgnoise(i,j)>(1-d/2))
output(i,j)=1;
end
if(imgnoise(i,j)<d/2)
output(i,j)=0;
end
end
end
imshow(output);
也可以分两步分别⽣成椒噪声和盐噪声,但是这个总的密度就没有那么好控制
img=im2double(imread('8.png'));%改为你要读⼊图⽚的路径
d = 0.1;  %需要的胡椒或盐粒噪声密度
output=img;
[width,height]=size(img);
a1=rand(width,height)< d^0.5;
a2=rand(width,height)< d^0.5;
output(a1&a2) = 1; %⽣成盐噪声
b1=rand(width,height)< d^0.5;
b2=rand(width,height)< d^0.5;
output(b1&b2) = 0; %⽣成胡椒噪声
imshow(output);
%椒盐噪声的密度就是d+d-d*d

本文发布于:2024-09-24 20:29:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/358920.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:噪声   添加   密度   椒盐   图像   标准差
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议