### 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 Filters → Generic → Convolution Matrix….

#### 9.2.3. Options

Obrázek 17.182. „Convolution matrix“ options

Presets, „Input Type“, Clipping, Blending Options, Preview, Merge filter, Split view

  | 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.183. Border examples

  Source image

  Clamp border

  None border

  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.184. Sharpen

Obrázek 17.185. Blur

Obrázek 17.186. Vylepšení hran

Obrázek 17.187. Detekce hran

Obrázek 17.188. Reliéf

9. Obecné filtry |  | 9.3. Distance Map

Report a bug in GIMP Report a documentation error