在MATLAB中如何对已有的图像添加有频率,有幅度的噪声啊

在MATLAB中如何对已有的图像添加有频率,有幅度的噪声啊,第1张

Matlab中为图片加噪声的语句是

(1)J = imnoise(I,type)

(2)J = imnoise(I,type,parameters)

其中I为原图象的灰度矩阵,J为加噪声后图象的灰度矩阵

一般情况下用(1)中表示即可,(2)中表示是允许修改参数,

而(1)中使用缺省参数

至于type可有五种,分别为'gaussian'(高斯白噪声),'localvar'

(与图象灰度值有关的零均值高斯白噪声),'poisson'(泊松噪声),

'salt &pepper'(椒盐噪声)和'speckle'(斑点噪声)

具体(2)中参数值的设定可根据个人需要

其余情况以及若还有不懂请参考Matlab帮助文件。

比如说:

I=imread('image.bmp')

J=imnoise(I,'salt &pepper')

imshow(J)

以上程序就表示把原图像加入椒盐噪声,但注意要把图像和以上程序的M文件放在同一个子目录下;

这回应该明白了吧?

可以使用如下的函数实现

R = normrnd(MU,SIGMA)  (生成均值为 MU,标准差为 SIGMA 的正态随机数)

R = normrnd(MU,SIGMA,m)  (生成 1× m 个正态随机数)

R = normrnd(MU,SIGMA,m,n) (生成 m 行 n 列的 m × n 个正态随机数)

假设输入信号为X,则给X加上一个均值为0,方差为1的高斯白噪声信号的方法为

Y=X+normrnd(0,1)

% 设置采样区间

k=(0:300)'/100

% 计算采样值

x=sin(2*pi*k)

% 施加高斯白噪声

y=awgn(x,0)

figure(1)

% 设置绘图位置,左下角距屏幕左200像素,下200像素,宽800像素,高300像素

set(gcf,'Position',[200,200,800,300])

% 绘图网格1*2,左图绘制原始信号,右图绘制噪声信号

subplot(1,2,1),plot(k,x)

subplot(1,2,2),plot(k,y)

给图像添加噪声的⽅法(补充ing)1.随机修改⼀部分像素点的灰度值为指定值

def noise(img,proportion=0.05):

'''

随机的修改⼀定数量像素点的灰度值

:param img:

:param proportion: 噪声点占全部像素点的⽐例

:return:

第 1 页

'''

height,width =img.shape[:2]

num = int(height*width*proportion)#多少个像素点添加噪声

for k in range(0, num):

# get the random point

xi = int(np.random.uniform(0, img.shape[1]))

xj = int(np.random.uniform(0, img.shape[0]))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8008139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存