Fourier transzformáció Matlabban
Matlabban a képek diszkrét Fourier transzformációját az fft2() függvény végzi el. A függvény első paramétereként a képet, további paraméterként pedig a kép adott méretűvé terjesztését lehet megadni. Fontos megjegyezni, hogy a diszkrét Fourier transzformáció esetén a kép mérete 2-hatvány kell, hogy legyen. Amennyiben a kép mérete nem igazodik ehhez, úgy ki kell terjeszteni a következő 2-hatvány méretre, vagy meg kell vágni a képet. Ha az fft2() függvénynek ez utóbbi két paramétert nem adjuk meg, úgy a méret kiterjesztése automatikusan megtörténik.
Az fft2() függvény a Fourier-képet úgy állítja elő, hogy a legkisebb frekvenciák a kép sarkaiban vannak. A legtöbb alkalmazásban viszont olyan Fourier-képre van szükségünk, ahol a zérófrekvencia a kép középpontjában van. Ehhez a transzformációhoz használjuk a Matlab fftshift() függvényét, amelynek a Fourier-transzformált képet kell megadni.
>> img = imread('Columbo.JPG');
>> fft_img = fft2(img);
>> imshow(log(fft_img +1),[]);
>> fft_img_c = fftshift(fft_img);
>> imshow(log(fft_img_c +1),[]);
Az inverz Fourier transzformáció végrehajtására az ifft2() függvény szolgál képek esetén. Ennél a függvénynél az ifftshift() függvényt kell alkalmazni a korábbi centralizálás visszaállításához az inverz Fourier transzformáció előtt.
>> img = imread('Columbo.JPG');
>> fft_img = fft2(img);
>> fft_img2 = fftshift(fft_img);
>> ifft_img = ifft2(ifftshift(fft_img2)); %% a kép double típusú lesz
>> imshow(ifft_img,[]) ;
Nézzük meg a következő két példát!
|
|
|
|
![]() |
![]() |
Eredeti kép | Fourier transzformált kép | fftshift() után |