Como aplicar um kernel de filtro


8

Um filtro que pode ser usado para sinais digitais como processamento de áudio, vídeo ou imagem pode ser definido usando uma matriz ("kernel") que pesa a área circundante (esta é uma descrição que li nas notas de aula de outra pessoa).

O kernel define um filtro de erosão .

(1 11 11 11 11 11 11 11 11 1)

Você poderia me dizer como esse kernel é aplicado, por exemplo, a uma imagem (e, portanto, a um campo 2D de pixels)? Agradeço antecipadamente!


O termo erode "filtro" é um pouco impróprio, pois é uma operação altamente não linear. O filtro, no sentido mais rigoroso, refere-se a uma operação linear invariável no tempo. Convolução com um núcleo é um filtro, que aplica o processo de erosão é não
Hilmar

11
IMO, a resposta é uma linha: convolução. Convolução de pesquisa e a equação matemática e implementação da convolução e isso é feito. (neste caso, você faria a convolução em 2d).
Trevor Boyd Smith

11
Eu acho que a verdadeira pergunta deve ser "como você filtra algo com um filtro FIR?" ou "como funciona a convolução?" ou "como você implementa a convolução?".
Trevor Boyd Smith

Este não é um kernel, mas um elemento estruturante. Por isso, é aplicado de maneira completamente diferente. Veja a resposta de @ kolentebert abaixo. Simplesmente, é uma forma sobreposta em uma imagem para extrair máximos / mínimos locais.
Sansuiso

Respostas:


2

Seu filtro de corrosão está incorreto. O link que você forneceu diz que deve encontrar o máximo de pixels adjacentes, e sua matriz não faz isso. Em vez disso, fornece a soma dos pixels adjacentes. Se você normalizar o resultado (uma vez que todas essas adições aumentarão o brilho), você descobrirá que seu filtro calcula a média uniforme dos pixels adjacentes.

O que você geralmente faria é pegar sua imagem e envolver blocos de 3x3 (ou por maior que seja o filtro) com seu filtro. Você também pode fazer isso em paralelo, para obter velocidade.


5

No processamento de imagens, para aplicar esse filtro, você iteraria sobre todos os pixels da imagem de entrada e, em cada etapa, colocaria a máscara de filtro sobre a imagem, para que seu centro esteja localizado no pixel atual. Você "avalia" os pixels na vizinhança que são cobertos pela máscara de alguma forma e grava o resultado novamente no pixel atual.

Para uma convolução normal, você multiplica cada elemento do filtro pelo valor do pixel correspondente, soma os resultados e escreve a soma no pixel atual.

A erosão é uma operação morfológica e você a implementaria (em uma imagem binária), verificando se todos os valores "1" da sua máscara estão sobre os pixels "1" na imagem. Nesse caso, você escreve um "1" no pixel atual (caso contrário, um "0").

Nos dois casos, leia sempre os pixels de entrada de uma versão umodificada da imagem (em vez de modificar a imagem no local).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.