Cómo aplicar un núcleo de filtro

8

Un filtro que se puede usar para señales digitales como el procesamiento de audio, video o imagen se puede definir usando una matriz ("núcleo") que pondera el área circundante (esta es una descripción que leí en las notas de otra persona).

El kernel define un filtro de erosión .

(111111111)

¿Podría decirme cómo se aplica este núcleo, por ejemplo, a una imagen (y, por lo tanto, a un campo de píxeles en 2D)? ¡Gracias de antemano!

muffel
fuente
El término erosionar "filtro" es un poco inapropiado aquí porque es una operación altamente no lineal. Filtro en el sentido más estricto se refiere a una operación lineal invariante en el tiempo. La convolución con un núcleo es un filtro, la aplicación del proceso de erosión no lo es
Hilmar
1
OMI, la respuesta es una línea: convolución. Investigue la convolución y la ecuación matemática y la implementación de la convolución y eso se hace. (En este caso, haría una convolución 2D).
Trevor Boyd Smith
1
Creo que la verdadera pregunta debería ser "¿cómo se filtra algo con un filtro FIR?" o "¿cómo funciona la convolución?" o "¿cómo implementas la convolución?".
Trevor Boyd Smith
Esto no es un núcleo, sino un elemento estructurante. Por lo tanto, se aplica de manera completamente diferente. Ver la respuesta de @ kolentebert a continuación. Simplemente hablando, es una forma que se superpone en una imagen para extraer máximos / mínimos locales.
sansuiso

Respuestas:

2

Su filtro de erosión es incorrecto. El enlace que proporcionó dice que se supone que debe encontrar el máximo de píxeles adyacentes, y su matriz no lo hace. En cambio, da la suma de los píxeles adyacentes. Si normaliza el resultado (ya que todas estas adiciones aumentarán el brillo), encontrará que su filtro simplemente promedia de manera uniforme los píxeles adyacentes.

Lo que generalmente haría es tomar su imagen y convolver bloques de 3x3 (o por grande que sea el filtro) con su filtro. También puede hacer esto en paralelo, para mayor velocidad.

Emre
fuente
5

En el procesamiento de imágenes, para aplicar dicho filtro, debe iterar sobre todos los píxeles de la imagen de entrada y, en cada paso, colocar la máscara de filtro sobre la imagen para que su centro se ubique en su píxel actual. Luego "evalúa" los píxeles del vecindario que están cubiertos por la máscara de alguna manera y escribe el resultado en el píxel actual.

Para una convolución normal, multiplique cada elemento del filtro con el valor del píxel correspondiente, sume los resultados y escriba la suma en el píxel actual.

La erosión es una operación morfológica, y la implementaría (en una imagen binaria) comprobando si todos los valores "1" de su máscara se encuentran sobre "1" píxeles en la imagen. Si es así, escribe un "1" en el píxel actual (de lo contrario, un "0").

En ambos casos, asegúrese de leer siempre los píxeles de entrada de una versión umodificada de la imagen (en lugar de modificar la imagen en el lugar).

koletenbert
fuente