% Eldetektalas frekvenciaterben felulatereszto szurovel
% im: szurkearnyalatos uint8 tipusu kep
% R: a szuro sugara

function [im_res] = myHighPassFilter(im,R)

imshow(im);

% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% FFT
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

F = fft2(im); % az FFT kep kiszamolasa
F = fftshift(F); % shiftelnunk kell (alacsony frekvenciak keruljenek kozepre)
showfft(F); % az FFT kep log magnitudojanak megjelenitese

% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% SZURES
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

dims = size(F); % H és W a kep merete
H = dims(1);
W = dims(2);

% kivagunk kozeprol egy R sugaru kort
for i = 1:H
    for j = 1:W
        % ha (i,j) pont és a kozeppont tavolsaga kisebb R-nel
        if (H/2-i)*(H/2-i) + (W/2-j)*(W/2-j) < R*R
            F(i,j) = 0;
        end
    end
end
showfft(F); % az uj FFT kep

% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% INVERZ FFT
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

im_res = ifftshift(F); % inverz shift
im_res = uint8(ifft2(im_res)); % inverz FFT es uint8-ra konvertalas
figure; imshow(im_res);

end

% segedfuggveny FFT kep megjelenitesere (log magnitudo)
function [] = showfft(F)

F = abs(F); % magnitudo kep
F = log(F+1); % log magnitudo kep; a +1 azert kell, mert log(0) nem ertelmezett
F = mat2gray(F); % mat2gray 0 es 1 koze transzformalja a kepet

figure;
imshow(F,[]); % a log magnitudo kep megjelenitese

end
