Grafické filtre založené na twist matrix. Všeobecné pojmy filtrovania obrazu

  • 28.06.2019

Mnohé prístupy k vylepšeniu obrazu spadajú do dvoch kategórií: techniky spracovania priestorovej domény (priestorové techniky) a techniky spracovania frekvenčnej domény (techniky frekvenčnej domény). Priestorová doména sa týka súboru pixelov, ktoré tvoria obraz. Funkcia predspracovania v priestorovej doméne je napísaná ako

kde f(X, r) - vstupný obrázok,

g(X, r) - výstupný (spracovaný) obrázok,

h- operátor funkcie f definované v niektorom regióne ( X, r).

Operácie tohto druhu patria do všeobecnej triedy operácie na susedných prvkoch... Tieto operácie sú hlavnými nástrojmi pre nízkoúrovňové spracovanie obrazu alebo priestorové spracovanie obrazu.

Hlavný prístup pri určovaní okolia bodu ( X, r) je použitie štvorcovej alebo obdĺžnikovej oblasti časti obrazu so stredom v bode ( X, r). Stred tejto časti obrázka sa presúva z pixelu na pixel, počnúc napríklad od ľavého horného rohu. Navyše získať g(X, r) operátor sa používa pre každú pozíciu ( X, r). Zatiaľ čo sa niekedy používajú iné susedné tvary (napríklad kruh), uprednostňujú sa štvorcové tvary pre ich jednoduchú implementáciu.

Jedna z najpoužívanejších metód priestorovej domény je založená na použití filtrov (konvolučné masky, šablóny, okná). Zvyčajne je maska ​​filtra malý (napríklad rozmer 3 * 3) dvojrozmerný systém, ktorého koeficienty sú zvolené tak, aby detekovali danú vlastnosť obrazu (obr. 1.5, a).

Ryža. 1.5: a - filtračná maska; b - koeficienty masky filtra

Ak množstvá w 1 ,w 2 ,…,w 9 sú koeficienty, masky pixelov ( X, r) a jeho ôsmich susedov (obrázok 1.5, b), potom môže byť algoritmus reprezentovaný tak, že vykonáva nasledujúcu operáciu v okolí 3 * 3 bodov (X, r) :

V širšom zmysle sa pod úlohou filtrovania obrazu rozumie každý postup spracovania obrazu, pri ktorom sa na vstup postupu privádza rastrový obraz a na výstupe sa vytvára rastrový obraz. Častejšie sa však pod pojmom „filtrácia“ chápe tzv zasekávanie filtrácia... Hlavným účelom filtrovania šumu je spracovať obrázky tak, aby výsledok bol vhodnejší z hľadiska konkrétnej aplikácie. Vo všeobecnom prípade je možné rozlišovať linkové filtre(antialiasingové filtre, filtre na zvýšenie kontrastu, rozdielové filtre) a nelineárne filtre(stredný filter).

Tu je stručný popis najbežnejších metód filtrovania.

Nízkopriepustný filter- tlmí vysokofrekvenčné komponenty a zvyšuje úlohu nízkofrekvenčných komponentov. Frekvencia použitá na obrázky odráža množstvo detailov v obrázku. Kolísanie jasu, šum a šum sú príklady vysokofrekvenčných prvkov v obraze. Vyhladzovanie obrazu je implementované pomocou nasledujúcich jadier:

,

,

.

Vysokopriepustný filter- tlmí nízkofrekvenčné zložky v obraze a zosilňuje úlohu vysokofrekvenčných zložiek. Vysokopriepustné filtre sa používajú na zvýraznenie detailov, ako sú obrysy, okraje, alebo na doostrenie obrazu. Každý skok v jase a každý obrys predstavuje intenzívny detail spojený so zvýšenými frekvenciami. Výber vysokofrekvenčných komponentov sa vykonáva pomocou nasledujúcich jadier:

,

,

.

