圖像微弱信號(hào)檢測(cè)
用Matlab實(shí)現(xiàn)4種濾波降噪處理算法,信號(hào)為正弦信號(hào)疊加上白噪聲,參數(shù)可自主定制。
%matlab
clear all;clc;
fs=300;
Time=128;
t=0:1/fs:Time;
f1=1; T1=1/f1;
y1=sin(2*pi*f1*t);
figure;
plot(t,y1);axis([0 4 -3 3]);
title('原始正弦信號(hào)');
y2=y1+randn(1,length(y1));
figure;
plot(t,y2);axis([0 4 -3 3]);
title('加噪信號(hào)');
N=Time/T1-3;%累加中參數(shù)最大值不能超過信號(hào)序列否則沒有數(shù)值,每個(gè)tt都要往后推N-1個(gè)周期,準(zhǔn)備展示4個(gè)周期,故N最大為總周期數(shù)-3
T2=T1*fs;
%線性累加平均算法
A1=linspace(0,4*T1*fs,4*T1*fs-1);%創(chuàng)建序列用來存儲(chǔ)結(jié)果,由于是序列序號(hào),故還需乘上fs
for tt=0:4*T1*fs
X1=0;
for i=0:N-1 %進(jìn)行N次累加用以平均
X1=X1+y2(1+tt+i*T2);
end
A1(1+tt)=X1/N;
end
figure;
plot(A1);axis([0 1200 -3 3]);grid;
title('線性累加算法');
%遞推式平均算法
A2=linspace(0,length(y2),length(y2)-1);
Ap1=linspace(0,N,N-1);
for tt=0:4*T1*fs
Ap1(1)=y2(1+tt);
for n=2:N
Ap1(n)=(n-1)/n*Ap1(n-1)+y2(1+tt+(n-1)*T2)/n;
end
A2(1+tt)=Ap1(N);
end
figure;
plot(A2);axis([0 1200 -3 3]);grid;
title('遞推式平均算法');
%指數(shù)加權(quán)平均算法
A3=linspace(0,length(y2),length(y2)-1);
Ap2=linspace(0,N,N-1);
alpha=30;
beta=(alpha-1)/alpha;
for tt=0:4*T1*fs
Ap2(1)=y2(1+tt)*(1-beta);
for n=2:N
Ap2(n)=beta*Ap2(n-1)+y2(1+tt+(n-1)*T2)*(1-beta);
end
A3(1+tt)=Ap2(N);
end
figure;
plot(A3);axis([0 1200 -3 3]);grid;
title('指數(shù)加權(quán)平均算法');
%五點(diǎn)移動(dòng)平均算法
A4=linspace(0,length(y2),length(y2)-1);
for tt=0:4*T1*fs
if tt<=T2
A4(1+tt)=(2*y2(1+tt)+y2(1+tt+T2)+y2(1+tt+2*T2))/4;
elseif T2
A4(1+tt)=(y2(1+tt-T2)+2*y2(1+tt)+y2(1+tt+T2)+y2(1+tt+2*T2))/5;
else
A4(1+tt)=(y2(1+tt-2*T2)+y2(1+tt-T2)+2*y2(1+tt)+y2(1+tt+T2)+y2(1+tt+2*T2))/6;
end
end
figure;
plot(A4);axis([0 1200 -3 3]);grid;
title('五點(diǎn)移動(dòng)平均算法');
運(yùn)行后即可得到以下圖像:

1對(duì)比處理前后的圖像可見不同算法對(duì)應(yīng)的去噪效果(不同的采樣點(diǎn)算法表現(xiàn)是不同的)。