matlab做频谱分析时如何实现图像去噪?
如何用matlab实现对图像的频谱分析判断噪声的类别,然后根据对应的去噪方法实现去噪?先不考虑多噪声的情况。拿图像做个二维的FFT或DCT,把高频部分的幅值置0,再反变换回来,就是个简单的例子。matlab里Demo有例子。 《基于MATLAB的频谱分析与信号去噪》参考一下 I=imread('luo.jpg');
figure;imshow(I);title('原图像');
I1=imnoise(I,'salt & pepper',0.02);
figure;imshow(abs(I1));title('加入椒盐噪声后的图像');
I2=imnoise(I,'gaussian',0,0.005);
figure;imshow(I2);title('加入高斯噪声后的图像');
%对噪声污染的图像做均值滤波:
%---------对椒盐噪声做均值滤波 ---------%
II1=rgb2gray(I1);
a=1/9.*[1 1 1
1 1 1
1 1 1];
b=conv2(a,II1);
figure;imshow(b,);title('对椒盐噪声的均值滤波图像');
%---------对高斯噪声做均值滤波---------%
II2=rgb2gray(I2);
a=1/9.*[1 1 1
1 1 1
1 1 1];
b=conv2(a,II2);
figure;imshow(b,);title('对高斯噪声的均值滤波图像');
h=fspecial('average',3)/255;
I3=filter2(h,II1);
figure;imshow(I3);
title('对高斯噪声的均值滤波后的图像');
%对噪声污染的图像做中值滤波:
%---------对椒盐噪声做中值滤波---------%
c=medfilt2(II1,);
figure;imshow(c);title('对椒盐噪声的中值滤波图像');
%---------对高斯噪声做中值滤波---------%
c=medfilt2(II2,);
figure;imshow(c);title('对高斯噪声的中值滤波图像');
B=rgb2gray(I1);
C=B;
xsize=size(B);
for k=2:(xsize(1)-1)
for j=2:(xsize(2)-1)
t=B(k-1:k+1,j-1:j+1);
C(k,j)=median(t(1:9));
end;
end;
imshow(C);
title('中值处理后的图');
%采用高斯滤波
a=1/1151.*[14710 74 1
412 26 33 26 124
726 55 71 55 267
10 33 71 91 71 33 10
726 55 71 55 267
412 26 33 26 124
14710 74 1 ];
b=conv2(a,II2);
figure;imshow(b,);title('对椒盐噪声的高斯滤波图像');
h=fspecial('gaussian',,0.5);
I4=imfilter(I3,h);
figure;imshow(I4);
title('高斯滤波后的图像');
学习了
页:
[1]