Operátor Roberts. Robertsov operátor je príkladom nelineárneho filtra. Transformácia každého pixelu pomocou Robertsovho krížového operátora môže zobraziť deriváciu obrázka pozdĺž nenulovej uhlopriečky a kombináciu týchto transformovaných obrázkov možno tiež vidieť ako gradient od dvoch horných pixelov k dvom spodným. Robertsov operátor sa používa z dôvodu výpočtovej rýchlosti, ale v porovnaní s alternatívami stráca v dôsledku značného problému citlivosti na šum. Vytvára čiary, ktoré sú tenšie ako iné metódy výberu okrajov.

Na spracovaní sa podieľajú štyri pixely umiestnené nasledovne (obr. 1.6).

Ryža. 1.6. Pixely zapojené do spracovania operátorom Roberts

Odpoveď operátora Roberts:

Konvolučné jadrá v tomto prípade budú vyzerať takto:

,

.

Konvolúcia pre každé jadro sa vypočíta samostatne. Odozvou tohto filtra je množstvo

, (1.17)

kde P a Q- odozva jadier H 1 a H 2 .

Niekedy, ako operátor Roberts, berieme množstvo
.

Operátor Sobel. Sobelov operátor sa používa v algoritmoch detekcie hraníc. Je to diskrétny diferenciálny operátor, ktorý vypočítava približnú hodnotu gradientu jasu obrazu. Výsledkom aplikácie Sobelovho operátora v každom bode obrázka je buď vektor gradientu jasu v tomto bode, alebo jeho norma. Metóda vylepšenia hrán pomocou Sobelovho operátora berie do úvahy dve rôzne konvolučné jadrá:

Na základe týchto konvolúcií sa vypočíta veľkosť a smer hrán. Konvolúcia pre každé jadro sa vypočíta samostatne. Odozvou tohto filtra je množstvo

, (1.19)

kde P a Q- odozva jadier H 1 a H 2 .

Niekedy, ako operátor Sobel, odoberáme množstvo
.

Operátor Prewitt. Prewittov operátor pôsobí podobne ako operátor Sobel. Prewittov detektor hraníc je vhodnou metódou na odhad veľkosti a orientácie hranice. Zatiaľ čo diferenciálny gradientový detektor vyžaduje prácny výpočet odhadov orientácie vo veľkostiach vo vertikálnom a horizontálnom smere, Prewittov hraničný detektor udáva smer priamo z jadra s maximálnym výsledkom. Metóda zvýraznenia hrán využívajúca Prewittov operátor berie do úvahy dve rôzne konvolučné jadrá:

Výsledkom práce operátora Prewitt je

, (1.21)

kde P a Q- odozva jadier H 1 a H 2 .

Laplaceov operátor. Diskrétny Laplaceov operátor sa často používa pri spracovaní obrazu, napríklad pri extrakcii hraníc alebo v aplikáciách odhadu pohybu. Diskrétny Laplacián je definovaný ako súčet druhých derivácií a je vypočítaný ako súčet rozdielov v susedoch centrálneho pixelu. Laplaceova metóda vylepšenia hrán berie do úvahy množstvo rôznych konvolučných jadier. Tu sú niektoré z nich:

Ako vidíte, súčet prvkov matíc sa rovná nule, takže odozva filtra môže byť záporná. V tomto prípade sa hodnota odozvy berie modulo. V dôsledku spracovania sú oblasti s konštantnou alebo lineárne rastúcou intenzitou čierne a oblasti s rýchlo sa meniacimi hodnotami intenzity sú jasne zvýraznené.

Nižšie sú uvedené niektoré priestorové procesy, ktoré nespadajú do kategórie konvolúcie a možno ich použiť na elimináciu rôznych typov hluku.

Harmonický priemerný filter... Harmonický priemer radu
vypočítané podľa vzorca

. (1.23)

Počas procesu filtrovania sa hodnota aktuálneho pixelu obrázka nahradí hodnotou
sady deviatich hodnôt pixelov vrátane aktuálnych a susedných.

