Fourierova transformace - zpracování obrazu ve frekvenční oblasti
Úkol :
Napište program, který za pomoci modifikovaného highpass Butherworthova filtru zaostří obraz [PNG], [TIFF]. Pokuste se zaostřit i obraz [PNG], který je poškozen šumem.K odevzdání
1.Textový vysvětlí rozdíl mezi rekonstruovanými obrazy.
2.Zaostřený obraz.
Zpracované výsledky :
použitý filtr Butherworth řádu 1![]()
původní obraz a jeho frekvenční spektrum po provedeni FFT
![]()
![]()
všechny obrázky jsou zaostřené použitím Butherworthova filtru typu horní propust řádu jedna
1.) TIF filtr , výřez = 2
![]()
![]()
2.) filtr , výřez = 5![]()
3.) filtr , výřez = 10![]()
4.) filtr , výřez = 205.) filtr , výřez = 40
![]()
Zpracování zašuměného obrazu
původní obraz poškozený šumem a jeho frekvenční spektrum po FFT
![]()
1.) filtr , výřez = 2![]()
2.) filtr , výřez = 5![]()
3.) filtr , výřez = 10![]()
4.) filtr , výřez = 20![]()
5.) filtr , výřez = 40![]()
Shrnutí výsledků:
Z obrázků je patrné, že přílišné ořezávání nízkých frekvencí (viz. filtr výřez 5 a dále), nám způsobí značnou ztrátu informace z obrazu a zůstane
nám v něm především šum a hrany, které samy o sobě jsou nositelkami vysokých frekvencí jež náš horně-propustní filtr nechá nezměněny. Tedy při větších výřezech filtr funguje v podstatě jako hranový detektor. Při nízkých výřezech dojde k mírnému zaostření, které se projevuje zvýšením
kontrastu kolem hran. Na rovných plochách dojde ztmavení obrazu, které je způsobeno tím, že se zde nevyskytují vysoké frekvence zatímco přítomné nízké se odstraní. Pokud použijeme zašuměný obraz, neděje se nic zvláštního, protože vysokofrekvenční šum tento filtr propustí.
Výpis programu z MATLABu :
clear all;
%nacteni a zobrazeni puvodniho obrazu
obr=imread('paolina2.tif');
figure(1);
subplot(121);
imshow(obr);
%prima fft
obr2=(fftshift(fft2(obr)));
%obrazek po fft a posunu nizkych frekvenci z rohu do stredu
subplot(122);
imshow(obr2);
cutoff=2; %sirka vyriznuteho spektra
n=1; %rad filtru
% prepocet souradne soustavy na stred
[im.r,im.c] = size(obr2);
vecr = [-(im.r-1)/2:(im.r-1)/2];
vecc = [-(im.c-1)/2:(im.c-1)/2];
matX = repmat(vecr',1,im.c);
matY = repmat(vecc,im.r,1);
matD = max(abs(matX),abs(matY));
matR = sqrt(matX.^2+matY.^2);
%vlastni filtrace
filtr = 1./(1+(cutoff./matR).^(2*n));
%obrazek filtrujici funkce
figure(2);
subplot(122);
imshow(filtr);
%inverzni fft a prevod do zobrazitelne podoby
obr3=real(ifft2(fftshift(obr2.*filtr)));
obr3 = obr3/255;
obr3 = obr3 - min(obr3(:));
obr3 = im2uint8( obr3 / (max(max(obr3))) );
%vykresleni vysledku%subplot(122);
%imshow(filtr);
subplot(121);
imshow(obr3);
ZSO - úloha č.2 10.12.1999 Jiří Filip