Cvičení 9 - Filtrace ve frekvenční oblasti
A) Teoretický úvod
Z předešlých cvičení je patrné, že filtrace obecně je pro zpracování obrazu důležitá v mnoha případech např. pro odstranění šumu nebo pro segmentaci pomocí nalezení hran v obrazu. Filtraci lze provádět v oblasti prostorové nebo frekvenční, v obou případech buďto na celém obrazu nebo třeba jen nad výřezem. Pojem prostorová oblast je zde použit jako 2D ekvivalent pojmu časová oblast pro jednorozměrný signál. Pro analýzu obrazu ve frekvenční oblasti je nutné obraz nejdříve transformovat do cílové domény a po analýze a případných úpravách zase zpět do prostorové, jak je patrné z následujícího obrázku.
K tomuto převodu se používají různé lineární integrální transformace, nejpoužívanější a nejznámější je Fouriérova transformace. Fouriérova transformace je matematický převod originálního signálu na jeho frekvenční spektrum, tzv. Fourierův obraz nebo jen obraz (pozn.: vzhledem k zavedené terminologii pojmu obraz pro originální 2D signál bude pro Fourierův obraz ve frekvenční rovině vždy používán termín frekvenční spektrum obrazu). Pro analýzu diskrétního obrazu se používá diskrétní Fouriérova transformace (DFT), jejíž definiční vztah pro 2D signál je dán následovně.
Symbol F (u, v) značí frekvenční spektrum obrazu s frekvenčními souřadnicemi (u, v), symboly R, S udávají rozměry obrazu a symbol f (x, y) pak samotnou obrazovou funkci. Frekvenční souřadnice (u, v) nabývají hodnot od nuly do (S-1, R-1). Frekvenční spektrum obsahuje komplexní čísla, proto se pro zpracování obrazového signálu ve frekvenční oblasti používají amplitudy komplexních čísel (amplitudová frekvenční charakteristika) nebo výkonová spektrální hustota (koeficienty násobené komplexně sdruženým číslem). Příklad grafického znázornění amplitudové charakteristiky jednoduchého syntetického dvourozměrného signálu je uveden na následujícím obrázku.
Tato frekvenční charakteristika obsahuje koeficienty odpovídající různým frekvenčním složkám analogicky jako u jednorozměrných signálů. Analýzou a operacemi s koeficienty ve frekvenční oblasti lze modifikovat obraz v prostorové oblasti např. realizovat filtr typu dolní propust pro vyhlazení obrazu. Pro získání modifikovaného obrazu je třeba převést koeficienty zpět do prostorové oblasti. Tomuto procesu se říká zpětná nebo někdy inverzní Fouriérova transformace IFT, jejíž diskrétní varianta IDFT je dána následujícím definičním vztahem.
Člen 1/(R*S) se někdy vyskytuje v předchozím vzorci pro přímou DFT místo ve vzorci pro zpětnou DFT. Méně často se pak vyskytuje v obou vzorcích současně odmocnina tohoto členu. Na způsob zpracování koeficientů to ale nemá žádný vliv, pokud do výpočtů zahrneme jejich vážení touto konstantou. Často se pro filtraci ve frekvenční oblasti využívá Butterworthův filtr, který má ze všech běžných filtrů (Gaussian, Chebyshev, Bessel) nejméně zvlněné spektrum. Definiční vztah Butterworthova filtru je následující.
V uvedeném vztahu představuje funkce d(x,y) běžně používanou L2-normu, čili Euklidovskou vzdálenost od prostorového středu filtru (xc,yc). Nejčastěji se využívá Butterworthův filtr prvního (n=1) a druhého řádu (n=2).
Pro filtraci ve frekvenční oblasti se využívá skutečnosti známé ze zpracování signálů o záměnnosti operace konvoluce (*) a násobení (.) signálů v časové a frekvenční doméně. Pro obrazy je tedy postup takový, že původní obraz a obraz filtru jsou převedeny do frekvenční oblasti, kde jsou jejich spektra násobeny prvek po prvku a následně převedeny pomocí zpětné Fouriérovy transformace zpět do prostorové oblasti jak to ukazuje následující relace.
Využitím principu rychlé Fouriérovy transformace využívající tzv. motýlkové schéma lze dosáhnout významné časové úspory zejména pro rozsáhlejší data.
B) Úkoly
- Podle definičního vzorce sestavte funkci [J] = ImageDFT(I) pro výpočet přímé diskrétní Fouriérovy transformace obrazu.
- Správnost implementace ověřte na nulovém šedotónovém obrazu o rozměrech 64×64 pixelů do jehož středu zanesete obdélník o stranách 16 a 32 pixelů a jasové úrovni 255. Do jednoho okna pak kromě původního obrazu zobrazte reálnou část, imaginární část, amplitudu a fázi spektra. Pro úpravu zobrazení použijte funkci fftshift pro centrování spektra. Do vlastního okna vykreslete pomocí funkce surf výkonové spektrum a slovně zdůvodněte jeho tvar.
- Výsledky vámi implementované funkce na syntetickém obrazu z bodu 2 porovnejte s výsledky knihovní funkce fft2. Porovnejte časovou náročnost výpočtů a zdůvodněte rozdíl.
- Na obrazu lenaM.bmp proveďte filtraci dolnopropustním Butterworthovým filtrem ve frekvenční oblasti tj. využijte záměnnosti operací konvoluce a násobení v prostorové a frekvenční doméně. Pro výpočet DFT resp. IDFT využijte knihovní funkce fft2 a ifft2. Zobrazte filtr, původní i filtrovaný obraz a vysvětlete chování filtru pro vyšší řády a pro různé parametry d0.
- Navrhněte způsob detekce hran v obrazu ve frekvenční oblasti a výsledek ověřte na stejném obrazu jako v předchozím bodě.
C) Dobré vědět
- Pro zpětný převod do prostorové oblasti je třeba uvažovat koeficienty opět jako komplexní čísla, i když se pro analýzu koeficientů ve frekvenční rovině používala jen např. absolutní hodnota čísla.
- Povolené funkce: imread, clock, etime, fft2, ifft2, fftshift
- Nepovolené funkce: Nejsou.