Min- filter. Počas procesu filtrovania sa hodnota aktuálneho pixelu nahradí minimálnou hodnotou susedných pixelov. Takže napríklad pre jadro s dimenziou 3 budeme mať:

Max- filter. Počas procesu filtrovania je hodnota aktuálneho pixelu nahradená maximálnou hodnotou susedných pixelov (analogicky s predchádzajúcim filtrom).

Min- Max- filter. V procese filtrovania je hodnota aktuálneho pixelu obrázka najprv nahradená minimálnou hodnotou susedných pixelov a pri opakovanom prechode na maximum.

Stredný filter. Filtrovanie priemeru používa hodnoty prvkov obsiahnutých v oblasti susedstva na určenie novej hodnoty. Filter usporiada prvky susedstva v zoradenom poradí a získa priemernú hodnotu. Takže napríklad pre jadro s dimenziou 3 bude stredná hodnota piata:

Pomocou techník priestorového spracovania obrazu možno získať množstvo zaujímavých efektov. Tu sú niektoré z nich.

Efekt razenia. Pomocou operácie konvolúcie môžete implementovať transformáciu, ktorá dáva efekt embosovania na obrázku.

(1.24)

Binárny „pseudopoltónový“ obrázok. Pôvodný obrázok sa spracuje pomocou masky D2 alebo D4: ak je hodnota pixelu menšia ako proporcionálna hodnota zodpovedajúceho prvku masky, potom sa vynuluje, v opačnom prípade sa mu priradí 255. Maska sa vloží na obrázok bez prekrývania. Masky D2 a D4:

,

.

Pri použití priestorových procesov môžu vzniknúť nasledujúce otázky súvisiace so zvláštnosťami spracovania pixelov:

    Eliminácia okrajových efektov;

    Hodnota odozvy je mimo rozsahu.

Pre prvú otázku sú možné tieto riešenia:

    Vylúčte okrajové pixely v obrázku z konverzie

v tomto prípade bude výstupný obrázok menší, alebo budú pixely okraja prelakované napríklad čiernou farbou;

    Nezahŕňajte zodpovedajúci pixel do súčtu, rovnomerne rozdeľte jeho váhu medzi ostatné pixely v susedstve;

    Doplňte (doplňte) pôvodný obrázok pridaním požadovaného počtu pixelov pozdĺž okraja. Počet dokončených riadkov stĺpcov spravidla závisí od veľkosti jadra. Tu sú možné dve možnosti:

    • Predefinujte hodnoty pixelov mimo hraníc obrázka pomocou extrapolácie. Napríklad uvažujte konštantnú hodnotu intenzity blízko hranice alebo považujte za konštantnú gradient intenzity blízko hranice;

      Predefinujte hodnoty pixelov mimo hraníc obrázka pomocou zrkadlového odrazu.

Na vyriešenie problémov spojených s hodnotou mimo rozsahu sú možné nasledujúce akcie:

    Škálujte získané hodnoty na pozitívne reakcie filtra;

    Pri zápornej odozve filtra vezmite buď absolútnu hodnotu (modulo), alebo ju znížte na nulu.

Aj v tejto časti stojí za to uviesť možnú „klasifikáciu“ šumu na obrázku:

    Šum soli a korenia - náhodné biele a čierne pixely;

    Impulzný šum - náhodné biele pixely;

    Gaussov šum je kolísanie intenzity rozdelené podľa normálneho zákona.

Tento článok hovorí nielen o najbežnejších filtroch na spracovanie obrazu, ale v zrozumiteľnej forme popisuje algoritmy pre ich prácu. Článok je určený predovšetkým programátorom zaoberajúcim sa spracovaním obrazu.

Konvolučná matica

Existuje mnoho filtrov využívajúcich konvolučnú maticu, hlavné z nich budú popísané nižšie.

