小波变换与低通高通滤波器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请高手指点一下:std_n=20; % Gaussian noise standard deviation In=randn(size(X))*std_n; % White Gaussian noise
X=X+In;这样加给原图像的噪声偏差是20,那么它的噪声方差是多少啊?请问
一下噪声方差和噪声偏差是什么关系啊!randn产生了均值为0方差为1的随
机数,那么它乘以20是不是就是均值为0方差为20的随机数阿?谢谢了
MATLAB 还想问问这种方式得到的噪声与 imnoise(I,‘gaussian’,v)得
到的有什么区别
方差定义:var(x)=E[(x-E(x))^2]E(x)=0时,有var(x)=E(x^2)则
var(ax)=E((ax)^2)=a^2*E(x^2) In=randn(size(X))*std_n得到的数据方差为
(std_n)^2。
matlab中awgn函数为例说明:
在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪
声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白
噪声”,
即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信
噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
这里涉及三个问题:在awgn这个函数中,SNR是如何计算的?什么是信号
的强度?awgn函数具体是如何添加噪声的?
事实上,前两个问题是相关的,因为根据定义,SNR就是信号的强度除以噪声
的强度,所以,首先来讲讲信号的强度。其实信号的强度指的就是信号的能
量,在连续的情形就是对x平方后求积分,而在离散的情形自然是求和代替积
分了。在matlab中也是这样实现的,只不过多了一个规范化步骤罢了:
sigPower = sum(abs(sig(: )).^2)/length(sig(: ))
这就是信号的强度。至此,SNR的具体实现也不用多说了(注:由于采用的是
比值而非db,所以与下面“计算信噪比”所使用的方式不同,即没有求对数步
骤)。
最后说说awgn函数具体是如何添加噪声的。事实上也很简单,在求出x的强度
后,结合指定的信噪比,就可以求出需要添加的噪声的强度
noisePower=sigPower/SNR。由于使用的是高斯白噪声即randn函数,而randn
的结果是一个强度为1的随机序列(自己试试sum(randn(1000,1).^2)/1000就
知道了,注意信号的长度不能太小)。于是,所要添加的噪声信号显然就是:sqrt(noisePower)*randn(n,1),其中n为信号长度。
自然要求的白噪声的方差也可以求出来了!
更新
程序如下
function snr=SNR(I,In)
% 计算信号噪声比函数
% I :original signal
% In:noisy signal(ie. original signal + noise signal)
% snr=10*log10(sigma2(I2)/sigma2(I2-I1))
[row,col,nchannel]=size(I);
snr=0;
if nchannel==1%gray image
Ps=sum(sum((I-mean(mean(I))).^2));%signal power
Pn=sum(sum((I-In).^2));%noise power
snr=10*log10(Ps/Pn);
elseif nchannel==3%color image
for i=1:3
Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power
Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2));%noise power
snr=snr+10*log10(Ps/Pn);
end
snr=snr/3;
end