2

给定代码

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

我该如何解决?

问候

4

1 回答 1

3

该警告意味着您正在尝试在实轴上绘制复数值。

我相信触发该警告的不是那一行,而是plot代码中其他地方的命令(或类似命令)。

FFT 变换的结果通常很复杂,因此如果要绘制这些值,请使用两张图:一张用于幅度,一张用于相位(或者一张用于实部,另一张用于虚部,但这还远远不够这样做不太常见)。要获得幅度,请使用abs命令。

按照您的评论,而不是imshow(X)尝试imshow(abs(X))imshow(real(X))

于 2013-01-24T17:57:34.900 回答