Konvolučná matica je matica koeficientov, ktorá sa „vynásobí“ hodnotou pixelov obrázka, aby sa dosiahol požadovaný výsledok.

Nižšie je uvedená aplikácia konvolučnej matice:

div je koeficient normalizácie, takže priemerná intenzita zostane nezmenená.

V príklade je matica 3x3, hoci veľkosť môže byť väčšia.

Rozmazaný filter

Najbežnejšie používaným filtrom na báze konvolučnej matice je filter rozostrenia.

Matica je zvyčajne vyplnená podľa normálneho (Gaussovho) zákona. Nižšie je matica rozmazania 5x5 vyplnená Gaussovým rozložením.

Koeficienty sú už normalizované, takže div pre túto maticu je jedna.

Sila rozmazania závisí od veľkosti matrice.

Za zmienku stoja okrajové podmienky (tento problém je relevantný pre všetky maticové filtre). Ľavý horný pixel nemá napravo od seba „suseda“, preto nemáme čím násobiť koeficient matice.

Existujú 2 riešenia tohto problému:

I. Aplikovanie filtra len na "okno" obrázku, ktoré má súradnice ľavého horného rohu a na pravý dolný. kernelSize - veľkosť matice; šírka, výška - veľkosť obrázku.

Toto nie je najlepší spôsob, keďže filter nie je aplikovaný na celý obrázok. V tomto prípade kvalita veľmi trpí, ak je veľkosť filtra veľká.

II. Druhý spôsob (doplnenie) vyžaduje vytvorenie medziobrazu. Cieľom je vytvoriť dočasný obrázok s rozmermi (šírka + 2 Veľkosť jadra / 2, výška + 2 Veľkosť jadra / 2). Vstupný obrázok sa skopíruje do stredu obrázka a okraje sa vyplnia vonkajšími pixelmi obrázka. Rozmazanie sa aplikuje na strednú vyrovnávaciu pamäť a potom sa z nej načíta výsledok.

Táto metóda nemá žiadne nevýhody v kvalite, ale je potrebné vykonať zbytočné výpočty.

Gaussov filter rozostrenia má zložitosť O (hi wi n * n), kde hi, wi sú veľkosť obrázka, n je veľkosť matice (jadra filtra). Tento algoritmus je možné optimalizovať s prijateľnou kvalitou.

Štvorcové jadro (maticu) možno nahradiť dvoma jednorozmernými: horizontálnymi a vertikálnymi. Pre veľkosť jadra 5 budú vyzerať takto:

Filter sa aplikuje v 2 prechodoch: najprv horizontálne a potom vertikálne podľa výsledku (alebo jedno otočenie).

Zložitosť tohto algoritmu bude O (hi wi n) + O (ahoj wi n) = 2 O (ahoj wi * n), ktorá je rýchlejšia ako tradičná metóda štvorcovej matice pre veľkosti jadra väčšie ako dve.

Filter na ostrenie

Ak chcete zlepšiť prehľadnosť, musíte použiť nasledujúcu maticu:

Táto matica zvyšuje rozdiel v hodnotách na hraniciach. Div pre túto maticu je 1.

GIMP má filter Convolution Matrix, ktorý uľahčuje nájdenie transformácie matrice, ktorú potrebujete.

Viac informácií o filtroch založených na konvolučnej matici nájdete v článku „Grafické filtre založené na rolovacej matici“.

Stredný filter

Stredný filter sa bežne používa na zníženie šumu alebo „vyhladenie“ obrazu.

Filter pracuje s maticami rôznych veľkostí, ale na rozdiel od konvolučnej matice veľkosť matice ovplyvňuje iba počet príslušných pixelov.

Algoritmus mediánu filtra je nasledovný: Pre aktuálny pixel sa zoradia pixely, ktoré „spadajú“ do matice, a vyberie sa priemerná hodnota zo zoradeného poľa. Táto hodnota je výstupom pre aktuálny pixel. Nižšie je uvedená práca stredného filtra pre veľkosť jadra tri.

