给出代码
function [nImg,mask] = myFunc(img,rl,rh)
[n m] = size(img);
mask = ones(n, m);
% do some stuff
% more
% and more
%
fourierImg = fft2(img); % take the fourier transform 2d for the given image
fourierImg = fftshift(fourierImg); % shift the fourier transform
output = mask.*fourierImg; % calc with the mask % THAT LINE CAUSES
% Warning: Displaying real part of complex input ?
ishifting = ifftshift(output); % grab the DC element
nImg = ifft2(ishifting); % inverse back to the image dimension
end
我执行时不断获取:Warning: Displaying real part of complex input
第output = mask.*fourierImg; % calc with the mask
行。
我该如何解决?
此致
答案 0 :(得分:3)
警告意味着您正试图在实轴上绘制复杂值。
我相信不会触发该警告的那一行,而是代码中其他地方的plot
命令(或其类似命令)。
FFT变换的结果通常很复杂,因此如果要绘制这些值,请使用两个图:一个用于幅度,一个用于相位(或一个用于实部,一个用于虚部,但是这种做法远不常见)。要获得大小,请使用abs
命令。
根据您的评论,而不是imshow(X)
尝试imshow(abs(X))
或imshow(real(X))
。