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変換の結果は通常複雑であるため、これらの値をプロットする場合は、2つのプロットを使用します。1つは大きさ、もう1つは位相(または実数部と虚数部のプロットですが、これは遠いです)そうすることはあまり一般的ではありません)。マグニチュードを取得するには、absコマンドを使用します。

あなたのコメントに続いて、imshow(X)tryimshow(abs(X))または。の代わりにimshow(real(X))

于 2013-01-24T17:57:34.900 に答える