logo资料库

倾斜单道地震数据SVD去噪.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
clc clear all; clf ; close all; %% %%原始信号图像 NT=501; NX=100; dt=0.001; f0=30; t=[0:NT-1]*dt; a=pi*f0*(t-0.25); sss=(1-2*a.^2).*exp(-a.^2); figure(1); plot(sss); for(i=1:NX) sss=circshift(sss,[0,1]); F(:,i)=sss'; end figure(2); Wigb(F); %% %%有噪声的图像 noise=randn(NT,NX)*0.1; Fhe=F+noise; figure(3) wigb(Fhe); %% % %%svd 还原 % A=[1,2,3,4,5;2,3,4,5,6;3,4,5,6,7]; % [u,ss,v]=svd(A); [u,s,v]=svd(Fhe); S=diag(s); S1=S/S(1); figure(4) stem(S1,'k'); M=14;%%选择保留特征值的个数; s(s < s(M,M)) = 0; Fhuan=u*s*v'; figure(5) wigb(Fhuan);
%% %误差绝对值分析 ee=abs(Fhe-Fhuan); figure(6) wigb(ee); %Project: Calculates the PSNR (Peak Signal to Noise Ratio) % of images A and A', both of size MxN function [A] = psnr(base,result) % convert to doubles % base=double(base); % result=double(result); [M,N]=size(base); b_base=block_im(base,8); b_result=block_im(result,8); for i=1:8 for j=1:8 % m_base(i,j)=max(max(double(b_base{i,j}).^2)); m_base(i,j)=max(max(im2double(b_base{i,j}).^2)); end end % psnr_num=double(M*N*max(m_base(:))); psnr_num=M*N*max(m_base(:)); for i=1:8 for j=1:8
% s_dif(i,j)=sum(sum(double(b_dif{i,j}).^2)); s_dif(i,j)=sum(sum(double(im2double(b_base{i,j})-im2double(b_result{i,j}) ).^2)); end end % psnr_den=double(sum(s_dif(:))); psnr_den=sum(s_dif(:)); % psnr_num=M*N*max(max(base.^2)); % calculate numerator 用信号功 率最大值乘以象素点个数)); % calculate den % psnr_den=sum(sum((base-result).^2ominator 噪声的功率之和 A=10*log10(psnr_num/psnr_den); % calculate PSNR
分享到:
收藏