Ответ 1
Так как FFT2 и IFFT2 оба поддерживает только входные данные типа double
и single
, ваш данные изображения (который, скорее всего, относится к типу uint8
) сначала преобразуется в тип double
перед обработкой FFT2. Поэтому вам нужно будет преобразовать ваше выходное изображение inv
обратно в 8-битное целое без знака, используя функцию UINT8 для восстановления исходного изображения
>> img = imread('peppers.png'); %# Load a sample image
>> fft = fft2(img); %# Get the Fourier transform
>> inv = ifft2(fft); %# Get the inverse Fourier transform
>> inv = uint8(inv); %# Convert to uint8
>> imshow(inv); %# Show the image
>> isequal(img,inv) %# Test if inv matches the original image img
ans =
1 %# It does!
ПРИМЕЧАНИЕ: В качестве дополнительного совета я бы не стал называть ваши переменные fft
и inv
, поскольку функции с этими именами уже существуют в MATLAB.