Obecné pojmy filtrování obrazu. Popis nástroje Image Processing Toolbox

Rozmanitost přístupů ke zlepšení obrazu spadá do dvou kategorií: metody zpracování v prostorové oblasti (prostorové metody) a metody zpracování ve frekvenční oblasti (frekvenční metody). Prostorová doména se týká souboru pixelů, které tvoří obraz. Funkce předběžného zpracování prostorové domény je zapsána jako

Kde F(x, y) – vstupní obrázek,

G(x, y) – výstupní (zpracovaný) obrázek,

h– operátor funkce F, definovaný v nějaké doméně ( x, y).

Operace tohoto typu patří do obecné třídy operace na sousedních prvcích. Tyto operace jsou hlavními nástroji pro nízkoúrovňové zpracování obrazu nebo zpracování obrazu v prostorové doméně.

Hlavní přístup k určení okolí bodu ( x, y) je použití čtvercové nebo obdélníkové oblasti části obrazu se středem v bodě ( x, y). Střed této části obrázku se pohybuje od pixelu k pixelu, počínaje například od levého horního rohu. Zároveň získat G(x, y) operátor se používá pro každou pozici ( x, y). Ačkoli se někdy používají jiné tvary sousedství (jako je kruh), upřednostňují se čtvercové tvary kvůli jejich snadné implementaci.

Jedna z nejpoužívanějších metod prostorové domény je založena na použití filtrů (konvoluční masky, šablony, okna). Typicky je maska ​​filtru malý (například rozměr 3*3) dvourozměrný systém, jehož koeficienty jsou voleny tak, aby detekovaly danou vlastnost obrazu (obr. 1.5, a).

Rýže. 1.5: a – filtrační maska; b – koeficienty masky filtru

Pokud hodnoty w 1 ,w 2 ,…,w 9 představuje koeficienty, masky pixelů ( x, y) a jeho osmi sousedů (obr. 1.5, b), pak lze algoritmus reprezentovat jako provádění následující operace na okolí 3*3 bodů (x, y) :

Problémem filtrování obrazu v širokém slova smyslu se rozumí jakákoli procedura zpracování obrazu, ve které je jako vstup do procedury dodáván rastrový obraz a jako výstup je generován rastrový obraz. Častěji se však „filtrováním“ rozumí tzv rušení filtrování. Hlavním cílem filtrování šumu je zpracovat snímky tak, aby výsledek byl vhodnější z pohledu konkrétní aplikace. Obecně můžeme rozlišovat lineární filtry(vyhlazovací filtry, filtry pro zvýšení kontrastu, rozdílové filtry) a nelineární filtry(střední filtr).

Zde je stručný popis nejběžnějších metod filtrování.

Nízkopropustný filtr– zeslabuje vysokofrekvenční složky a posiluje úlohu nízkofrekvenčních. Frekvence při aplikaci na obrázky odráží množství detailů přítomných v obrázku. Náhlé změny jasu, interference a šum jsou příklady vysokofrekvenčních prvků v obraze. Vyhlazení obrazu je implementováno pomocí následujících jader:

,

,

.

Vysokopropustný filtr– zeslabuje nízkofrekvenční složky v obraze a posiluje roli vysokofrekvenčních. High-pass filtry se používají ke zvýraznění detailů, jako jsou obrysy, okraje, nebo k doostření obrazu. Každý skok v jasu a každý obrys představuje intenzivní detail spojený se zvýšenými frekvencemi. Izolace vysokofrekvenčních komponent se provádí pomocí následujících jader:

,

,

.

Robertsův kameraman. Robertsův operátor je příkladem nelineárního filtru. Transformace každého pixelu pomocí Robertsova křížového operátoru může zobrazit derivaci obrázku podél nenulové úhlopříčky a kombinaci těchto transformovaných obrázků lze také chápat jako gradient od dvou horních pixelů ke dvěma spodním. Robertsův operátor se používá pro výpočetní rychlost, ale je horší než alternativy kvůli značnému problému citlivosti na hluk. Vytváří jemnější čáry než jiné metody zvýraznění okrajů.

Na zpracování se podílejí čtyři pixely umístěné následovně (obr. 1.6).

Rýže. 1.6. Pixely zapojené do zpracování operátorem Roberts

Odpověď operátora Robertse:

Konvoluční jádra v tomto případě budou vypadat takto:

,

.

Konvoluce pro každé jádro se vypočítá samostatně. Odezvou tohoto filtru je hodnota

, (1.17)

Kde P A Q– odezva jader H 1 a H 2 .

Někdy množství
.

