Saya memuat dan menampilkan gambar nasi di Matlab:
g = imread('rice.png');
imshow(g);
Saya mengambil FFT dari gambar ini dan menggesernya:
G = fft2(g);
imshow(log(abs(fftshift(G)) + 1), []);
Jika saya menempatkan kapak dan sumbu y melalui bagian tengah gambar; Saya menemukan bahwa gambarnya simetris g (-x, -y) = g (x, y). Untuk sinyal 1D kita memiliki bahwa FFT dari sinyal nyata memiliki bagian nyata simetris dan bagian imajiner asimetris. Saya kira itu yang kita lihat di sini dalam 2 dimensi?
Karena gambar asli lebih gelap di bagian bawah daripada di bagian atas, ada diskontinuitas horisontal yang kuat pada batas periodik yang menyebabkan garis vertikal di FFT.
Saya ingin menyingkirkan efek batas ini. Pendekatan umum untuk ini tampaknya windowing .
Namun saya ingin menyelesaikan masalah ini dengan teknik yang saya temukan di sebuah makalah yang disebut "mirroring". Makalah ini tidak terlalu spesifik sehingga saya perlu bantuan Anda dalam mencari tahu pendekatan ini :-).
Pertama saya membuat "ubin" simetris dari gambar aslinya:
tile=[flipdim(g,2) g; flipdim(flipdim(g,1),2) flipdim(g,1)];
imshow(tile);
Sekarang saya ambil FFT dari "ubin" ini:
Tile=fft2(tile);
imshow(log(abs(fftshift(Tile)) + 1), [])
Garis vertikal tampaknya (hampir) hilang: bagus. Namun mirroring tampaknya telah memperkenalkan lebih banyak simetri.
Apa hasil yang benar: FFT dari gambar asli atau FFT dari gambar "mirrored"?
Apakah ada cara saya bisa "mirror" sehingga saya sama-sama menyingkirkan efek batas dan mendapatkan FFT murni nyata?
Terima kasih sebelumnya atas jawaban apa pun!
sumber