Как указать и сохранить только часть преобразований Фурье наибольшей величины из изображения
Я хочу написать короткую программу MATLAB, которая позволяет мне указывать и сохранять только часть преобразований Фурье наибольшей величины от представления изображения.
Вот мой код, где image123 - это 256x256 uint8:
I= image123;
F = fft2(I);
F = fftshift(F);
F = abs(F); % Get the magnitude
F = log(F + 1);
F = mat2gray(F);
figure, imshow(F,[])
Если я увеличу свое значение 1 в "F = log(F + 1)", увеличит ли это величину преобразования Фурье?
1 ответ
Вы захотите использовать бинарную маску, чтобы установить все значения ниже заданного порога на ноль, а затем использовать ifft2
создать изображение из этих модифицированных данных Фурье
% Load in some sample data
tmp = load('mri');
I = tmp.D(:,:,12);
% Take the 2D Fourier Transform
F = fft2(I);
% Set this to whatever you want
threshold = 2000;
% Force all values less than this cutoff to be zero
F(abs(F) < threshold) = 0;
% Take the inverse Fourier transform to get your image back
I2 = ifft2(F);
% Plot them
figure;
subplot(1,2,1);
imshow(I, []);
title('Original')
subplot(1,2,2);
imshow(I2, []);
title('Filtered')