Sobelův operátor. Sobelův operátor se používá v algoritmech detekce hran. Jedná se o diskrétní diferenciální operátor, který vypočítává přibližnou hodnotu gradientu jasu obrazu. Výsledkem aplikace Sobelova operátoru v každém bodě obrázku je buď vektor gradientu jasu v tomto bodě, nebo jeho norma. Metoda zvýraznění hran využívající Sobelův operátor uvažuje dvě různá konvoluční jádra:

Na základě těchto konvolucí se vypočítá velikost a směr hran. Konvoluce pro každé jádro se vypočítá samostatně. Odezvou tohoto filtru je hodnota

, (1.19)

Kde P A Q– odezva jader H 1 a H 2 .

Někdy množství
.

Prewittův kameraman. Operátor Prewitt funguje podobně jako operátor Sobel. Prewittův hraniční detektor je vhodnou metodou pro odhad velikosti a orientace hranic. Zatímco diferenciální gradientní detektor vyžaduje časově náročný výpočet odhadů orientace z veličin ve vertikálním a horizontálním směru, Prewittův hranový detektor udává směr přímo od jádra s maximálním výsledkem. Metoda zvýraznění hran pomocí Prewittova operátoru bere v úvahu dvě různá konvoluční jádra:

Výsledek operátora Prewitt je

, (1.21)

Kde P A Q– odezva jader H 1 a H 2 .

Laplaceův operátor. Diskrétní Laplaceův operátor se často používá při zpracování obrazu, jako je extrakce hran nebo aplikace odhadu pohybu. Diskrétní Laplacián je definován jako součet druhých derivací a je vypočítán jako součet rozdílů v sousedech centrálního pixelu. Laplaceova metoda vylepšení hran bere v úvahu řadu různých konvolučních jader. Zde jsou některé z nich:

Jak vidíte, součet prvků matice je nulový, takže odezva filtru může být záporná. V tomto případě se odezva bere modulo. V důsledku zpracování se oblasti s konstantní nebo lineárně rostoucí intenzitou zčernají a oblasti s rychle se měnícími hodnotami intenzity jsou jasně zvýrazněny.

Níže jsou uvedeny některé prostorové procesy, které nespadají do kategorie konvoluce a lze je použít k odstranění různých typů hluku.

Harmonický střední filtr. Harmonický průměr řady
vypočítané podle vzorce

. (1.23)

Během procesu filtrování je hodnota aktuálního obrazového bodu nahrazena hodnotou
sady hodnot pro devět pixelů, včetně aktuálních a sousedních.

Min– filtr. Během procesu filtrování je hodnota aktuálního pixelu nahrazena minimální hodnotou sousedních pixelů. Takže například pro jádro dimenze 3 budeme mít:

Max– filtr. Během procesu filtrování je hodnota aktuálního pixelu nahrazena maximální hodnotou sousedních pixelů (podobně jako u předchozího filtru).

Min- Max-filtr. Během procesu filtrování je hodnota aktuálního pixelu v obrázku nejprve nahrazena minimální hodnotou sousedních pixelů a při dalším průchodu maximální hodnotou.

Mediánový filtr. Filtrování průměru používá hodnoty prvků obsažených v přilehlé oblasti k určení nové hodnoty. Filtr uspořádá prvky sousední oblasti v seřazeném pořadí a vybere průměrnou hodnotu. Takže například pro jádro dimenze 3 bude střední hodnota pátá:

Pomocí metod prostorového zpracování obrazu lze dosáhnout řady zajímavých efektů. Pojďme si některé z nich uvést.

Embossovací efekt. Pomocí operace konvoluce můžete implementovat transformaci, která dodá obrazu efekt embosování.

(1.24)

Binární „pseudo-půltónový“ obrázek. Původní obrázek je zpracován pomocí masky D2 nebo D4: pokud je hodnota pixelu menší než proporcionální hodnota odpovídajícího prvku masky, pak je nastavena na nulu, jinak je mu přiřazeno 255. Maska je aplikována na obrázek bez překrývání . Masky D2 a D4:

,

.

Při použití prostorových procesů mohou vyvstat následující otázky související se zvláštnostmi zpracování pixelů:

    Eliminace okrajových efektů;

    Hodnota odezvy je mimo limity.

U první otázky jsou možná následující řešení:

    Vyloučit pixely ohraničení obrázku z převodu

v tomto případě bude mít výstupní obrázek menší velikost nebo budou pixely ohraničení namalovány například černě;

    Nezahrnujte odpovídající pixel do součtu, rovnoměrně rozložte jeho váhu mezi ostatní pixely v okolí;

    Doplňte (dokončete) původní obrázek přidáním požadovaného počtu pixelů podél okraje. Počet sloupců, které mají být přidány, obvykle závisí na velikosti jádra. Zde jsou dvě možnosti:

    • Určete hodnoty pixelů mimo hranice obrázku pomocí extrapolace.

      Uvažujme například hodnotu intenzity blízko hraniční konstanty nebo uvažujme gradient intenzity v blízkosti hraniční konstanty;

