Начнем с того, что в Matlab значения, возвращаемые из fft2, являются сложными.Я не уверен, как imwrite справится с ними.Попытка этого кода, кажется, дает почти ощутимые результаты.(Принимая log10 помогает с отображением)
rect = imread('rect.jpg');
rectfft = fft2(rect);
pcolor(log10(abs(rectfft)));
shading flat
Изображение смещено относительно начала координат, потому что индекс пикселей, вероятно, связан с пространственной частотой изображения.т.е. низкие пространственные частоты появляются близко к 0,0.Более высокие пиксельные обозначения являются псевдонимами этих частот.Вы могли бы переставить изображение, чтобы поместить (0,0) в середину с некоторыми матричными манипуляциями.