Erozívne a nánosové filtre

Stavebné a erózne filtre sa používajú na získanie morfologickej expanzie alebo kontrakcie. Zjednodušene povedané, pre obrázky to znamená vybrať pixel s maximálnou alebo minimálnou intenzitou z okolia.

Tento článok hovorí nielen o najbežnejších filtroch na spracovanie obrazu, ale v zrozumiteľnej forme popisuje algoritmy pre ich prácu. Článok je určený predovšetkým programátorom zaoberajúcim sa spracovaním obrazu.

Konvolučná matica

Existuje mnoho filtrov využívajúcich konvolučnú maticu, hlavné z nich budú popísané nižšie.

Konvolučná matica je matica koeficientov, ktorá sa „vynásobí“ hodnotou pixelov obrázka, aby sa dosiahol požadovaný výsledok.
Nižšie je uvedená aplikácia konvolučnej matice:

Div je prideľovací koeficient, takže priemerná intenzita zostáva nezmenená.

V príklade je matica 3x3, hoci veľkosť môže byť väčšia.

Rozmazaný filter

Najbežnejšie používaným filtrom na báze konvolučnej matice je filter rozostrenia.

Matica je zvyčajne vyplnená podľa normálneho (Gaussovho) zákona. Nižšie je matica rozmazania 5x5 vyplnená Gaussovým rozložením.

Koeficienty sú už normalizované, takže div pre túto maticu je jedna.

Sila rozmazania závisí od veľkosti matrice.

Za zmienku stoja okrajové podmienky (tento problém je relevantný pre všetky maticové filtre). Ľavý horný pixel nemá napravo od seba „suseda“, preto nemáme čím násobiť koeficient matice.

Existujú 2 riešenia tohto problému:

1. Filter aplikujte len na „okno“ obrázka, ktoré má súradnice ľavého horného rohu a na pravý dolný. kernelSize - veľkosť matice; šírka, výška - veľkosť obrázku.

Toto nie je najlepší spôsob, keďže filter nie je aplikovaný na celý obrázok. V tomto prípade kvalita veľmi trpí, ak je veľkosť filtra veľká.

2. Druhý spôsob (doplnenie) vyžaduje vytvorenie medziobrazu. Cieľom je vytvoriť dočasný obrázok s rozmermi (šírka + 2 * kernelSize / 2, výška + 2 * kernelSize / 2). Vstupný obrázok sa skopíruje do stredu obrázka a okraje sa vyplnia vonkajšími pixelmi obrázka. Rozmazanie sa aplikuje na strednú vyrovnávaciu pamäť a potom sa z nej načíta výsledok.

Táto metóda nemá žiadne nevýhody v kvalite, ale je potrebné vykonať zbytočné výpočty.

Gaussov filter rozostrenia má zložitosť O (hi * wi * n * n), kde hi, wi sú veľkosti obrázkov, n je veľkosť matrice (jadro filtra). Tento algoritmus je možné optimalizovať s prijateľnou kvalitou.

Štvorcové jadro (maticu) možno nahradiť dvoma jednorozmernými: horizontálnymi a vertikálnymi. Pre veľkosť jadra 5 budú vyzerať takto:

Filter sa aplikuje v 2 prechodoch: najprv horizontálne a potom vertikálne podľa výsledku (alebo jedno otočenie).

Zložitosť tohto algoritmu bude O (hi * wi * n) + O (hi * wi * n) = 2 * O (hi * wi * n), čo je pre veľkosť jadra väčšiu ako dva rýchlejšie ako tradičný štvorec maticová metóda.

Filter na ostrenie

Ak chcete zlepšiť prehľadnosť, musíte použiť nasledujúcu maticu:

Táto matica zvyšuje rozdiel v hodnotách na hraniciach. Div pre túto maticu je 1.

GIMP má filter Convolution Matrix, ktorý uľahčuje nájdenie transformácie matrice, ktorú potrebujete.

