%对含噪信号s进行3层小波分解
[c,l]=wavedec(s,3,'db1')%s为含噪信号,3为小波分解层数,db1为采用的小波基
%获取信号默认值
[thr,sorh,keepapp]=ddencmp('den','wv',s)
%参数den代表去噪,wv代表小波,s代表含有噪声的信号
%实现去噪判悉姿过程
s2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp)
%参数gbl表示采用全局去噪
1.读图象2.做fft
3.显示fft
4.肉眼观察频谱中的噪声.(正弦干扰是在频谱中是几个点)
5.频谱中有噪声的区域设置为0.(或者低通)
6.反fft变换
7.显纳谈示
1.读图象
im=imread('文件名')
2.做fft
im_fft=(fftshift(fft2(im)))%fftshift是把低频成分放到中间,习惯上要这样做。
3.显李茄仔示fft
im_magfft=abs(im_fft)
temp1=log(im_magfft+1)%否则幅度太大,不能显示整个动态范围
Xmin = min(min(temp1))
Xmax = max(max(temp1))
scaf = 255/(Xmax-Xmin)
im_ftd = floor(scaf*(temp1 - Xmin))
figure
imshow(im_ftd)
4.肉眼观察频谱中的哪汪噪声.(正弦干扰是在频谱中是几个点)
5.频谱中有噪声的区域设置为0.(或者低通)
%下面举例低通
r = 70 %低通的中心半径,自己观察
for i=1:m
for j=1:n
if (((i-m/2)^2+(j-n/2)^2) <r^2 )
mask(i,j) = 1
else
mask(i,j) = 0
end
end
end
im2_fft=im_fft.*mask
6.反fft变换
im2=ifft(ishiftfft(im2_fft))
7.显示
imshow(im2)
winsize=256%窗长n=0.1%噪声水平
a=2
b=6
[speech,fs,nbits]=wavread('E:\matlab\louyin.wav')%读入wav文件
size=length(speech)%语音长度
numofwin=floor(size/winsize)%窗举斗数
%定义汉明窗
ham=hamming(winsize)'
hamwin=zeros(1,size)
enhanced=zeros(1,size)
improved=zeros(1,size)
%生成噪声信号
noise=n*randn(1,size)
y=speech'+noise
%噪声处理
noisy=n*randn(1,winsize)
N=fft(noisy)
npow=abs(N)
for q=1:2*numofwin-1
yframe=y(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)%分正正磨帧
hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham%
%加噪信号FFT
y1=fft(yframe.*ham)
ypow=abs(y1)%加噪信号幅度
yangle=angle(y1)%相位
%计算功率谱密度
Py=ypow.^2
Pn=npow.^2
Pyy=ypow.^a
Pnn=npow.^a
%基本谱减
for i=1:winsize
if Py(i)-Pn(i)>0
Ps(i)=Py(i)-Pn(i)
else
Ps(i)=0
end
end
s=sqrt(Ps).*exp(j*yangle)
for i=1:winsize
if Pyy(i)-b*Pnn(i)>0
Pss(i)=Pyy(i)-b*Pnn(i)
else
Pss(i)=0
end
end
ss=Pss.^(1/a).*exp(j*yangle)
%去噪语音IFFT
enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(s))
improved(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=improved(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(ss))
end
%去除汉明窗引起的增益
for i=1:size
if hamwin(i)==0
enhanced(i)=0
improved(i)=0
else
enhanced(i)=enhanced(i)/hamwin(i)
improved(i)=improved(i)/hamwin(i)
end
end
SNR1=10*log10(var(speech')/清或var(noisy))%加噪语音信噪比
SNR2=10*log10(var(speech')/var(enhanced-speech'))%增强语音信噪比
SNR3=10*log10(var(speech')/var(improved-speech'))
figure(1)plot(speech')%原始语音波形
title(['Original Voice(n=',num2str(n),')'])
figure(2)plot(y)
title(['Noise Added(SNR=',num2str(SNR1),'dB)'])
figure(3)plot(enhanced)
title(['Enhanced Voice(SNR=',num2str(SNR2),'dB)'])
figure(4)plot(improved)
title(['Improved Voice(SNR=',num2str(SNR3),'dB)'])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)