7.2. Konvoluční matice

7.2.1. Přehled

Tento filtr naleznete v nabídce Obrázek>Filtry/Obecné/Konvoluční matice

Tento filtr je rájem matematiků. Mnoho filtrů interně používá konvoluční matici. S filtrem Konvoluční matice si ale můžete vytvořit filtr vlastní.

Co je konvoluční matice? Konvoluce je operace s maticí pomocí jiné matice zvané „jádro“. Jako první matice se používá obrázek určený k úpravě. Obrázek je vlastně dvojrozměrná pravoúhlá souřadnicová síť pixelů. Použité jádro závisí na požadovaném efektu.

GIMP používá matice 5×5 nebo 3×3. Zde budeme uvažovat pouze o maticích 3×3, jsou nejpoužívanější a obvykle dostačující pro všechny požadované efekty. Pokud jsou všechny krajní hodnoty jádra nastaveny na nulu, bude systém považovat jádro za matici typu 3×3.

Filtr postupně zpracovává všechny pixely obrázku. Pro každý z nich vynásobí hodnotu aktuálního pixelu a jeho osmi sousedních pixelů odpovídajícími hodnotami jádra. Výseldné hodnoty pak sečte a výsledek je pak hodnotou přiřazenou aktuálnímu pixelu.

Jednoduchý příklad:

Vlevo je matice obrázku: každý pixel je popsán svou hodnotou. Aktuální pixel je vyznačen červeně. Oblast, se kterou jádro pracuje, je označena zeleně. Uprostřed obrázku je jádro a vpravo je výsledek konvoluce.

Stalo se následující: filtr úpostupně zleva doprava a shora dolů načte všechny pixely z oblasti, se kterou jádro pracuje. Hodnotu každého takového pixelu vynásobí příslušnou hodnotou jádra a výsledky sečte: (100*0)+(50*1)+(50*0)*(100*0)+(100*0)+(100*0)+(100*0)+(100*0)+(100*0)+(100*0) = 50. Aktuální pixel tk získá hodnotu 50. Filtr nepracuje přímo s obrázkem, ale s jeho kopií. Výsledkem tohoto filtru bude proto posun o pixelů o jeden pixel dolů.

7.2.2. Volby

Matice

Jaderná matice 5×5: hodnoty zapisujte přímo do jednotlivých polí.

Dělitel: Výsledek předchozího výpočtu bude vydělen tímto číslem. Většinou nebudete používat 1. která ponechá výzledek beze změny, ale 9 nebo 25, podle velikosti matice.

Posun: Tato hodnota je k výsledku přičtena. Je užitečná v případě záporných výsledků. Posun ale může být také záporný.

Obvod

Když je aktuální pixel na okraji, je část jádra mimo obrázek. Je třeba se rozhodnout, co má v takovém případě filtr dělat:

  • Rozšířit: tato část jádra se nebere v potaz.

  • Ohýbání: tato část jádra použije pixely z druhé strany obrázku, takže pixely z jedné strany se objeví na druhé straně.

  • Ořez: Pixely na krajích nejsou modifikovány, ale ořezány.

Kanály

Zde můžete zvolit jeden nebo více kanálů, s ekterými bude filtr pracovat.

Automatické

Pokud je tato volba aktivní, je dělitel výsledkem konvoluce. Pokud je tento výsledek nulový (nulou nelze dělit), je použit posun o velikosti 128. Pokud je záporný (záporná barva není možná), je použit posun o velikosti 255 (invertuje výsledek).

Vážená alfa

Pokud není tato volba zvolena, nebere filtr v úvahu průhlednost, což může vést k artefaktům při rozmazávání.

7.2.3. Příklady

Návrh jader je založen na složité matematice. Hotová jádra ale můžete nalézt na webu. Zde je několik příkladů:

Zaostření
Rozmazání
Vylepšení hran
Detekce hran
Reliéf