Definujte hodnoty pixelů mimo hranice obrazu pomocí zrcadlení.

    Chcete-li vyřešit problémy spojené s hodnotou přesahující limity, jsou možné následující akce:

    Škálujte získané hodnoty pro pozitivní odezvy filtru;

Pokud je odezva filtru záporná, vezměte buď absolutní hodnotu (modulo), nebo ji snižte na nulu.

    Také v této části stojí za to uvést možnou „klasifikaci“ šumu na obrázku:

    Šum soli a pepře - náhodné bílé a černé pixely;

    Impulzní šum – náhodné bílé pixely;

Gaussův šum je kolísání intenzity rozložené podle normálního zákona.

Pravidla filtrování mohou být velmi různorodá. Filtrování obrazu je jednou z nejzákladnějších operací počítačového vidění, rozpoznávání vzorů a zpracování obrazu. Práce velké většiny metod zpracování obrazu začíná tím či oním filtrováním zdrojových obrázků.

Lineární filtry mají velmi jednoduchý matematický popis. Budeme předpokládat, že je dán původní polotónový obraz A, a intenzity jeho pixelů označíme jako A(x, y). Lineární filtr je definován funkcí reálné hodnoty h (jádro filtru) definovanou na rastru. Samotné filtrování se provádí pomocí operace diskrétní konvoluce (vážená sumace):

B(x, y) = h(i, j) ③③A(x, y) = h(i, j) A(x-i, y-j). (17.3.1)

Výsledkem je obrázek B. Typicky je jádro filtru nenulové pouze v nějakém okolí N bodu (0, 0). Mimo toto okolí se h(i, j) rovná nule nebo je jí velmi blízké a lze je zanedbat. Součet je nad (i, j)  N a hodnota každého pixelu B(x, y) je určena pixely obrázku A, které leží v okně N se středem v bodě (x, y) (označeném množina N(x, y) ). Jádro filtru definované na pravoúhlém sousedství N lze vidět jako matici m x n, kde délky stran jsou lichá čísla. Když zadáváte jádro jako matici, mělo by být vystředěno. Pokud se pixel (x, y) nachází v blízkosti okrajů obrazu, pak souřadnice A(x-i, y-j) pro určité (i, j) mohou odpovídat neexistujícím pixelům A mimo obraz. Tento problém lze vyřešit několika způsoby.

Vyhněte se filtrování těchto pixelů oříznutím okrajů obrázku B nebo použitím původních hodnot obrázku A na jejich hodnoty.

Nezahrnujte chybějící pixel do součtu, rozdělte jeho váhu h(i, j) rovnoměrně mezi ostatní pixely v okolí N(x, y).

Určete hodnoty pixelů mimo hranice obrázku pomocí extrapolace.

Definujte hodnoty pixelů za hranicemi obrázku pomocí zrcadlového pokračování obrázku.

Výběr metody se provádí s ohledem na specifické vlastnosti filtru a obrazu.

Anti-aliasingové filtry. Nejjednodušší obdélníkový vyhlazovací filtr o poloměru r je specifikován pomocí matice velikosti (2r+1) × (2r+1), jejíž všechny hodnoty se rovnají 1/(2r+1) 2 a součtu hodnota se rovná jedné. Jedná se o dvourozměrný analog nízkoprůchodového jednorozměrného filtru ve tvaru U s klouzavým průměrem. Při filtrování s takovým jádrem je hodnota pixelu nahrazena průměrnou hodnotou pixelů ve čtverci se stranou 2r+1 kolem. Příklad masky filtru 3×3:

.

Jedním z použití filtrů je redukce šumu. Šum se liší pixel od pixelu nezávisle a za předpokladu, že matematické očekávání hodnoty šumu je nula, šum sousedních pixelů se při sečtení vzájemně vyruší. Čím větší je okno filtrování, tím nižší bude průměrná intenzita šumu, dojde však také k odpovídajícímu rozmazání výrazných detailů obrazu. Obraz bílého bodu na černém pozadí během filtrace (reakce na jeden impuls) bude stejnoměrně šedý čtverec.

Redukce šumu pomocí obdélníkového filtru má značnou nevýhodu: všechny pixely v masce filtru v jakékoli vzdálenosti od zpracovávaného mají na výsledek stejný vliv. O něco lepšího výsledku dosáhnete úpravou filtru zvýšením hmotnosti centrálního bodu:

.

