Por Victor Powell

Um kernel de imagem é uma pequena matriz usada para aplicar efeitos como os que você pode encontrar no Photoshop ou no Gimp, tais como embaçamento, nitidez, contorno ou gravação em relevo. Eles também são usados na aprendizagem da máquina para ‘extracção de características’, uma técnica para determinar as porções mais importantes de uma imagem. Neste contexto, o processo é referido mais geralmente como “convolução” (veja: redes neurais convolucionais.)

Para ver como elas funcionam, vamos começar inspecionando uma imagem em preto e branco. A matriz à esquerda contém números, entre 0 e 255, que correspondem ao brilho de um pixel em uma imagem de um rosto. A imagem grande e granulada foi explodida para facilitar a visualização; a última imagem tem o tamanho “real”.

Vamos aplicar o seguinte kernel 3×3 {{{selectedKernel}} à imagem de uma face de cima.

Below, para cada bloco de 3×3 pixels na imagem à esquerda, multiplicamos cada pixel pela entrada correspondente do kernel e depois pegamos a soma. Essa soma torna-se um novo pixel na imagem da direita. Passe o mouse sobre um pixel em qualquer uma das imagens para ver como seu valor é computado.

Uma sutileza deste processo é o que fazer ao longo das bordas da imagem. Por exemplo, o canto superior esquerdo da imagem de entrada tem apenas três vizinhos. Uma maneira de corrigir isto é estender os valores das bordas por um na imagem original, mantendo a nossa nova imagem do mesmo tamanho. Neste demo, nós ignoramos esses valores tornando-os pretos.

Aqui está um playground onde você pode selecionar diferentes matrizes de kernel e ver como elas afetam a imagem original ou construir seu próprio kernel. Você também pode carregar sua própria imagem ou usar vídeo ao vivo se o seu navegador suportar.

O kernel sharpen enfatiza as diferenças nos valores de pixels adjacentes. Isto faz a imagem parecer mais vívida.

O kernel blur (desfocagem) desfatiza as diferenças nos valores de pixels adjacentes.

O kernel emboss (semelhante ao kernel sobel e às vezes referido como significando o mesmo) dá a ilusão de profundidade enfatizando as diferenças de pixels em uma determinada direção. Neste caso, em uma direção ao longo de uma linha do topo esquerdo para o fundo direito.

O kernel de indentidade deixa a imagem inalterada. Que chato!

O kernel personalizado é o que quer que você faça.

Os kernels de sobel são usados para mostrar apenas as diferenças nos valores de pixels adjacentes em uma determinada direção.

Um kernel de contorno (também chamado de kernel “edge”) é usado para destacar grandes diferenças nos valores de pixels. Um pixel próximo a pixels vizinhos com a mesma intensidade aparecerá preto na nova imagem enquanto um próximo a pixels vizinhos que diferem fortemente aparecerá branco.

Para mais, dê uma olhada na excelente documentação do Gimp sobre o uso do kernel de Imagens. Você também pode aplicar seus próprios filtros personalizados no Photoshop indo a Filter -> Other -> Custom…

admin

Deixe uma resposta

O seu endereço de email não será publicado.

lg