三值平均濾波的MATLAB實現
代碼實現
% 三值平均濾波
x=[1:100];y1=5*sin((0.03*pi)*x);
N = wgn(1,100,0.1);
z1=N+y1;
signal = z1;
k=1;
m=1; % m=6,則爲十三值平均濾波
len = 2*m + 1; % 長度3
signal_filered = [];
t = [];
for i=m+1:length(signal)-m
t(k) = i;
% 每個像素點取i-m至i+m個鄰域點
signal_filered(k) = mean(signal(i-m:i+m)); % mean - 數組的均值
k = k+1;
end
s = signal_filered;
% hold on 是當前軸及圖形保持而不被刷新,準備接受此後將繪製
% hold off 使當前軸及圖形不再具備被刷新的性質
figure; plot(t,s,'-dr');hold on;
plot(x,z1,'-x');hold on;
plot(x,y1,'-k');title('三值平均濾波');
代碼執行結果: