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ýsledné 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 tak 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ýsledek 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

Source, Rozšířit, Ohýbání, Ořez

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ů, se který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ů:

Obrázek 14.11. Zaostření

Zaostření
Zaostření

Obrázek 14.12. Rozmazání

Rozmazání
Rozmazání

Obrázek 14.13. Vylepšení hran

Vylepšení hran
Vylepšení hran

Obrázek 14.14. Detekce hran

Detekce hran
Detekce hran

Obrázek 14.15. Reliéf

Reliéf
Reliéf