Viac informácií o filtroch založených na konvolučnej matici nájdete v článku.

Stredný filter

Stredný filter sa bežne používa na zníženie šumu alebo „vyhladenie“ obrazu.

Filter pracuje s maticami rôznych veľkostí, ale na rozdiel od konvolučnej matice veľkosť matice ovplyvňuje iba počet príslušných pixelov.

Algoritmus mediánu filtra je nasledujúci:

Pre aktuálny pixel sa zoradia pixely, ktoré „spadnú“ do matice, a vyberie sa priemerná hodnota zo zoradeného poľa. Táto hodnota je výstupom pre aktuálny pixel.

Nižšie je uvedená práca stredného filtra pre veľkosť jadra tri.

Stavebné a erózne filtre sa používajú na získanie morfologickej expanzie alebo kontrakcie. Zjednodušene povedané, pre obrázky to znamená vybrať pixel s maximálnou alebo minimálnou intenzitou z okolia.

V dôsledku nahromadenia dochádza k nárastu svetlých objektov a erózie - nárastu tmavých objektov.

Filter využíva vstupný obrázok a binárnu maticu. Binárna matica určuje tvar okolia. Zvyčajne je okolie okrúhle.

Build-up filter možno použiť na zvýšenie oslnenia, jasných odrazov.

Záver

Článok popisuje niektoré filtre na spracovanie obrazu, popisuje ich algoritmy a funkcie aplikácie.

Ako viete, existuje mnoho spôsobov, ako upraviť a upraviť obrázky pomocou digitálnych techník. Výsledok spracovania obrazu v tomto prípade závisí od toho, aké operácie môžete vykonávať s obrázkom potom, čo sa dostal do počítača: môžete upravovať RGB- farebné zložky na dosiahnutie najlepšieho vyváženia farieb. Pomocou rôznych grafických filtrov môžete zvýšiť alebo znížiť jas obrazu, upravovať jeho ostrosť či rozmazávať jednotlivé prvky. Pozrieme sa na mimoriadne obľúbené efekty bežne používané v počítačovej grafike:

  • Inverzia farieb.
  • Rozmazať.
  • Ostrenie.
  • Razenie.
  • Akvarelový efekt.

Matrix - jadro konvolúcie

Ak vezmeme do úvahy tieto efekty z algoritmického hľadiska, neuvidíme nič zložité: tieto efekty sú vytvorené pomocou matice čísel. Táto matica sa nazýva jadro konvolúcie.

Táto matica ( 3x3) obsahuje tri riadky s tromi číslami. Na transformáciu obrazového pixelu sa vynásobí hodnotou v strede jadra a hodnoty pixelov okolo daného sa vynásobia zodpovedajúcimi koeficientmi jadra, po ktorých sa všetky hodnoty spočítajú. hore a získame novú hodnotu pre premennú pixel. Tento proces sa musí vykonávať postupne s každým pixelom upravovaného obrázka.

Ako sa upravený obrázok zmení, závisí od koeficientov jadra. Na dosiahnutie niektorých efektov je potrebné na obrázok postupne aplikovať nie jednu, ale niekoľko matíc.

Inverzia farieb

Toto je najjednoduchší spôsob úpravy obrázka: nepotrebujeme ani maticu. Potrebujeme len zmeniť farebné zložky na ich opačné (podrobnejšie pri implementácii filtra v ďalšej časti kapitoly).

Algoritmus rozmazania

Aby sme rozmazali obraz, musíme si načítať hodnoty do pamäte RGB-zložky farby každého pixelu. Potom sa jadro rozmazania použije na všetky zložky farby všetkých pixelov upravovaného obrázka:
Obrázok 1. Matica pre filter "Rozmazanie".

Aby bolo možné určiť farbu pixelu umiestneného pod stredom jadra, je potrebné vynásobiť váhové koeficienty jadra zodpovedajúcimi hodnotami farby upraveného obrázka. Potom sú výsledky zhrnuté.

