Как указать и сохранить только часть преобразований Фурье наибольшей величины из изображения

Я хочу написать короткую программу 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')

Другие вопросы по тегам