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ů.
Here is what happened: the filter read successively, from left to right and from top to bottom, all the pixels of the kernel action area. It multiplied the value of each of them by the kernel corresponding value and added results. The initial pixel has become 42: (40*0)+(42*1)+(46*0) + (46*0)+(50*0)+(55*0) + (52*0)+(56*0)+(58*0) = 42. (the filter doesn't work on the image but on a copy). As a graphical result, the initial pixel moved a pixel downwards.
Poznámka | |
---|---|
These options are described in 2 – „Common Features“. |
Jaderná matice 5×5: hodnoty zapisujte přímo do jednotlivých polí.
The result of previous calculation will be divided by this divisor. You will hardly use anything else than 1, which leaves results unchanged, and 9 or 25 according to matrix size, which gives the average of pixel values. The divisor can only be changed when Normalize is unchecked.
This value is added to the division result. This is useful if result may be negative. This offset may be negative. It can only be changed when Normalize is unchecked.
Here you can select which channels the filter should change.
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).
Pokud není tato volba zvolena, nebere filtr v úvahu průhlednost, což může vést k artefaktům při rozmazávání.
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:
From left: source image, None border, Loop border, Clamp border
This part of kernel is not taken into account.
This part of kernel will study pixels of the opposite border, so pixels disappearing from one side reappear on the other side.
Pixels on borders are not modified, but they are cropped.
Pixels on borders are changed to black.
Pixels on borders are changed to white.