Účinnější redukce šumu lze dosáhnout, pokud se s rostoucí vzdáleností od zpracovávaného snižuje vliv pixelů na výsledek. Gaussův filtr s jádrem má tuto vlastnost: h(i, j) = (1/2 2) exp(-(i 2 +j 2)/2   Gaussův filtr má nenulovou hodnotu jádro nekonečné velikosti Hodnoty Jádro filtru však klesá velmi rychle k nule, jak se vzdalujeme od bodu (0, 0), a proto se v praxi můžeme omezit na konvoluci s malým oknem kolem (0, 0). , například vezmeme-li poloměr okna rovný 3σ.

Gaussovské filtrování je také vyhlazování. Na rozdíl od obdélníkového filtru však bude obraz bodu s Gaussovým filtrováním symetrickým rozmazaným bodem, s jasem klesajícím od středu k okrajům. Míra rozmazání obrazu je určena parametrem σ.

Filtry pro zvýšení kontrastu . Zatímco antialiasingové filtry snižují místní kontrast obrazu jeho rozmazáním, filtry zvyšující kontrast mají opačný účinek a jsou v podstatě filtry s vysokou prostorovou frekvencí. Jádro kontrastního filtru v bodě (0, 0) má hodnotu větší než 1, s celkovým součtem hodnot rovným 1. Například filtry zvyšující kontrast jsou filtry s jádrem definovaným maticemi :

. .

Příklad použití filtru je na Obr. 17.3.1. Efektu zvýšení kontrastu je dosaženo díky skutečnosti, že filtr zvýrazňuje rozdíl mezi intenzitami sousedních pixelů a tyto intenzity od sebe oddaluje. Tento efekt bude tím silnější, čím větší bude hodnota centrálního členu jádra. Charakteristickým artefaktem lineárního filtrování zvyšujícího kontrast je patrné světlo a méně nápadné tmavé halo kolem hranic.

Rozdílové filtry – jedná se o lineární filtry specifikované diskrétními aproximacemi diferenciálních operátorů (metodou konečných diferencí). Tyto filtry hrají zásadní roli v mnoha aplikacích, například při hledání hran v obraze.

Nejjednodušší diferenciální operátor je derivace vzhledem k x-ové souřadnici d/dx, která je definována pro spojité funkce. Obvyklými variantami podobných operátorů pro diskrétní obrázky jsou filtry Prewitt a Sobel:

. .

Filtry, které aproximují derivační operátor d/dy na souřadnici y, se získají transpozicí matic.

Nejjednodušší algoritmus pro výpočet normy gradientu ze tří sousedních bodů:

G(x, y) =
.

Používá se také zjednodušený výpočetní vzorec:

Výpočet normy gradientu přes čtyři sousední body (operátor Roberts):

Sobelův algoritmus používá osm vzorků jasu v blízkosti centrálního bodu:

G(x, y) =
, G(x, y) 
,

Gx x, y = [ A x -1, y -1 +2 A x -1, y + A x -1, y +1 ] - [ A x +1, y -1 +2 A x +1, y + A x +1, y +1 ],

Gy x,y = - .

Spolu s přesnějším určením normy gradientu umožňuje Sobelův algoritmus určit směr vektoru gradientu v rovině analýzy obrazu ve vizuálním úhlu  mezi vektorem gradientu a směrem řádků matice:

(x, y) = argtg(Gy x,y /Gx x,y).

Na rozdíl od vyhlazovacích a kontrastních filtrů, které nemění průměrnou intenzitu obrazu, výsledkem aplikace rozdílových operátorů je obvykle obraz s průměrnou hodnotou pixelu blízkou nule. Vertikální rozdíly (ohraničení) původního obrázku odpovídají pixelům s velkými hodnotami modulu ve výsledném obrázku. Rozdílové filtry se proto také nazývají filtry výběru hranic objektu.

Podobně jako výše uvedené filtry lze filtry pro jiné diferenciální operátory konstruovat pomocí metody konečných rozdílů. Zejména diferenciální Laplaceův operátor (Laplacián) = 𝝏 2 /𝝏x 2 + 𝝏 2 /𝝏y 2, který je důležitý pro mnoho aplikací, lze aproximovat pro diskrétní obrázky pomocí filtru s maticí (jedna z možností ):

.

Jak je vidět na Obr. 17.3.2, v důsledku použití diskrétního Laplacianu, velké absolutní hodnoty odpovídají jak vertikálním, tak horizontálním rozdílům jasu. Filtr je tedy filtr, který najde hranice libovolné orientace. Nalezení hranic v obrázku lze provést použitím tohoto filtru a odebráním všech pixelů, jejichž absolutní hodnota přesahuje určitou prahovou hodnotu.

Takový algoritmus má však značné nevýhody. Tou hlavní je nejistota při volbě prahové hodnoty. Pro různé části obrazu se obvykle získá přijatelný výsledek s výrazně odlišnými prahovými hodnotami. Rozdílové filtry jsou navíc velmi citlivé na obrazový šum.

Dvourozměrná cyklická konvoluce. Stejně jako u jednorozměrných signálů lze dvourozměrnou konvoluci provádět v prostorové frekvenční doméně pomocí rychlých algoritmů Fourierovy transformace a násobení dvourozměrných spekter obrazu a jádra filtru. Je také cyklický a obvykle se provádí v posuvné verzi. Vezmeme-li v úvahu cykličnost, pro výpočet konstantního vzoru spektra jádra se rozměry masky filtru jádra zdvojnásobí podél os a vyplní se nulami a stejné rozměry masky se použijí pro výběr okna klouzajícího po obrázku, ve kterém FFT se provádí. Implementace FIR filtru pomocí FFT je zvláště účinná, pokud má filtr velkou referenční plochu.

Nelineární filtry . V digitálním zpracování obrazu se k obnově obrazů poškozených různými modely šumu široce používají nelineární algoritmy založené na statistikách pořadí. Umožňují vyhnout se dodatečnému zkreslení obrazu při odstraňování šumu a také výrazně zlepšují výsledky filtrů na snímcích s vysokou mírou šumu.

Představme si koncept M-okolí obrazového prvku A(x, y), který je pro toto okolí centrální. V nejjednodušším případě M-okolí obsahuje N-pixelů - bodů spadajících do masky filtru, včetně (nebo nezahrnuje) centrální. Hodnoty těchto N-prvků mohou být uspořádány do variační řady V(r), řazeny vzestupně (nebo sestupně) a určité momenty této řady lze vypočítat, například průměrná hodnota jasu m N a rozptyl dN. Výstupní hodnota filtru, který nahrazuje centrální vzorek, se vypočítá pomocí vzorce:

B(x, y) = A(x, y) + (1-)m N .

(17.3.2)

Hodnota koeficientu  je spojena určitou závislostí se statistikou vzorků v okně filtru, např.:

d N /(d N + k d S), (17.3.3)

kde d S je rozptyl šumu v obraze jako celku nebo v S-okolí pro S > M a MS, k je konstanta spolehlivosti pro rozptyl S-okolí. Jak vyplývá z tohoto vzorce, pro k = 1 a d N  d S nastává   0,5 a hodnota B(x, y) = (A(x, y) + m N)/2, tzn. se sčítají rovnoměrně z hodnot centrálního vzorku a průměrné hodnoty pixelů jeho M-okolí. S rostoucími hodnotami d N roste příspěvek hodnoty centrální reference k výsledku a s poklesem roste hodnota m N. Váhu příspěvku průměrných hodnot v M-okolí lze měnit hodnotou koeficientu k.

Volba statistické funkce a povaha závislosti koeficientu  na ní může být značně různorodá (např. podle rozptylu rozdílů ve vzorcích v M-okolí s centrálním vzorkem), a závisí jak na velikost otvoru filtru a na povaze snímků a šumu. Hodnota koeficientu  by v podstatě měla specifikovat stupeň poškození centrálního vzorku a tím i výpůjční funkci pro jeho korekci vzorků z M sousedství.

Nejjednodušší a nejběžnější typy nelineárních filtrů pro zpracování obrazu jsou prahové a mediánové filtry. Prahová filtrace

se uvádí například takto:

B(x, y) = Velikost p

je prahová hodnota filtrování. Pokud hodnota centrálního bodu filtru překročí průměrnou hodnotu vzorků m N v jeho M-okolí o prahovou hodnotu, pak je nahrazena průměrnou hodnotou. Prahová hodnota může být buď konstantní, nebo funkčně závislá na hodnotě centrálního bodu. Mediánové filtrování

je definován takto:

těch. výsledkem filtrování je střední hodnota pixelů okolí, jehož tvar je určen maskou filtru. Mediánové filtrování může účinně odstranit šum z obrazu, který nezávisle ovlivňuje jednotlivé pixely. Takovým rušením jsou například „rozbité“ pixely při digitální fotografii, „sněžný“ šum, když jsou některé pixely nahrazeny pixely s maximální intenzitou atd. Výhodou středního filtrování je, že „horký“ pixel na tmavém pozadí bude nahrazen tmavým, místo aby byl „rozmazaný“ po celé oblasti.

Mediánové filtrování má výraznou selektivitu s ohledem na prvky pole, které jsou nemonotónní složkou sekvence čísel v otvoru filtru. Mediánový filtr zároveň ponechává monotónní složku sekvence beze změny. Díky této funkci mediánové filtry s optimálně zvolenou clonou zachovávají ostré hranice objektů bez zkreslení, potlačují nekorelovaný nebo slabě korelovaný šum a malé detaily.

Extrémní filtry se určují podle pravidel:

B min (x, y) = min (M(x, y)),

B max (x, y) = max (M(x, y)),

těch. výsledkem filtrování jsou minimální a maximální hodnoty pixelů v masce filtru. Takové filtry se obvykle používají pro binární obrázky.

Tento článek pojednává nejen o nejběžnějších filtrech pro zpracování obrazu, ale přehlednou formou popisuje i algoritmy pro jejich provoz. Článek je určen především programátorům zabývajícím se zpracováním obrazu.

Konvoluční matice

Existuje mnoho filtrů využívajících konvoluční matici, ty hlavní budou popsány níže.

Konvoluční matice je matice koeficientů, která se „vynásobí“ hodnotou pixelu obrázku, aby se dosáhlo požadovaného výsledku.
Níže je aplikace konvoluční matice:

Div je normalizační koeficient, takže průměrná intenzita zůstává nezměněna.

V příkladu je matice 3x3, i když velikost by mohla být větší.

Rozostření filtru

Nejčastěji používaným filtrem založeným na konvoluční matici je filtr rozostření.

Obvykle je matice vyplněna podle normálního (Gaussova zákona). Níže je matice rozostření 5x5 vyplněná podle Gaussova distribučního zákona.

Koeficienty jsou již normalizovány, takže div pro tuto matici je jedna.

Síla rozostření závisí na velikosti matrice.

Za zmínku stojí okrajové podmínky (tento problém je relevantní pro všechny maticové filtry). Levý horní pixel nemá napravo „souseda“, takže nemáme čím násobit maticový koeficient.

Existují 2 řešení tohoto problému:

1. Použití filtru pouze na „okno“ obrázku, které má souřadnice pro levý horní roh a pro pravý dolní roh. kernelSize – velikost matice; šířka, výška – velikost obrázku.

Toto není nejlepší metoda, protože filtr není aplikován na celý obrázek. Pokud je velikost filtru velká, kvalita dost trpí.

2. Druhý způsob (přidávání) vyžaduje vytvoření meziobrazu. Cílem je vytvořit dočasný obrázek s rozměry (šířka + 2 * kernelSize / 2, výška + 2 * kernelSize / 2). Vstupní obraz je zkopírován do středu obrazu a okraje jsou vyplněny nejvzdálenějšími pixely obrazu. Rozostření se aplikuje na mezilehlou vyrovnávací paměť a poté se z ní extrahuje výsledek.

Tato metoda nemá žádné nedostatky v kvalitě, ale vyžaduje zbytečné výpočty.

Gaussův filtr rozostření má složitost O(hi * wi * n * n), kde hi, wi jsou rozměry obrázku, n je velikost matice (jádra filtru). Tento algoritmus lze optimalizovat s přijatelnou kvalitou.

Čtvercové jádro (matrice) lze nahradit dvěma jednorozměrnými: horizontálním a vertikálním. Pro jádro velikosti 5 budou vypadat takto:

Filtr se aplikuje ve 2 průchodech: nejprve vodorovně a poté svisle na výsledek (nebo naopak).

Složitost tohoto algoritmu bude O(hi * wi * n) + O(hi * wi * n) = 2 * O(hi * wi * n), což je pro velikost jádra větší než dva rychlejší než tradiční čtverec. maticová metoda.

Filtr ostrosti

Pro zlepšení přehlednosti použijte následující matici:

Tato matice zvyšuje rozdíl hodnot na hranicích. Div pro tuto matici je 1.

GIMP má filtr Convolution Matrix, který usnadňuje nalezení transformace matice, kterou potřebujete.

Podrobnější informace o filtrech založených na konvoluční matici naleznete v článku.

Mediánový filtr

Mediánový filtr se obvykle používá ke snížení šumu nebo "vyhlazení" obrazu.

Filtr pracuje s maticemi různých velikostí, ale na rozdíl od konvoluční matice ovlivňuje velikost matice pouze počet uvažovaných pixelů.

Algoritmus středního filtru je následující:

Pro aktuální pixel se seřadí pixely, které „spadnou“ do matice, a vybere se průměrná hodnota ze setříděného pole. Tato hodnota je výstupem pro aktuální pixel.

Níže je uvedena práce středního filtru pro velikost jádra tři.

Růstové a erozní filtry slouží k získání morfologické expanze, resp. Zjednodušeně to pro obrázky znamená výběr pixelu s maximální nebo minimální intenzitou z okolí.

V důsledku narůstání se světlé objekty zvětšují a eroze má za následek zvětšení tmavých objektů.

Filtr používá vstupní obrázek a binární matici. Binární matice určuje tvar okolí. Okolí má obvykle kruhový tvar.

Build-up filtr lze použít ke zvýšení jasů a jasných odrazů.

Závěr

Článek popsal některé filtry pro zpracování obrazu, popsal jejich algoritmy a vlastnosti aplikace.

Většinu zpracování obrazu lze provést bez opakování statistické analýzy popsané v předchozí části pro každý nový snímek. Omezené množství apriorních informací se ukazuje jako zcela dostačující. Řekněme, že známe matici společných výskytů pro „ideální“ obrázek a chceme zlepšit kvalitu zašuměné verze tohoto obrázku. Pokud jsou největší prvky matice umístěny na hlavní diagonále nebo v její blízkosti, znamená to, že většina pixelů má stejnou barvu jako sousední pixely. Pokud chceme histogram takového snímku vyrovnat, pak, jak je uvedeno v kap. 3.2, je vhodné použít pravidlo 3. Pokud je potřeba eliminovat šum, pak nahrazením hodnoty každého pixelu zašuměného obrázku nějakým váženým součtem hodnot sousedních pixelů snížíte variabilitu hodnot sousedních pixelů a získáme obrázek bližší originálu (viz příklad 3.5). Dostáváme se tedy ke vztahu charakterizujícímu vztah mezi původním obrázkem a filtrovaným obrázkem:

Proces, který provádí tuto operaci, se nazývá lineární filtr, konkrétně filtr klouzavého průměru, protože nahrazuje hodnotu každého pixelu nějakým průměrem hodnot sousedních prvků. Pokud se váhová funkce v rámci obrázku nemění a nezávisí na souřadnicích x, y, lze rovnici (3.2) přepsat do následující podoby:

Tento proces se nazývá prostorově invariantní filtr. Tyto filtry jsou široce používány při zpracování časových signálů, ale vhodnost jejich použití při zpracování obrazu není zřejmá. Rovnice (3.3) je zjednodušena při zápisu pomocí Fourierovy transformace. Může být zobrazen (viz kap.

Výsledkem použití takového filtru je potlačení některých frekvencí a posílení jiných v závislosti na H(i,

Příklad 3.5. Pokud potřebujete vyčistit obraz od vysokofrekvenčního šumu, pak k provedení takového vyhlazení můžete použít následující typ funkce

Výsledek použití filtru lze posoudit porovnáním rozdílů v hodnotách sousedních pixelů před a po filtraci, ukazují to zejména nejjednodušší výpočty

Označíme-li maximem absolutního rozdílu hodnot sousedních pixelů původního obrázku a odpovídajícím rozdílem pixelů filtrovaného obrázku, pak z rovnice (36) vyplývá

těch. Je zřejmé, že tento rozdíl nemůže narůstat pouze v případech, kdy maximální rozdíl hodnot pixelů je několikanásobně větší než maximální rozdíl hodnot pro dvojici pixelů, tzn. když je nějaká lineární funkce jeho argumentů V opačném případě se zadaný rozdíl sníží a oblasti obrazu získají homogennější charakter Protože se obvykle použití takového jednoduchého filtru ukáže jako nedostatečné k odstranění šumu uchýlit se k použití filtru vyššího řádu Jednou z možných implementací takového filtru je Boring jednoduchý filtr a jeho opakovaná aplikace na obrázek Obrázky 39 a 310 ukazují výsledky filtrování na Obr. 3.10a ukazuje původní obrázek získaný z obrázku zobrazeného na obr. 3 9, superponováním gaussovského bílého šumu na druhý, na obr. Obrázek 3.10 b ukazuje výsledky osminásobné aplikace filtru specifikovaného rovnicí (3 5). Není těžké vidět, že tento proces vede nejen k odstranění vysokofrekvenčního šumu, ale také způsobuje rozmazání hran. obraz

Rýže. 3.9 (viz sken) Původní obrázek použitý pro...

Pokud totiž aplikujeme rovnici (3.6) na jasně definovaný okraj obrázku

ukazuje se, že

Jinými slovy, rozdíl v hodnotách sousedních pixelů byl poloviční a to přirozeně vedlo ke snížení kontrastu obrazu

Výsledky použití tohoto filtru lze také posoudit uvažováním Fourierovy transformace funkce

Použijeme rovnici (34)

Tento výraz lze zjednodušit pomocí identity

a poté provedením nejjednodušších goniometrických transformací má výraz (3 8) ve výsledku následující podobu

Tento článek pojednává nejen o nejběžnějších filtrech pro zpracování obrazu, ale přehlednou formou popisuje i algoritmy pro jejich provoz. Článek je určen především programátorům zabývajícím se zpracováním obrazu.

Konvoluční matice

Existuje mnoho filtrů využívajících konvoluční matici, ty hlavní budou popsány níže.

Konvoluční matice je matice koeficientů, která se „vynásobí“ hodnotou pixelu obrázku, aby se dosáhlo požadovaného výsledku.
Níže je aplikace konvoluční matice:

div je normalizační koeficient, takže průměrná intenzita zůstane nezměněna.

V příkladu je matice 3x3, i když velikost by mohla být větší.

Rozostření filtru

Nejčastěji používaným filtrem založeným na konvoluční matici je filtr rozostření.

Obvykle je matice vyplněna podle normálního (Gaussova zákona). Níže je matice rozostření 5x5 vyplněná podle Gaussova distribučního zákona.


Koeficienty jsou již normalizovány, takže div pro tuto matici je jedna.

Síla rozostření závisí na velikosti matrice.


Za zmínku stojí okrajové podmínky (tento problém je relevantní pro všechny maticové filtry). Levý horní pixel nemá napravo „souseda“, takže nemáme čím násobit maticový koeficient.

Existují 2 řešení tohoto problému:

1. Použití filtru pouze na „okno“ obrázku, které má souřadnice pro levý horní roh a pro pravý dolní roh. kernelSize – velikost matice; šířka, výška – velikost obrázku.

Toto není nejlepší metoda, protože filtr není aplikován na celý obrázek. Pokud je velikost filtru velká, kvalita dost trpí.

2. Druhá metoda vyžaduje vytvoření meziobrazu. Cílem je vytvořit dočasný obrázek s rozměry (šířka + 2 * kernelSize / 2, výška + 2 * kernelSize / 2). Vstupní obraz je zkopírován do středu obrazu a okraje jsou vyplněny nejvzdálenějšími pixely obrazu. Rozostření se aplikuje na mezilehlou vyrovnávací paměť a poté se z ní extrahuje výsledek.


Tato metoda nemá žádné nedostatky v kvalitě, ale vyžaduje zbytečné výpočty.

Gaussův filtr rozostření má složitost O(hi * wi * n * n), kde hi, wi jsou rozměry obrázku, n je velikost matice (jádra filtru). Tento algoritmus lze optimalizovat s přijatelnou kvalitou.

Čtvercové jádro (matrice) lze nahradit dvěma jednorozměrnými: horizontálním a vertikálním. Pro jádro velikosti 5 budou vypadat takto:

Filtr se aplikuje ve 2 průchodech: nejprve vodorovně a poté svisle na výsledek (nebo naopak).

Složitost tohoto algoritmu bude O(hi * wi * n) + O(hi * wi * n) = 2 * O(hi * wi * n), což je pro velikost jádra větší než dva rychlejší než tradiční čtverec. maticová metoda.

Filtr ostrosti

Pro zlepšení přehlednosti použijte následující matici:

Tato matice zvyšuje rozdíl hodnot na hranicích. Div pro tuto matici je 1.


GIMP má filtr Convolution Matrix, který usnadňuje nalezení transformace matice, kterou potřebujete.

Podrobnější informace o filtrech založených na konvoluční matici naleznete v článku „Grafické filtry založené na konvoluční matici“.

Mediánový filtr

Mediánový filtr se obvykle používá ke snížení šumu nebo "vyhlazení" obrazu.

Filtr pracuje s maticemi různých velikostí, ale na rozdíl od konvoluční matice ovlivňuje velikost matice pouze počet uvažovaných pixelů.

Algoritmus středního filtru je následující:

Pro aktuální pixel se seřadí pixely, které „spadnou“ do matice, a vybere se průměrná hodnota ze setříděného pole. Tato hodnota je výstupem pro aktuální pixel.

Níže je uvedena práce středního filtru pro velikost jádra tři.


Růstové a erozní filtry slouží k získání morfologické expanze, resp. Zjednodušeně to pro obrázky znamená výběr pixelu s maximální nebo minimální intenzitou z okolí.


V důsledku narůstání se světlé objekty zvětšují a eroze má za následek zvětšení tmavých objektů.

Filtr používá vstupní obrázek a binární matici. Binární matice určuje tvar okolí. Okolí má obvykle kruhový tvar.

Build-up filtr lze použít ke zvýšení jasů a jasných odrazů.

Závěr

Článek popsal některé filtry pro zpracování obrazu, popsal jejich algoritmy a vlastnosti aplikace.




Nahoru