9.2. Matriz de convolução

9.2.1. Visão-geral

Este é um domínio dos matemáticos. Um grande número de filtros usa a matriz de convolução internamente - como os de desfocagem, nitidez, mapa de relevo, dentre outros. Com o filtro de matriz de convolução, se tiver imaginação para tal, você poderá criar um filtro personalizado.

O que é uma matriz de convolução? É possível ter uma ideia melhor disso sem precisar usar ferramentas matemáticas usadas por poucas pessoas. Convolução é o tratamento de uma matriz por outra chamada núcleo (kernel).

O filtro de Matriz de Convolução usa uma matriz primária, que é a imagem a ser tratada. Essa imagem é tratada como uma coleção bi-dimensional de pixels em coordenadas retangulares. O núcleo a ser usado vai depender do efeito desejado.

O GIMP usa matrizes 5x5 ou 3x3. Nós consideraremos aqui apenas matrizes 3x3, elas são as mais usadas e são o bastante para quase todos os efeitos que você desejar fazer. Se todos os valores das bordas de um kernel 5x5 forem marcados em zero, então o sistema irá considera-lo como uma matriz 3x3.

O filtro analisa cada pixel da imagem sucessivamente. Para cada um deles, que nós vamos chamar de pixel inicial, o valor desse pixel será multiplicado pelo valor dos 8 pixels ao redor do mesmo pelo valor correspondente na matriz núcleo. Esses nove valores são adicionados e se tornam o valor final daquele pixel. Esta operação é feita em cada um dos canais de cor, no caso de uma imagem RGB(A).

Um exemplo simples:

Na imagem da esquerda está a imagem matriz: cada pixel com seu valor próprio. O pixel inicial está entre as bordas vermelhas. O núcleo atua na área com bordas verdes. Na imagem do meio está o núcleo, e a direita é o resultado da convolução.

Isso é o que acontece: o filtro lê sucessivamente, da esquerda para a direita e de cima para baixo, todos os pixels da área de ação do núcleo. Ele multiplica o valor de cada um deles pelo valor correspondente do núcleo e depois soma os resultados. O pixel inicial se tornou um 42: (40*0)+(42*1)+(46*0) + (46*0)+(50*0)+(55*0) + (52*0)+(56*0)+(58*0) = 42. (o filtro não trabalha diretamente sobre a imagem, mas sim em uma cópia). Para o resultado ser visível, o pixel inicial foi movido para baixo do pixel resultante.

9.2.2. Ativando o filtro

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

9.2.3. Opções

Figura 17.175. Opções da Matriz de convolução

Opções da “Matriz de convolução”

Presets, Input Type, Clipping, Blending Options, Preview, Split view
[Nota] Nota

These options are described in Seção 2, “Common Features”.

Matriz

Essa é a matriz 5x5 do kernel: você digita os valores desejados diretamente nas caixas de texto.

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.

Deslocamento

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.

Canais

Here you can select which channels the filter should change.

Normalize

Se esta opção estiver marcada, o Divisor pegará o valor resultante da convolução. Se o resultado for zero (não é possível dividir por zero), então um valor de deslocamento de 128 será aplicado. Se ele for negativo (um valor de cor negativo não existe), então um valor de deslocamento de 255 será aplicado (o resultado será invertido).

Considerar pesos do canal alfa

Se esta opção não estiver marcada, então o filtro não levará em conta os valores do canal de transparência, o que pode criar alguns artefatos durante o processamento.

Borda

Quando o pixel inicial se localizar na borda da imagem, uma parte do núcleovai ficar fora da imagem. Você deve decidir se o filtro deve:

From left: source image, None border, Loop border, Clamp border

None

Esta parte do núcleo não será levada em conta.

Loop

Esta parte do núcleo vai examinar os pixels da borda oposta, o que fará com que pixels desapareçam de um lado e reapareçam do outro.

Clamp

Os pixels das bordas não serão modificados, mas sim recortados.

Black

Pixels on borders are changed to black.

White

Pixels on borders are changed to white.

9.2.4. Exemplos

A criação de núcleos é baseada em conhecimentos matemáticos, ou de ciência da computação, de alto nível. Você pode encontrar núcleos prontos na internet (procure pela expressão em inglês: Convolution kernel). Veja alguns exemplos:

Figura 17.176. Aguçar

Aguçar
Aguçar

Figura 17.177. Desfocar

Desfocar
Desfocar

Figura 17.178. Realçar bordas

Realçar bordas
Realçar bordas

Figura 17.179. Detectar bordas

Detectar bordas
Detectar bordas

Figura 17.180. Destacar relevo

Destacar relevo
Destacar relevo