【发布时间】:2019-04-10 03:52:42
【问题描述】:
我拍摄了以下图片: PandaNoise.bmp 并试图通过关注其傅里叶频谱来消除周期性噪声。注释行是我不确定的行。我无法将其恢复到图像平面。我在这里做错了什么?
panda = imread('PandaNoise.bmp');
fpanda = fft2(panda); % 2d fast fourier transform
fpanda = fftshift(fpanda); % center FFT
fpanda = abs(fpanda); % get magnitude
fpanda = log(1 + fpanda); % use log to expand range of dark pixels into bright region
fpanda = mat2gray(fpanda); % scale image from 0 to 1
figure; imshow(fpanda,[]); % show the picture
zpanda = fpanda;
zpanda(fpanda<0.5)=0;
zpanda(fpanda>0.5)=1;
%img = ifft2(zpanda);
%img = ifftshift(img);
%img = exp(1-img);
%img = abs(img);
【问题讨论】:
-
abs和log非常适合显示,但您应该将逆变换应用于您在执行这些操作之前拥有的数据。abs丢弃了相位信息,log还以使逆变换毫无意义的方式更改数据。 -
但是我怎样才能使用复数矩阵,因为这是我使用 FFT 后得到的,而不使用 abs() ?
-
你仍然可以这样做。 Cris 只是说你不应该在反向 FFT 的路径上这样做。
标签: matlab image-processing filtering fft