Výsledný obrázok je v porovnaní s originálom „rozmazaný“, pretože farba každého spracovaného pixelu sa „rozloží“ medzi susedné pixely.

Ak chcete zvýšiť jadro rozmazania, môžete:

  • použite väčšie jadro (takto sa farba rozloží medzi väčší počet susedných pixelov);
  • meniť koeficienty tak, aby sa znížil vplyv centrálneho koeficientu;
  • filtrovať obrázok viac ako raz;

Algoritmus ostrenia

Na vytvorenie efektu doostrenia postupujeme podľa rovnakého algoritmu, ale používame iné jadro, keďže teraz je naším cieľom obraz zaostriť. Jadro G naostriť:
Obrázok 2. Matica pre filter "Sharpening".
Rovnako ako v predchádzajúcom prípade spracovávame oddelene RGB-komponenty, po ktorých tvoríme farebné hodnoty spracovávaného pixelu. Záporné váhy sa používajú na zvýšenie kontrastu medzi stredovým pixelom a jeho susedmi.

Výsledný obrázok je teda ostrejší ako originál. Ďalšie detaily v podstate nepochádzajú z ničoho – je to len zvýšený kontrast medzi farbami pixelov.

Algoritmus razenia

Razenie sa vykonáva podobným spôsobom, ale v tomto prípade nepoužívame jednu matricu, ale niekoľko.
Obrázok 3.1 Matica pre filter „Reliéf“: prvý krok.
Zatiaľ čo jadrá rozmazania a zaostrenia mali súčet koeficientov rovný jednej, v tomto prípade je súčet váh v jadre razenia rovný 0 ... Ak súčet kurzov nie je rovnaký 0 , dostaneme odchýlku pre konkrétnu farbu.

Výsledná hodnota farby bude dodatočne spracovaná (spriemerovaná) a zredukovaná na rozsah 0-255 (ďalšie podrobnosti môžete vidieť pri implementácii tohto filtra). Zmena hodnôt pozícií 1 a -1 , môžeme získať opačný smer zvýraznenia.
Obrázok 3.2. Matica pre filter „Emboss“: druhý krok.

Akvarelový algoritmus

Názov akvarelového filtra hovorí sám za seba: výsledný obrázok bude vyzerať ako namaľovaný akvarelom. V prvej fáze použitia tohto filtra vyhladíme farby upraveného obrázka.
Obrázok 4.1. Matrica pre filter "Efekt akvarelu": prvý krok.
V ďalšom kroku doostríme prechody na dotvorenie akvarelového efektu.
Obrázok 4.2. Matrica pre filter "Efekt akvarelu": krok dva.
To je všetko. Miernou úpravou parametrov matice môžeme získať ostrejší aj hladší akvarelový efekt. br />

Tento článok hovorí nielen o najbežnejších filtroch na spracovanie obrazu, ale v zrozumiteľnej forme popisuje algoritmy pre ich prácu. Článok je určený predovšetkým programátorom zaoberajúcim sa spracovaním obrazu.

Konvolučná matica

Existuje mnoho filtrov využívajúcich konvolučnú maticu, hlavné z nich budú popísané nižšie.

Konvolučná matica je matica koeficientov, ktorá sa „vynásobí“ hodnotou pixelov obrázka, aby sa dosiahol požadovaný výsledok.
Nižšie je uvedená aplikácia konvolučnej matice:

Div je prideľovací koeficient, takže priemerná intenzita zostáva nezmenená.

V príklade je matica 3x3, hoci veľkosť môže byť väčšia.

Rozmazaný filter

Najbežnejšie používaným filtrom na báze konvolučnej matice je filter rozostrenia.

Matica je zvyčajne vyplnená podľa normálneho (Gaussovho) zákona. Nižšie je matica rozmazania 5x5 vyplnená Gaussovým rozložením.

Koeficienty sú už normalizované, takže div pre túto maticu je jedna.

Sila rozmazania závisí od veľkosti matrice.

