Cvičení 7 - Lineární a nelineární filtrace

A) Teoretický úvod

Lineární a nelineární filtry se používají pro celou řadu operací úprav obrazu. U lineárních filtrů je výsledná hodnota obrazu stanovena jako lineární kombinace části obrazové matice a zvoleného filtru typu dolní nebo horní propust ve stanoveném okolí. Okolí má zpravidla tvar kříže kdy mluvíme o tzv. čtyřokolí (na obrázku vlevo) nebo tvar čtverce kdy mluvíme o tzv. osmiokolí (na obrázku uprostřed). Výjimečně se používá filtr definující i jiné okolí (na obrázku vpravo) popř. filtr definující nesymetrické okolí.

Lineární filtry typu dolní propust se využívají pro potlačení vysokých frekvencí tedy zejména pro redukci nežádoucího šumu v obrazu. Může se jednat o šum s Gaussovým rozložením, o šum typu sůl a pepř, aditivní, multiplikativní, bílý šum atd. Jednou možností redukce šumu je prosté průměrování. Při této metodě zaniká šum o velikosti zvoleného okolí průměrování. Velikost okolí musí být vždy volena tak, aby nebyly filtrovány malé detaily v obrazu. Nutnou nevýhodou takové filtrace je, že rozmazává i ostré hrany objektů. Konvoluční maska pro prosté průměrování a pro průměrování se zvýrazněným středem vypadá následovně.

Charakteristickou vlastností lineárního filtru typu dolní propust je, že součet koeficientů je roven 1, naopak součet koeficientů lineárního filtru typu horní propust je vždy rovna 0 (viz např. hranové detektory).

Druhou třídou filtrů jsou filtry nelineární, mezi které patří pro zpracování obrazu zejména medián, filtr minima a filtr maxima. Narozdíl od lineárních filtrů nestanovuje nelineární filtr výstupní hodnotu jako lineární kombinaci vstupních hodnot obrazu, ale podle jiného algoritmu vybírá některou z hodnot ve stanoveném okolí. Názorným příkladem je minimální resp. maximální hodnota z okolí u filtru typu minimum (někdy eroze) resp. maximum (někdy dilatace - pozor, neplést s morfologickými operacemi dilatace a eroze). U filtru typu medián je odezva stanovena jako hodnota ležící uprostřed seřazené posloupnosti okolních hodnot filtrovaného bodu. Obecnou nevýhodou mediánové filtrace je porušování tenkých čar.

Speciální možností používanou při zpracování obrazu je filtrace rotující maskou. V tomto případě je zvolená maska rotována kolem filtrovaného bodu a pro každou její pozici je spočítána míra homogenity jako např. součet diferencí. Filtrace se pak provádí jen pro jednu polohu masky, pro níž je míra homogenity nejvyšší. Takto je nalezeno to okolí bodu, které k němu patří s největší pravděpodobností. Filtrace rotující maskou tedy částečně řeší problémy s rozmazáváním a porušováním tenkých čar a ostrých rohů, nevýhodou je však vyšší časová náročnost výpočtu.

Pomocí výše uvedených filtrů lze realizovat i operaci ostření obrazu, které má za cíl zvýraznit všechny hrany vyskytující se v obrazu. Používá obdobně jako hranové detektory aproximaci první derivace a definiční vztah pro úpravu ostrosti obrazu lze napsat následovně.

Symbol g(x,y) představuje výstupní ostřený obraz vstupního obrazu f(x,y), symbol C je míra ostření <0.0,1.0> a symbol S(x,y) strmost obrazové funkce v okolí vyšetřovaného bodu. Operaci ostření lze provést také pomocí konvoluce s jádrem podobným Laplaceově hranovému detektoru, ale s opačnými znaménky. Filtr vždy musí zvýraznit hodnotu aktuálního pixelu a potlačit hodnoty pixelů okolních, do jaké míry je to provedeno určuje koeficient C.

B) Úkoly

  1. Napište funkci [J] = ImageAverage(I,sizeN) realizující filtr pro redukci šumu v obrazu metodou průměrování pro velikosti jádra 3x3, 5x5 a 7x7 dané parametrem sizeN.

  2. Napište funkci [J] = ImageMedian(I,sizeN) realizující filtr pro redukci šumu v obrazu metodou mediánu pro velikost jádra 3x3, 5x5 a 7x7 dané parametrem sizeN.

  3. Na obrazu [lenaM.bmp] ověřte správnost implementace obou funkcí, porovnejte jejich rychlost pro všechny tři velikosti jádra a výsledky přehledně zobrazte v jednom okně.

  4. Seznamte se s knihovní funkcí imnoise, která přidává do obrazu šum a na obrazu [lenaM.bmp] srovnejte všech pět implementovaných typů šumu (viz help imnoise). Pomocí funkcí vytvořených v prvních dvou bodech se pokuste šum odstranit, zobrazte výsledek a komentujte rozdíly mezi funkcí pro průměrování a medián.

  5. Napište dvě funkce [J] = ImageMinimum(I,sizeN) resp. [J] = ImageMaximum(I,sizeN) pro nelineární filtraci obrazu realizující filtr minimum resp. maximum s parametrem velikosti okolí sizeN. Správnost implementace ověřte na obrazu [obraz07.bmp] a společně s původním snímkem zobrazte výsledky obou funkcí. Z výsledků odvoďte, k čemu lze tyto filtry v praxi použít.

C) Dobré vědět

  • Součet koeficientů konvolučního jádra pro ostření obrazu se musí stejně jako v případě hranových detektorů vždy rovnat nule.

  • Povolené funkce: imread, clock, etime, imnoise

  • Nepovolené funkce: mean, sort, median, min, max

D) Ilustrace výsledků