精华内容
下载资源
问答
  • matlab添加高斯噪声
    千次阅读
    2021-04-18 12:55:04

    噪声分两种性质,加性噪声和乘性噪声。加性噪声一般指热噪声、散弹噪声等,它们与信号的关系是相加,不管有没有信号,噪声都存在。而乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在他也就不在。一般通信中把加性随机性看成是系统的背景噪声;而乘性随机性看成系统的时变性(如衰落或者多普勒)或者非线性所造成的。

    白噪声,是一种功率频谱密度为常数的随机信号或随机过程,是功率谱密度在整个频域内均匀分布的噪声。此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声。相对的,其他不具有这一性质的噪声信号(功率谱密度不均匀分布)被称为有色噪声。理想的白噪声具有无限带宽,因而其能量是无限大,这在现实世界是不可能存在的。实际上,我们常常将有限带宽的平整讯号视为白噪音,因为这让我们在数学分析上更加方便。然而,白噪声在数学处理上比较方便,因此它是系统分析的有力工具。一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。

    MATLAB中产生高斯白噪声可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于将高斯白噪声加入到某一信号中 。

    1. WGN:产生高斯白噪声

    y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dB为单位指定输出噪声的强度。

    y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。

    在数值变量后还可附加一些标志性参数:

    y = wgn(…,powertype) 指定p的单位。powertype可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。

    y = wgn(…,outputtype) 指定输出类型。outputtype可以是'real'或'complex'。

    2. AWGN:在某一信号中加入高斯白噪声

    y = awgn(x,snr) 在信号x中加入高斯白噪声。信噪比snr以dB为单位。x的强度假定为0dBW。如果x是复数,则加入复噪声。

    y = awgn(x,snr,sigpower) 如果sigpower是数值,则其代表以dBE为单位的信号强度;如果sigpower为'measured',则函数将在加入噪声之前测定信号强度。

    y = awgn(…,powertype) 指定snr和sigpower的单位。powertype可以是'dB'或'linear'。如果powertype是'dB',那么snr以dB为单位,而sigpower以dBW为单位。如果powertype是'linear',那么snr作为比值来度量,而sigpower以瓦特为单位。

    顺带说明: 事实上,无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。下面就我熟悉的“向已知信号添加某个信噪比(SNR)的高斯白噪声”来说明一下,不过如果大家阅读过awgn的实现代码就不用看下去了,呵呵。从上述可知,这个任务可以使用awgn函数实现,具体命令是:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号f(x)添加信噪比(比值)为SNR的噪声,在添加之前先估计信号f的强度。这里涉及三个问题:在awgn这个函数中,SNR是如何计算的?什么是信号的强度?awgn函数具体是如何添加噪声的?事实上,前两个问题是相关的,因为根据定义,SNR就是信号的强度除以噪声的强度,所以,首先来讲讲信号的强度。其实信号的强度指的就是信号的能量,在连续的情形就是对f(x)平方后求积分,而在离散的情形自然是求和代替积分了。在matlab中也是这样实现的,只不过多了一个规范化步骤罢了:

    sigPower = sum(abs(sig(: )).^2)/length(sig(: ))

    这就是信号的强度。至此,SNR的具体实现也不用多说了(注:由于采用的是比值而非db,所以与下面“计算信噪比”所使用的方式不同,即没有求对数步骤)。

    最后说说awgn函数具体是如何添加噪声的。事实上也很简单,在求出f的强度后,结合指定的信噪比,就可以求出需要添加的噪声的强度noisePower=sigPower/SNR。由于使用的是高斯白噪声即randn函数,而randn的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就知道了,注意信号的长度不能太小)。于是,所要添加的噪声信号显然就是:sqrt(noisePower)*randn(n,1),其中n为信号长度。

    更多相关内容
  • Matlab添加高斯噪声

    2017-05-28 11:47:18
    matlab 添加高斯噪声
  • 本程序通过MATLAB实现,主要实现向图像中加入高斯噪声和椒盐噪声,内附有实验结果
  • MATLAB混合高斯噪声

    2020-12-25 16:24:26
    MATLAB混合高斯噪声
  • 在该项目包含两个块,首先包含添加噪声块。第二件事应用该过滤器
  • 给图像添加高斯噪声matlab
  • 高斯噪声、有色噪声MATLAB程序,超详细,值得推荐! 产生高斯噪声的程序,信号加载高斯噪声的程序,产生有色噪声的程序。
  • MATLAB--数字图像处理 添加高斯噪声

    万次阅读 多人点赞 2019-09-14 17:03:02
    添加高斯噪声 概念 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关...

    添加高斯噪声

    概念
    高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。在通信信道测试和建模中,高斯噪声被用作加性白噪声以产生加性白高斯噪声。

    我的理解:高斯噪声就是符合高斯分布的噪声,在数字图像处理这块就是二维的高斯分布(正态分布)。那么怎么添加高斯噪声呢?首先我们肯定要得到一个二维的、符合高斯分布的噪声矩阵,最后将其添加到原图像上。这样高斯噪声就添加成功了。

    方法一:利用randn()函数生成高斯噪声
    这里需要用到randn()函数,该函数就专门用来生成正态分布数据的一个函数。
    比如 randn(10,10),然后这个矩阵和原图像矩阵相加即可(注意缩放灰度范围)

    randn(10,10)
    
    ans =
    
       -0.3587    0.6694    0.2922    0.4127   -0.4399   -0.2027    1.2917   -1.2807    0.0522   -0.2097
        1.4851   -0.2349   -0.0809   -1.0475    0.4734   -0.8012   -1.3658   -2.4489    1.2525   -0.0725
        0.1214    0.2553    0.2774   -0.9508   -0.3378   -1.1350    0.7951   -0.6749   -0.1797   -0.5646
       -0.7056    1.5769   -0.8234    1.5896    1.5743    0.1304   -0.3575   -1.0971   -0.2286   -1.5035
        1.4605    0.6227   -0.6059    1.5939    0.0120   -0.1012   -0.9397   -1.6988   -2.3375    1.0503
       -0.2038    0.7016    0.7310   -0.4053   -0.0419   -0.3276   -0.7675    0.6319    0.3662   -1.0595
       -1.3164    0.1579    0.3200   -0.2055    0.5508   -0.6350    0.7769    1.1788    1.1854   -1.0070
        0.1054    1.0071    0.4267    0.6462   -1.1893   -1.8829   -1.2166   -0.2838    1.0378    0.8280
        0.9141   -1.5962   -0.0540    1.5489    1.0449    0.6155   -0.6227    0.2447    0.2955   -0.7770
       -0.7474    0.6233    1.3306   -0.2167   -0.2423    1.3778   -1.0203   -1.1946    0.4893    0.0451
    

    代码:

    t=imread('a1.jpg');
    [m,n,z]=size(t);
    y=0+0.1*randn(m,n);%二维高斯分布矩阵 0是均值 0.1是标准差
    
    %先将其double化,再除以255 便于后面计算
    t1=double(t)/255;
    
    %加上噪声
    t1=t1+y;
    
    %将像素范围扩大至0--255
    t1=t1*255;
    
    %转换为uint8类型
    t1=uint8(t1);
    
    subplot(1,2,1),imshow(t),title('原图');
    subplot(1,2,2),imshow(t1),title('加入均值为0,标准差为0.1的高斯噪声后');
    

    效果图:
    在这里插入图片描述
    方法二:随机生成高斯噪声(这个我还没有懂那个随机生成高斯噪声函数怎么来的!)
    代码:

     image=imread('a1.jpg');
    [width,height,z]=size(image);
    subplot(1,2,1);
    imshow(image);
    title('原图');
    av=0;
    std=0.1;
    u1=rand(width,height);
    u2=rand(width,height);
    x=std*sqrt(-2*log(u1)).*cos(2*pi*u2)+av;
    result1=double(image)/255+x;
    result1=uint8(255*result1);
    subplot(1,2,2);
    imshow(result1);
    title('加入均值为0,标准差为0.1的高斯噪声后');
    

    效果图:
    在这里插入图片描述

    方法三:利用imnoise()函数
    代码

    t=imread('a1.jpg');
    imshow(t),title('原图');
    t1=imnoise(t,'gaussian',0,0.01);
    figure,imshow(t1),title('添加均值为0,方差为0.01的高斯噪声');
    t2=imnoise(t,'gaussian',0,0.02);
    figure,imshow(t2),title('添加均值为0,方差为0.02的高斯噪声');
    t3=imnoise(t,'gaussian',0,0.03);
    figure,imshow(t3),title('添加均值为0,方差为0.03的高斯噪声');
    t4=imnoise(t,'gaussian',0.2,0.01);
    figure,imshow(t4),title('添加均值为0.2,方差为0.01的高斯噪声');
    t5=imnoise(t,'gaussian',0.4,0.01);
    figure,imshow(t5),title('添加均值为0.4,方差为0.01的高斯噪声');
    
    

    效果图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    注意:imnoise()中参数写的是方差,而方法一、二中是标准差。

    更多

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

    展开全文
  • 图像处理课程上,老师给出的任务是:往图像里添加高斯噪声,不使用自带的添加噪声函数。 于是,我查阅资料,找到了两种自编写的添加高斯噪声的方法,且他们都没有使用到opencv。 以下是方法的介绍: 1.方法一:反...

    图像处理课程上,老师给出的任务是:往图像里添加高斯噪声,不使用自带的添加噪声函数。
    于是,我查阅资料,找到了两种自编写的添加高斯噪声的方法,且他们都没有使用到opencv。

    以下是方法的介绍:

    1.方法一:反函数的方法
    利用高斯噪声的概率密度函数PDF,通过积分可求出其累积分布函数CDF,利用均匀分布的语句rand(),产生一个均匀分布的随机数矩阵w,利用x=CDF-1(w),即求CDF的反函数,进而可得出高斯分布的随机数矩阵。
    高斯分布的PDF为:
    在这里插入图片描述
    那么,高斯分布的CDF为:
    在这里插入图片描述
    而这个公式比较复杂,在写程序时,我们习惯用误差函数erf()来表示上面的CDF:
    在这里插入图片描述
    其反函数称为反误差函数:
    在这里插入图片描述

    2.方法二:Box-Muller方法
    根据资料,我们可以先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。
    其方法归纳为:
    在这里插入图片描述

    下面是我程序设计的流程图

    1.反函数方法的:
    在这里插入图片描述
    2.Box-Muller方法的:
    在这里插入图片描述

    下面是我的Matlab程序

    clear;clc;
    %% 原图像输入与显示
    image=imread('Lena.jpg');  %读取jpg图像
    [width,height,z]=size(image);  %读取图像的大小
    subplot(1,4,1);      %画子图个数,一共4个
    imshow(image);      %画出原图 
    title('原图');      %标题
    %% 高斯分布的均值与标准差赋值
    mu=0;  %均值
    sigma=0.1;  %标准差
    %% Box-Muller方法产生高斯分布
    u1=rand(width,height);  %生成图像大小的均匀(0,1)分布的u1,u2
    u2=rand(width,height);
    x=sigma*sqrt(-2*log(u1)).*cos(2*pi*u2)+mu;  %box-muller方法的公式书写,生成的是标准正态分布,再乘上标准差,加上均值,为最终的高斯分布
    result1=double(image)/255+x;  %将图像变为double型,且数值区间在(0,1),再加上高斯分布形成的噪声
    result1=uint8(255*result1);   %将double类型的灰度值变回为图像
    subplot(1,4,2);
    imshow(result1);
    title('BM方法加高斯噪声后的图像');
    %% 反函数方法
    f=rand(width,height);   %生成(0,1)均匀分布的随机数
    y=sqrt(2)*erfinv(2*f-1); %反函数方法,用反误差函数求,求出的是标准正态分布的随机数
    y=sigma*y+mu;   %乘以标准差,加上均值,成为一般的正态分布随机数,作为高斯噪声
    result2=double(image)/255+y;
    result2=uint8(255*result2);
    subplot(1,4,3);
    imshow(result2);
    title('反函数方法加高斯噪声后的图像');
    %% 自带imnoise函数产生高斯分布,作为以上方法的参考与对比
    P1=imnoise(image,'gaussian',0.01); %方差为0.01,均值为0
    subplot(1,4,4);
    imshow(P1);
    title('自带函数加高斯噪声后');
    

    得到的效果,用了最为经典的Lena图:
    在这里插入图片描述

    展开全文
  • <转>Matlab中添加高斯噪声

    千次阅读 2021-04-19 07:29:51
    定义:白噪声是指功率谱密度在整个频域内均匀分布的噪声。即其功率谱密度:(为常数),白噪声的自相关函数:因为,所以其自相关函数为: (2.8-1)由式(2.8-1)可知,白噪声的自相关函数仅在时才不为零;而对于其他任意的,它...

    定义:白噪声是指功率谱密度在整个频域内均匀分布的噪声。即

    其功率谱密度:

    a4c26d1e5885305701be709a3d33442f.png(

    a4c26d1e5885305701be709a3d33442f.png为常数),

    a4c26d1e5885305701be709a3d33442f.png

    白噪声的自相关函数:

    因为

    a4c26d1e5885305701be709a3d33442f.png,所以其自相关函数为:

    a4c26d1e5885305701be709a3d33442f.png (2.8-1)

    由式(2.8-1)可知,白噪声的自相关函数仅在

    a4c26d1e5885305701be709a3d33442f.png时才不为零;而对于其他任意的

    a4c26d1e5885305701be709a3d33442f.png,它都为零。这说明只有在

    a4c26d1e5885305701be709a3d33442f.png时才相关,而它在任意两个时刻上的随机变量都是不相关的。白噪声的自相关函数及其功率谱密度,如图2-8-1所示。

    a4c26d1e5885305701be709a3d33442f.png

    图2-8-1 白噪声的(

    a4c26d1e5885305701be709a3d33442f.png)功率谱密度和(

    a4c26d1e5885305701be709a3d33442f.png)自相关函数

    严格地说,白噪声只是一种理想化模型,因为实际噪声的功率谱密度不可能具有无限宽的带宽,否则它的平均功率将是无限大,是物理上不可实现的。然而,白噪声在数学处理上比较方便,因此它是系统分析的有力工具。一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。例如,热噪声和散弹噪声在很宽的频率范围内具有均匀的功率谱密度,通常可以认为它们是白噪声。

    a4c26d1e5885305701be709a3d33442f.pngMATLAB中产生高斯白噪声的两个函数

    MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。

    1. WGN:产生高斯白噪声

    y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。

    y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。

    y = wgn(m,n,p,imp,state) 重置RANDN的状态。

    在数值变量后还可附加一些标志性参数:

    y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW',

    'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。

    y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。

    2. AWGN:在某一信号中加入高斯白噪声

    y = awgn(x,SNR)

    在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。

    y = awgn(x,SNR,SIGPOWER)

    如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。

    y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。

    y = awgn(…,POWERTYPE)

    指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。

    展开全文
  • matlab实现均值滤波去除高斯噪声. 用matlab实现均值滤波去除高斯噪声. 用matlab实现均值滤波去除高斯噪声. 用matlab实现均值滤波去除高斯噪声.
  • matlab添加高斯噪声

    千次阅读 2018-03-29 14:36:00
    高斯噪声即呈正态分布的干扰噪声,用作增加光谱的扰动或图像的干扰。主要对光谱加噪进行分析。 其实Matlab本身就有比较成熟的加噪函数imnoise,y1=imnoise(y,'gaussian',M,V); y为原始光谱,gaussian为噪声...
  • y=randn(1,2500);y=y/std(y);y=y-mean(y);a=0;b=sqrt(5);y=a+b*y;就得到了 N ( 0, 5 ) 的高斯分布序列。...WGN用于产生高斯噪声,AWGN则用于在某一信号中加入高斯噪声。1. WGN:产生高斯噪声y ...
  • 分别添加高斯和椒盐噪声 im = imread('C:\Users\Administrator\Desktop\123456.jpg'); % 1)生成含有高斯噪声、椒盐噪声的图像 % imnoise 是表示添加噪声污染一幅图像,叫做噪声... % 加入高斯噪声 figure; subp..
  • MATLAB点云处理(八):为点云添加高斯噪声

    千次阅读 热门讨论 2021-07-23 14:53:58
    本文对如何借助MATLAB,为点云添加高斯噪声做出了说明,并给出实现代码。
  • 概念 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一...在通信信道测试和建模高斯噪声被用作加性白噪声以产生加性白高斯噪声。 我的理解:高斯噪声就是符合高斯分布的噪声,在数字图像处理这块就...
  • 在经过仔细阅读文档后发现,其实MATLAB的说明文档已经写得很清楚,现摘出如下: J = imnoise(I,type,parameters) Depending on type, you can specify additional parameters to imnoise 《一线大厂Java面试题解析+...
  • MATLAB 给点云添加高斯噪声,随机噪声,亲测绝对可用
  • 使用MATLAB对一幅图像添加椒盐噪声或者高斯噪声。不调用现成函数,只用到rand产生随机数。代码非常精简,使用方便,适合新手参考。核心代码如下: % ***添加椒盐噪声*** K1 = 0.2;%多少被污染 K2 = 0.5;%胡椒噪声...
  • 基于matlab产生粉红色噪声高斯噪声:让高斯噪声通过低通、带通、高通滤波器的任意一个就可以产生高斯噪声。让高斯噪声通过每倍频程衰减3dB的衰减滤波器的滤波器就可以产生粉红噪声
  • matlab产生高斯噪声

    千次阅读 2021-04-18 05:21:23
    %正态分布(normal distribution)又名高斯分布(Gaussian distribution),% MATLAB 命令是normrnd。%1)R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,DELTA参数代表标准差)的随机数。% 输入的向量或矩阵MU和...
  • 给图像添加椒盐噪声和高斯噪声,然后对图像进行中值滤波。MATLAB代码可直接运行实现。
  • matlab 模拟高斯噪声和有色噪声

    千次阅读 2021-04-18 10:43:31
    1. 高斯白噪声-white noise模拟高斯噪声,也称为正态噪声,是有一系列不...Matlab已经有一个randn(M,N)的函数,用其可以产生出均值为0、方差为1、尺寸为M X N像素的高斯噪声图像。mean = 0;var=0.08;n_gaussian = me...
  • (很好的资料,做实验就参考这个代码了,代码的注释很详细)基于MATLAB语音信号去白噪声高斯噪声分析的源程序,将白噪声中的1/10改成1/50就可滤除白噪声高斯噪声的就不用改了!
  • 产生一定频率的正弦信号,并利用matlab函数加瑞利噪声和高斯噪声,模拟传输信道的衰落,最后画图对比加噪前后的信号。
  • lyqmath简介高斯噪声是常见的噪声之一,这里介绍两种高斯噪声生成方式,并希望大家多多讨论。应用% By lyqmath% DLUT School of Mathematical Sciences 2008% BLOG:http://blog.sina.com.cn/lyqmathclc; close all;...
  • 用不同模板对图像进行高斯噪声、椒盐噪声进行中值滤波均值滤波
  • lyqmath简介高斯噪声是常见的噪声之一,这里介绍两种高斯噪声生成方式,并希望大家多多讨论。应用% By lyqmath% DLUT School of Mathematical Sciences 2008% BLOG:http://blog.sina.com.cn/lyqmathclc; close all;...
  • clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 ... % R + 白噪声 G = imnoise(im(:,:,2),‘gaussian’,0,0.01); % G + 白噪声 B =.
  • 利用matlab高斯噪声的频谱,自相关函数以及功率谱进行分析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,488
精华内容 4,995
关键字:

matlab添加高斯噪声

matlab 订阅