Matlabに米の画像を読み込んで表示します。
g = imread('rice.png');
imshow(g);
この画像のFFTを取り、シフトします。
G = fft2(g);
imshow(log(abs(fftshift(G)) + 1), []);
画像の中心を介してax軸とy軸を配置すると、画像が対称であることがわかりましたg(-x、-y)= g(x、y)。1D信号の場合、実信号のFFTには対称の実部と非対称の虚部があることがわかります。これが2次元で表示されているものでしょうか。
元の画像は上部より下部の方が暗いため、周期的な境界で強い水平方向の不連続性があり、FFTの垂直線が発生しています。
この境界効果を解消したい。これに対する一般的なアプローチは、ウィンドウ処理のようです。
しかし、私はこの問題を「ミラーリング」と呼ばれる論文で見つけた手法で解決したいと思っています。論文はあまり具体的ではなかったので、このアプローチを理解するには、あなたの助けが必要です:-)。
最初に、元の画像から対称的な「タイル」を作成します。
tile=[flipdim(g,2) g; flipdim(flipdim(g,1),2) flipdim(g,1)];
imshow(tile);
次に、この「タイル」のFFTを使用します。
Tile=fft2(tile);
imshow(log(abs(fftshift(Tile)) + 1), [])
縦線は(ほとんど)なくなっているようです。ただし、ミラーリングにより対称性が高まったようです。
正しい結果は何ですか?元の画像のFFTまたは「ミラーリングされた」画像のFFT?
境界効果をなくし、純粋に本物のFFTを取得できるように、「ミラーリング」できる方法はありますか?
どんな答えも事前にありがとう!