Imagens e processamento de imagens

Concluído

Observação

Consulte a guia Texto e imagens para obter mais detalhes!

Para um computador, uma imagem é uma matriz de valores numéricos de pixels . Por exemplo, considere a seguinte matriz:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

A matriz consiste em sete linhas e sete colunas, representando os valores de pixel para uma imagem de 7x7 pixels (que é conhecida como resolução da imagem). Cada pixel tem um valor entre 0 (preto) e 255 (branco); com valores entre esses limites representando tons de cinza. A imagem representada por esta matriz é semelhante à seguinte imagem (ampliada):

Diagrama de uma imagem em tons de cinza.

A matriz de valores de pixel para esta imagem é bidimensional (representando linhas e colunas, ou coordenadas x e y ) e define um único retângulo de valores de pixel. Uma única camada, como esta, de valores de pixel representa uma imagem em tons de cinza. Na realidade, a maioria das imagens digitais são multidimensionais e consistem em três camadas (conhecidas como canais) que representam tons de cores vermelho, verde e azul (RGB). Por exemplo, podemos representar uma imagem colorida definindo três canais de valores de pixel que criam a mesma forma quadrada do exemplo anterior em tons de cinza:

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

Aqui está a imagem resultante:

Diagrama de uma imagem colorida.

Os quadrados roxos são representados pela combinação:

Red: 150 
Green: 0 
Blue: 255 

Os quadrados amarelos no centro são representados pela combinação:

Red: 255
Green: 255
Blue: 0

Filtros

Uma maneira comum de executar tarefas de processamento de imagem é aplicar filtros que modificam os valores de pixel da imagem para criar um efeito visual. Um filtro é definido por uma ou mais matrizes de valores de pixel, denominadas kernels de filtro. Por exemplo, você pode definir filtro com um kernel 3x3 como mostrado neste exemplo:

-1 -1 -1
-1  8 -1
-1 -1 -1

O kernel é então convolvido sobre a imagem, calculando uma soma ponderada para cada bloco 3x3 de pixels e atribuindo o resultado a uma nova imagem. É mais fácil entender como a filtragem funciona explorando um exemplo passo a passo.

Vamos começar com a imagem em tons de cinza que exploramos anteriormente:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

Primeiro, aplicamos o kernel do filtro ao patch superior esquerdo da imagem, multiplicando cada valor de pixel pelo valor de peso correspondente no kernel e adicionando os resultados:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

O resultado (-255) torna-se o primeiro valor em uma nova matriz. Em seguida, movemos o kernel do filtro ao longo de um pixel para a direita e repetimos a operação:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

Novamente, o resultado é adicionado à nova matriz, que agora contém dois valores:

-255  -510

O processo é repetido até que o filtro tenha sido envolvido em toda a imagem, como mostrado nesta animação:

Diagrama de um filtro.

O filtro é convolvido na imagem, calculando uma nova matriz de valores. Alguns dos valores podem estar fora do intervalo de valores de 0 a 255 pixels, portanto, os valores são ajustados para se encaixarem nesse intervalo. Devido à forma do filtro, a borda externa dos pixels não é calculada, portanto, um valor de preenchimento (geralmente 0) é aplicado. A matriz resultante representa uma nova imagem na qual o filtro transformou a imagem original. Neste caso, o filtro teve o efeito de destacar as bordas das formas na imagem.

Para ver o efeito do filtro com mais clareza, aqui está um exemplo do mesmo filtro aplicado a uma imagem real:

Imagem Original Imagem filtrada
Fotografia de um cão. Fotografia de um cão com um filtro de Laplace aplicado.

Como o filtro está envolvido em toda a imagem, esse tipo de manipulação de imagem é frequentemente chamado de filtragem convolucional. O filtro usado neste exemplo é um tipo específico de filtro (chamado filtro Laplace ) que destaca as bordas dos objetos em uma imagem. Há muitos outros tipos de filtro que você pode usar para criar desfoque, nitidez, inversão de cor e outros efeitos.