应用Matlab对图像信号进行频谱分析及滤波
选取一张彩色图片,建议把像素设置成200*200,提取图像的灰度值,并显示出灰度图像;在图像中增加正弦噪声信号(自己设置几个频率的正弦信号),画出加入噪声信号后的灰度图像;给定滤波器的性能指标,采用窗函数法或者双线性变换设计数字低通滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对含噪声图像信号进行滤波,画出滤波后图像信号的灰度图像。利用频谱分析对原始灰度图像、加入噪声信号的灰度图像、和滤波后的灰度图像进行频谱分析和对比,分析信号的变化。
x=imread('D:\\1.jpg'); x1=rgb2gray(x); [M,N]=size(x1); x2=im2double(x1); figure(1); subplot(1,3,1) imshow(x2);
x3=zeros(1,M*N); for i=1:M
for j=1:N;
x3(M*(i-1)+j)= x2(i,j); end end
L=M*N; fs=40000; dt=1/fs; n=0:L-1;
x7=(sin(2*pi*15000*n*dt)/10+sin(2*pi*18000*n*dt)/6) x4=x3+x7;
for i=1:M
for j=1:N;
x5(i,j) = x4(M*(i-1)+j); end
end figure(1) subplot(132); imshow(x5)
wp=0.5*pi; ws=0.75*pi; rp=3; rs=50;
[n,wn]=buttord(wp/pi,ws/pi,rp,rs,'s'); [Bz,Az]=butter(n,wp/pi); %[z,p,k]=buttap(n);
%[Bap,Aap]=zp2tf(z,p,k); %[B,A]=lp2lp(Bap,Aap,wn); %[Bz,Az]=bilinear(B,A,F); [h,w]=freqz(Bz,Az,L,fs); figure(3) subplot(121); plot(w,abs(h));
x6=zeros(1,L); for i=1:M
for j=1:N;
x6(M*(i-1)+j)= x5(i,j); end end
x8=zeros(1,L);
x8=filter(Bz,Az,x6);
x3k=fft(x3,L) figure(2) subplot(131)
plot(w*2,abs(x3k))
x4k=fft(x4,L) figure(2) subplot(132)
plot(w*2,abs(x4k))
x7k=fft(x7,L) figure(3) subplot(122)
plot(w*2,abs(x7k))
x8k=fft(x8,L) figure(2) subplot(133)
plot(w*2,abs(x8k))
for i=1:M
for j=1:N;
x9(i,j) = x8(M*(i-1)+j); end end figure(1) subplot(133); imshow(x9);

