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 .
¿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!
filters
image-processing
muffel
fuente
fuente
Respuestas:
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.
fuente
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).
fuente