matlab 去除噪声请问如何用Matlab将图像中的水平线干扰去除,正弦噪声应该用什么滤波器处理?具体怎样处理?刚开始学Matlab,一点也不会:(

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 15:55:04
matlab 去除噪声请问如何用Matlab将图像中的水平线干扰去除,正弦噪声应该用什么滤波器处理?具体怎样处理?刚开始学Matlab,一点也不会:(

matlab 去除噪声请问如何用Matlab将图像中的水平线干扰去除,正弦噪声应该用什么滤波器处理?具体怎样处理?刚开始学Matlab,一点也不会:(
matlab 去除噪声
请问如何用Matlab将图像中的水平线干扰去除,正弦噪声应该用什么滤波器处理?具体怎样处理?刚开始学Matlab,一点也不会:(

matlab 去除噪声请问如何用Matlab将图像中的水平线干扰去除,正弦噪声应该用什么滤波器处理?具体怎样处理?刚开始学Matlab,一点也不会:(
1.读图象
2.做fft
3.显示fft
4.肉眼观察频谱中的噪声.(正弦干扰是在频谱中是几个点)
5.频谱中有噪声的区域设置为0.(或者低通)
6.反fft变换
7.显示
1.读图象
im=imread('文件名');
2.做fft
im_fft=(fftshift(fft2(im)));%fftshift是把低频成分放到中间,习惯上要这样做.
3.显示fft
im_magfft=abs(im_fft);
temp1=log(im_magfft+1);%否则幅度太大,不能显示整个动态范围
Xmin = min(min(temp1));
Xmax = max(max(temp1));
scaf = 255/(Xmax-Xmin);
im_ftd = floor(scaf*(temp1 - Xmin));
figure;
imshow(im_ftd);
4.肉眼观察频谱中的噪声.(正弦干扰是在频谱中是几个点)
5.频谱中有噪声的区域设置为0.(或者低通)
%下面举例低通
r = 70; %低通的中心半径,自己观察
for i=1:m
for j=1:n
if (((i-m/2)^2+(j-n/2)^2) < r^2 )
mask(i,j) = 1;
else
mask(i,j) = 0;
end
end
end
im2_fft=im_fft.*mask;
6.反fft变换
im2=ifft(ishiftfft(im2_fft));
7.显示
imshow(im2);