Za zmienku stoja okrajové podmienky (tento problém je relevantný pre všetky maticové filtre). Ľavý horný pixel nemá napravo od seba „suseda“, preto nemáme čím násobiť koeficient matice.

Existujú 2 riešenia tohto problému:

1. Filter aplikujte len na „okno“ obrázka, ktoré má súradnice ľavého horného rohu a na pravý dolný. kernelSize - veľkosť matice; šírka, výška - veľkosť obrázku.

Toto nie je najlepší spôsob, keďže filter nie je aplikovaný na celý obrázok. V tomto prípade kvalita veľmi trpí, ak je veľkosť filtra veľká.

2. Druhý spôsob (doplnenie) vyžaduje vytvorenie medziobrazu. Cieľom je vytvoriť dočasný obrázok s rozmermi (šírka + 2 * kernelSize / 2, výška + 2 * kernelSize / 2). Vstupný obrázok sa skopíruje do stredu obrázka a okraje sa vyplnia vonkajšími pixelmi obrázka. Rozmazanie sa aplikuje na strednú vyrovnávaciu pamäť a potom sa z nej načíta výsledok.

Táto metóda nemá žiadne nevýhody v kvalite, ale je potrebné vykonať zbytočné výpočty.

Gaussov filter rozostrenia má zložitosť O (hi * wi * n * n), kde hi, wi sú veľkosti obrázkov, n je veľkosť matrice (jadro filtra). Tento algoritmus je možné optimalizovať s prijateľnou kvalitou.

Štvorcové jadro (maticu) možno nahradiť dvoma jednorozmernými: horizontálnymi a vertikálnymi. Pre veľkosť jadra 5 budú vyzerať takto:

Filter sa aplikuje v 2 prechodoch: najprv horizontálne a potom vertikálne podľa výsledku (alebo jedno otočenie).

Zložitosť tohto algoritmu bude O (hi * wi * n) + O (hi * wi * n) = 2 * O (hi * wi * n), čo je pre veľkosť jadra väčšiu ako dva rýchlejšie ako tradičný štvorec maticová metóda.

Filter na ostrenie

Ak chcete zlepšiť prehľadnosť, musíte použiť nasledujúcu maticu:

Táto matica zvyšuje rozdiel v hodnotách na hraniciach. Div pre túto maticu je 1.

GIMP má filter Convolution Matrix, ktorý uľahčuje nájdenie transformácie matrice, ktorú potrebujete.

Viac informácií o filtroch založených na konvolučnej matici nájdete v článku „Grafické filtre založené na rolovacej matici“.

Stredný filter

Stredný filter sa bežne používa na zníženie šumu alebo „vyhladenie“ obrazu.

Filter pracuje s maticami rôznych veľkostí, ale na rozdiel od konvolučnej matice veľkosť matice ovplyvňuje iba počet príslušných pixelov.

Algoritmus mediánu filtra je nasledujúci:

Pre aktuálny pixel sa zoradia pixely, ktoré „spadnú“ do matice, a vyberie sa priemerná hodnota zo zoradeného poľa. Táto hodnota je výstupom pre aktuálny pixel.

Nižšie je uvedená práca stredného filtra pre veľkosť jadra tri.

Stavebné a erózne filtre sa používajú na získanie morfologickej expanzie alebo kontrakcie. Zjednodušene povedané, pre obrázky to znamená vybrať pixel s maximálnou alebo minimálnou intenzitou z okolia.

V dôsledku nahromadenia dochádza k nárastu svetlých objektov a erózie - nárastu tmavých objektov.

Filter využíva vstupný obrázok a binárnu maticu. Binárna matica určuje tvar okolia. Zvyčajne je okolie okrúhle.

Build-up filter možno použiť na zvýšenie oslnenia, jasných odrazov.

Záver

Článok popisuje niektoré filtre na spracovanie obrazu, popisuje ich algoritmy a funkcie aplikácie.