旧言虐心 发表于 2017-2-17 09:11

matlab做频谱分析时如何实现图像去噪?

如何用matlab实现对图像的频谱分析判断噪声的类别,然后根据对应的去噪方法实现去噪?先不考虑多噪声的情况。

sd 发表于 2017-2-17 09:11

拿图像做个二维的FFT或DCT,把高频部分的幅值置0,再反变换回来,就是个简单的例子。matlab里Demo有例子。

怪咖先生 发表于 2017-2-20 09:00

《基于MATLAB的频谱分析与信号去噪》参考一下

zghitboy 发表于 2017-2-22 09:03

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('高斯滤波后的图像');

dh492510085 发表于 2017-6-11 18:56

学习了
页: [1]
查看完整版本: matlab做频谱分析时如何实现图像去噪?