9.2. Konvoluční matice

9.2.1. Overview

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.

GIMP uses 5×5 or 3×3 matrices. We will consider only 3×3 matrices, they are the most used and they are enough for all effects you want. If all border values of a kernel are set to zero, then system will consider it as a 3×3 matrix.

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.

9.2.2. Activating the Filter

This filter is found in the main menu under FiltersGenericConvolution Matrix….

9.2.3. Options

Obrázek 17.172. Convolution matrix options

„Convolution matrix“ options

Presets, Input Type, Clipping, Blending Options, Preview, Merge filter, Split view
[Poznámka] Poznámka

These options are described in 2 – „Common Features“.

Matice

This is the 5×5 kernel matrix: you enter wanted values directly into boxes.

Divisor

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.

Offset

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.

Channels

Here you can select which channels the filter should change.

Normalize

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).

Alpha-weighting

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

Obvod

When the initial pixel is on a border, a part of the kernel is outside the image. You have to decide what the filter should do:

Obrázek 17.173. Border examples

Border examples

Source image

Border examples

None border

Border examples

Clamp border

Border examples

Loop border


None

This part of the kernel is not taken into account.

Clamp

Pixels on borders are not modified, but they are cropped.

Loop

This part of the kernel will be affected by pixels of the opposite border, so pixels disappearing from one side reappear on the other side.

Black

Pixels on borders are changed to black.

White

Pixels on borders are changed to white.

9.2.4. 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 17.174. Sharpen

Sharpen
Sharpen

Obrázek 17.175. Blur

Blur
Blur

Obrázek 17.176. Vylepšení hran

Vylepšení hran
Vylepšení hran

Obrázek 17.177. Detekce hran

Detekce hran
Detekce hran

Obrázek 17.178. Reliéf

Reliéf
Reliéf